Sébastien Mathier www.excel-pratique.com Les sélections : Nous allons commencer

Sébastien Mathier www.excel-pratique.com Les sélections : Nous allons commencer par créer une macro qui sélectionnera une cellule de notre choix. Ouvrez l'éditeur et ajoutez-y un module : Dans le module, tapez "sub selection" et appuyez sur Enter. Vous remarquerez qu'Excel a automatiquement ajouté la fin de cette nouvelle procédure : Sub selection() End Sub Créez maintenant un bouton de formulaire auquel vous allez associer cette macro (vide pour le moment) : Complétez votre macro avec ceci : Sub selection() 'Sélection de la cellule A8 Range("A8").Select End Sub Vous pouvez tester cette macro en cliquant sur votre bouton de formulaire, la cellule A8 est alors sélectionnée. Nous allons maintenant modifier cette macro pour sélectionner la cellule A8 de la seconde feuille : Sub selection() 'Activation de la feuille 2 Sheets("Feuil2").Activate 'Sélection de la cellule A8 Range("A8").Select End Sub Excel active alors la feuille 2 avant de sélectionner la cellule A8. Remarque : aidez-vous des commentaires (texte en vert) pour bien comprendre les macros de ce cours. Sélection de cellules distinctes : Sub selection() 'Sélection des cellule A8 et C5 Range("A8, C5").Select End Sub Sélection d'une plage de cellules : Sub selection() 'Sélection des cellules A1 à A8 Range("A1:A8").Select End Sub Sélection d'une plage de cellules renommée : Sub selection() 'Sélection des cellules de la plage "ma_plage" Range("ma_plage").Select End Sub Sélection d'une cellule en fonction d'un numéro de ligne et de colonne : Sub selection() 'Sélection de la cellule de la ligne 8 et de la colonne 1 Cells(8, 1).Select End Sub Cette autre manière de sélectionner permet des sélections plus dynamiques et sera bien utile par la suite. En voici un petit exemple : Sub selection() 'Sélection aléatoire d'une cellule de la ligne 1 à 10 et de la colonne 1 Cells(Int(Rnd * 10) + 1, 1).Select 'Traduction : 'Cells([nombre_aléatoire_entre_1_et_10], 1).Select End Sub Ici, le numéro de ligne est : Int(Rnd * 10) + 1, autrement dit : un nombre entre 1 et 10 (inutile de retenir ce code pour le moment). Décaler une sélection : Sub selection() 'Sélection d'une cellule (calculée par rapport à la cellule active actuelle) ActiveCell.Offset(2, 1).Select End Sub Décalage de 2 lignes vers le bas et 1 colonne vers la droite à partir de la cellule active, puis sélection : Sélection de lignes : Il est possible de sélectionner des lignes entières avec Range ou Rows (Rows étant spécifique aux lignes). Sub selection() 'Sélection des lignes 2 à 6 Range("2:6").Select End Sub Sub selection() 'Sélection des lignes 2 à 6 Rows("2:6").Select End Sub Sélection de colonnes : Tout comme pour les lignes, il est possible de sélectionner des colonnes entières avec Range ou Columns (Columns étant spécifique aux colonnes). Sub selection() 'Sélection des colonnes B à G Range("B:G").Select End Sub Sub selection() 'Sélection des colonnes B à G Columns("B:G").Select End Sub Les propriétés : Nous allons maintenant agir sur le contenu et l'apparence des cellules et des feuilles. Commencez par ouvrir l'éditeur, ajoutez-y un module, copiez la macro ci-dessous et associez-la à un bouton formulaire : Sub proprietes() 'Macro incomplète Range ("A8") End Sub Nous voulons effectuer une action sur la cellule A8 avec ce début de macro. Pour afficher la liste des possibilités que l'on peut associer à l'objet Range, ajoutez un point après Range ("A8") : L'éditeur affiche alors les différentes possibilités ... Pour ce premier exemple, cliquez sur "Value" puis sur la touche Tab pour valider ce choix. Sub proprietes() 'Macro incomplète Range("A8").Value End Sub La propriété Value est ici le contenu de la cellule. Nous voulons maintenant donner la valeur 48 à A8 : Sub proprietes() 'A8 = 48 Range("A8").Value = 48 'Traduction : 'La valeur de la cellule A8 est égale à 48 End Sub Puis, la valeur Exemple de texte à A8 (important : le texte doit être mis entre " ") : Sub proprietes() 'A8 = Exemple de texte Range("A8").Value = "Exemple de texte" End Sub Dans ce cas, c'est bien la cellule A8 de la feuille où est lancée la procédure (ici, grâce au bouton formulaire) qui sera modifiée. Si vous créez un second bouton sur la feuille 2, ce sera alors la cellule A8 de la feuille 2 qui sera modifiée. Pour modifier la cellule A8 de la feuille 2 en cliquant sur le bouton de la feuille 1, il faut ajouter avant Range : Sheets("Nom_de_la_feuille") ou Sheets(Numéro_de_la_feuille). Sub proprietes() 'A8 de la feuille 2 = Exemple de texte Sheets("Feuil2").Range("A8").Value = "Exemple de texte" 'Ou : 'Sheets(2).Range("A8").Value = "Exemple de texte" End Sub De même, si l'on souhaite modifier la cellule A8 de la feuille 2 d'un autre classeur ouvert, il faut ajouter avant Sheets et Range : Workbooks("Nom_du_fichier"). Sub proprietes() 'A8 de la feuille 2 du classeur 2 = Exemple de texte Workbooks("Classeur2.xlsx").Sheets("Feuil2").Range("A8").Value = "Exemple de texte" End Sub Bien que Value ait été utilisé pour illustrer ces différents exemples, il n'est pas nécessaire de l'indiquer, car c'est automatiquement la valeur de la cellule qui est modifiée si rien n'est précisé. Ces 2 lignes offrent un résultat identique : Range("A8").Value = 48 Range("A8") = 48 Effacer le contenu de cellules : Sub proprietes() 'Effacer le contenu de la colonne A Range("A:A").ClearContents End Sub Mise en forme du texte : Après avoir ajouté Font., la liste des propriétés que l'on peut attribuer à la mise en forme du texte apparaît : Mise en forme : taille du texte : Sub proprietes() 'Modifier la taille du texte des cellules A1 à A8 Range("A1:A8").Font.Size = 18 End Sub Mise en forme : texte en gras : Sub proprietes() 'Mettre en gras les cellules A1 à A8 Range("A1:A8").Font.Bold = True End Sub Bold = True signifie Caractères en gras = Oui. Pour supprimer la mise en forme "caractères gras" à un texte, il faut donc remplacer "Oui" par "Non", autrement dit, "True" par "False" : Sub proprietes() 'Enlever la mise en forme "gras" des cellules A1 à A8 Range("A1:A8").Font.Bold = False End Sub Mise en forme : texte en italique : Sub proprietes() 'Mettre en italique les cellules A1 à A8 Range("A1:A8").Font.Italic = True End Sub Mise en forme : texte souligné : Sub proprietes() 'Souligner les cellules A1 à A8 Range("A1:A8").Font.Underline = True End Sub Mise en forme : police : Sub proprietes() 'Modifier la police de caractères des cellules A1 à A8 Range("A1:A8").Font.Name = "Arial" End Sub Ajouter des bordures : Sub proprietes() 'Ajouter une bordure aux cellules A1 à A8 Range("A1:A8").Borders.Value = 1 'Value = 0 => pas de bordure End Sub Modifier la mise en forme de la sélection actuelle : Sub proprietes() 'Ajouter une bordure aux cellules sélectionnées Selection.Borders.Value = 1 End Sub Modifier les propriétés d'une feuille : Sub proprietes() 'Masquer une feuille Sheets("Feuil3").Visible = 0 'Visible = -1 => annule l'effet End Sub N'oubliez pas que seule une toute petite minorité des possibilités de personnalisation sont indiquées ici. Si la propriété dont vous avez besoin n'est pas détaillée ici, n'ayez pas peur de la rechercher grâce à la liste de choix et l'aide Excel. L'enregistreur de macro peut également vous éviter de longues recherches. En enregistrant la manipulation dont vous avez besoin, vous pourrez retrouver plus facilement la propriété recherchée pour ensuite l'utiliser dans votre macro. Modifier la valeur d'une cellule en fonction d'une autre : Nous voulons ici que A7 prenne la valeur de A1 : Nous allons donc demander que A7 prenne la valeur de A1, ce qui nous donne : Sub proprietes() 'A7 = A1 Range("A7") = Range("A1") 'Ou : 'Range("A7").Value = Range("A1").Value End Sub Si nous voulons copier la taille du texte uniquement, le code serait : Sub proprietes() Range("A7").Font.Size = Range("A1").Font.Size End Sub Ce qui est à gauche du signe = prend la valeur de ce qui est à droite du signe =. Modifier la valeur d'une cellule en fonction de sa propre valeur : Nous allons créer ici un compteur de clics. A chaque clic, la valeur de A1 sera augmentée de 1 : Sub proprietes() 'Compteur de clics en A1 Range("A1") = Range("A1") + 1 End Sub Excel exécute le code ligne par ligne, ces commentaires devraient vous aider à mieux comprendre ce même code : 'Pour exemple : avant l'exécution du code, A1 vaut 0 Sub proprietes() 'Un clic a été fait sur le bouton, nous entrons dans la procédure 'Pour le moment A1 vaut encore 0 'PENDANT l'exécution de la ligne ci-dessous A1 vaut toujours 0 Range("A1") = Range("A1") + 1 'Le calcul est alors : Nouvelle_valeur_de_A1 = 0 + 1 'A1 vaut alors 1 seulement APRES l'exécution de la ligne de code End Sub With : Ce code permet de définir différentes propriétés à la cellule active : Sub proprietes() ActiveCell.Borders.Weight = 3 ActiveCell.Font.Bold = True ActiveCell.Font.Size = 18 ActiveCell.Font.Italic = True ActiveCell.Font.Name = "Arial" End Sub Nous pouvons utiliser With pour éviter les répétitions d'ActiveCell dans le cas présent. Voici comment With fonctionne : Sub proprietes() 'Début de l'instruction avec : WITH With ActiveCell .Borders.Weight = 3 .Font.Bold = True .Font.Size = 18 .Font.Italic = True .Font.Name = "Arial" 'Fin de l'instruction uploads/S4/ les-feuilles-et-cellules-pdf.pdf

  • 21
  • 0
  • 0
Afficher les détails des licences
Licence et utilisation
Gratuit pour un usage personnel Attribution requise
Partager
  • Détails
  • Publié le Dec 15, 2021
  • Catégorie Law / Droit
  • Langue French
  • Taille du fichier 1.1826MB