Explication de termes d'une macro
Résolu
jenor
Messages postés
51
Statut
Membre
-
jenor Messages postés 51 Statut Membre -
jenor Messages postés 51 Statut Membre -
Bonjour,
J'aurai à nouveau besoin de vous pour m'expliquer les termes d'une macro qui m'a été donné. Pouvez-vous insérer un commentaire à chaque ligne ... (s'arrêter juste avant Case 2 biensûr)? Je débute avec VBA, et je ne comprends pas grand chose (même avec l'aide Excel).
Voici la macro :
Je vous remercie par avance pour votre réponse.
J'aurai à nouveau besoin de vous pour m'expliquer les termes d'une macro qui m'a été donné. Pouvez-vous insérer un commentaire à chaque ligne ... (s'arrêter juste avant Case 2 biensûr)? Je débute avec VBA, et je ne comprends pas grand chose (même avec l'aide Excel).
Voici la macro :
Private Sub PutFormulas(cas As Integer)
Dim nbLi As Long
nbLi = Feuil1.[A1].CurrentRegion.Rows.Count
With Feuil1.Range("C" & nbLi + 1)
.EntireRow.Insert
Select Case cas
Case 1
.Offset(-1, 0).Formula = .Offset(-2, 0).Formula
.Offset(-1, 1).Formula = .Offset(-2, 1).Formula
Case 2
.Offset(-1, 0).Formula = .Offset(-2, 0).Formula
.Offset(-1, 1).Formula = 0
Case 3
.Offset(-1, 0).ClearContents
.Offset(-1, 1).Formula = .Offset(-2, 1).Formula
End Select
End With
End Sub
Je vous remercie par avance pour votre réponse.
3 réponses
-
Bonjour
Private Sub PutFormulas(cas As Integer) Dim nbLi As Long ' nombre (.Count) de lignes (.Rows) de la plage occupée à partir de A1 dans la feuille 1 ' la plage occupée part de A1 ' jusqu'à la dernière ligne contenant une valeur ' jusqu'à la dernère colonne contenant une valeur nbLi = Feuil1.[A1].CurrentRegion.Rows.Count ' pour la cellule "C" & nbLi+1 de la feuille 1 ' pour exemple : si Nbli = 10, la suite se refèrera à C11 With Feuil1.Range("C" & nbLi + 1) ' insertion d'une ligne à la ligne 11 .EntireRow.Insert ' selon la valeur de cas Select Case cas ' si cas = 1 Case 1 ' Formule en C10 = formule en C9 .Offset(-1, 0).Formula = .Offset(-2, 0).Formula ' Formule en D10 = formule en D9 .Offset(-1, 1).Formula = .Offset(-2, 1).Formula Case 2 .Offset(-1, 0).Formula = .Offset(-2, 0).Formula .Offset(-1, 1).Formula = 0 Case 3 ' suppression du contenu de C10 .Offset(-1, 0).ClearContents .Offset(-1, 1).Formula = .Offset(-2, 1).Formula End Select End With End Sub
Cdlmnt -
Bonjour Jenor, bonjour le forum,
Private Sub PutFormulas(cas As Integer) Dim nbLi As Long 'déclare la variable nbLi (nombre de lignes) de type Long (compris entre -2 147 483 648 et 2 147 483 647) nbLi = Feuil1.[A1].CurrentRegion.Rows.Count 'définit la variable nbLi (le nombre de lignes) 'CurrentRegion correspond à toutes les cellules autour de A1 sans qu'une ligne ou une colonne vide ne les sépare 'de cet ensemble de cellules on en compte le nombre de lignes (ça correspond à [Ctrl]+[*] dans une cellule)... 'Offset est le décalage (x, y) par rapport à une cellule. x correspond aux lignes (positif on descend, négatif on monte), 'y correspond au colonnes (positif vers la droite, négatif vers la gauche) With Feuil1.Range("C" & nbLi + 1) 'prend en compte la cellule ligne nbLi + 1, colonne C de l'onglet Feuil1 ( c'est la base pour le décalage) .EntireRow.Insert 'insère une ligne Select Case cas 'agit en fonction de la variable cas définie comme entier dans la procédure Case 1 'si cas vaut 1 'renvoie la formule de la cellule deux lignes au-dessus de la base, dans la cellule une ligne au-dessus de la base .Offset(-1, 0).Formula = .Offset(-2, 0).Formula 'renvoie la formule de la cellule deux lignes au-dessus une colonne à à droite de la base, dans la cellule une ligne au-dessus une colonne à droite de la base .Offset(-1, 1).Formula = .Offset(-2, 1).Formula Case 2 'si cas vaut 2 'renvoie la formule de la cellule deux lignes au-dessus de la base, dans la cellule une ligne au-dessus de la base .Offset(-1, 0).Formula = .Offset(-2, 0).Formula 'renvoie zéro dans le cellule une ligne au-dessus une colonne à droite de la base .Offset(-1, 1).Formula = 0 Case 3 'si cas vaut 3 'efface la cellule une ligne au-dessus de la base .Offset(-1, 0).ClearContents 'renvoie la formule de la cellule deux lignes au-dessus une colonne à à droite de la base, dans la cellule une ligne au-dessus une colonne à droite de la base .Offset(-1, 1).Formula = .Offset(-2, 1).Formula End Select 'fin de l'action en fonction de la variable cas End With 'fin de la prise en compte de la cellule ligne nbLi + 1, colonne C de l'onglet Feuil1 (base) End Sub
-