1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| Sub Somme()
Dim DerLig As Long, MonTotal As Long 'Variables pour définir la plage en colonne 1
Dim MaRech As Range 'Variable pour récupérer l'adresse de la cellule qui correspond à la recherche
Dim firstaddress As String 'Récupère la première adresse trouver pour éviter une boucle infiine
DerLig = Sheets("TaFeuille").Cells(Columns(1).Cells.Count, 1).End(xlUp).Row 'Détermine la dernière ligne remplie en colonne A
With Sheets("TaFeuille").Range(Cells(1, 1), Cells(DerLig, 1)) 'Détermine la plage dans laquelle chercher
Set MaRech = .Find("1", LookIn:=xlValues) 'Recherche le caractère 1, !! les "" sont important car on ne peut pas considérer comme nombre
If Not MaRech Is Nothing Then 'Si il trouve...
firstaddress = MaRech.Address 'Affecte la première adresse
Do
MonTotal = MonTotal + Sheets("TaFeuille").Cells(MaRech.Row, 2) 'Fait le total selon le nombre en colonne 2 de la ligne qui correspond à l'élément trouvé
Set MaRech = .FindNext(MaRech) 'Cherche le prochain caractère "1"
Loop While Not MaRech Is Nothing And MaRech.Address <> firstaddress 'Fait la boucle jusqu'à ce que l'adresse de la recherche soit égale à la première adresse => pas de boucle infinie
End If
End With
Sheets("TaFeuille").Cells(DerLig + 1, 2) = MonTotal
End Sub |
Partager