Explication de termes d'une macro

Résolu
jenor Messages postés 51 Date d'inscription   Statut Membre Dernière intervention   -  
jenor Messages postés 51 Date d'inscription   Statut Membre Dernière intervention   -
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 :

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

ccm81 Messages postés 10909 Date d'inscription   Statut Membre Dernière intervention   2 433
 
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
0
ThauTheme Messages postés 1442 Date d'inscription   Statut Membre Dernière intervention   160
 
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

0
jenor Messages postés 51 Date d'inscription   Statut Membre Dernière intervention  
 
Merci à vous deux pour vos explications !!!
0