Executer une macro sur une suite de lignes

Résolu
abdou65 - 9 août 2024 à 15:57
ABDOUWYDADI65 Messages postés 12 Date d'inscription vendredi 9 août 2024 Statut Membre Dernière intervention 19 août 2024 - 12 août 2024 à 18:45

Bonjour,

j'ai une macro qui marche mais le hic c'est qu'il faut la répeter autant de fois qu'il y a de factures j'aimerais un moyen de le faire en une seule fois

voici la macro:

Sub mode()

Dim j As Integer
j = 0
For i = 2 To 2000
If Cells(ActiveCell.Row, 2).Value = Worksheets("BASE reglt").Cells(i, 1) Then
j = j + 1
Cells(ActiveCell.Row, 9 + (j - 1) * 5) = Worksheets("BASE reglt").Cells(i, 6).Value
End If
Next i
End Sub
 


merci pour tout

A voir également:

3 réponses

yg_be Messages postés 23196 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 19 septembre 2024 Ambassadeur 1 534
9 août 2024 à 16:21

bonjour,

Il faudra que tu donnes plus d'explications.

0
ABDOUWYDADI65 Messages postés 12 Date d'inscription vendredi 9 août 2024 Statut Membre Dernière intervention 19 août 2024
12 août 2024 à 11:47

bjr

avant tout je voudrais te remercier pour ton intéret.

dans une feuille excel je colles les numéro de factures d'un mois donné ensuite à l'aide de la macro que j'ai décrit en haut je récupère les mode de paiements de la dite facture sur la meme ligne. jusqu'à la tout est bon mais aprés il faut exécuter la macro pour chaque ligne qui suit donc imagine s'il y a 500 ou plus de factures le travail qu'il faut. dons l'idée serait d'executer la macro en une seule fois pour toutes les factures du mois. 

0
yg_be Messages postés 23196 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 19 septembre 2024 1 534
12 août 2024 à 12:38

Ceci va travailler sur chaque ligne, jusqu'à rencontrer une cellule vide:

Sub mode()

Dim j As Integer, i As Integer, cl As Range
Set cl = ActiveCell
Do While cl <> ""
    j = 0
    For i = 2 To 2000
        If Cells(cl.Row, 2).Value = Worksheets("BASE reglt").Cells(i, 1) Then
            j = j + 1
            Cells(cl.Row, 9 + (j - 1) * 5) = Worksheets("BASE reglt").Cells(i, 6).Value
        End If
    Next i
    Set cl = cl.Offset(1)
Loop
End Sub
0
ABDOUWYDADI65 Messages postés 12 Date d'inscription vendredi 9 août 2024 Statut Membre Dernière intervention 19 août 2024
12 août 2024 à 18:45

merci bcp

c'est juste parfait.

à charge de revanche

0