Re : Dupliquer ma formule VBA
Bonjour
Remplace le contenu de ton module 3 par ceci et affecte à un bouton la macro cherche.
Ici je reprend la macro1 en lui mettant une variable, argument d'entrée 'valeur' , qui va remplacer partout ou il y avait "BC"
Dans la macro cherche, j'initialise une table avec les valeur à chercher, et pour chaque valeur de la table j'appelle la macro1
Sub Macro1(valeur)
Dim ong As Worksheet 'déclare la variable ong (ONGlet)
Dim pl As Range 'déclare la variable pl (PLage)
Dim dest As Range 'déclare la variable dest (DESTination)
'vérification de l'existance de l'onglet "BC"
For Each ong In Sheets 'boucle sur tous les onglets du classeur
If ong.Name = valeur Then GoTo suite 'si le nom de l'onglet est "BC" va à l'étiquette "suite"
Next ong 'prochain onglet de la boucle
Sheets.Add after:=Sheets(Sheets.Count) 'ajoute un nouvel onglet à la fin
ActiveSheet.Name = valeur 'nomme l'onglet "BC"
Sheets("Feuil1").Rows(1).Copy Sheets(valeur).Range("A1") 'récupère les en-tête de la première ligne
Sheets("Feuil1").Rows(2).Copy Sheets(valeur).Range("A2") 'récupère les en-tête de la première ligne
suite: 'étiquette
For Each ong In Sheets 'boucle 1 : sur tous les onglets du classeur
If ong.Name <> valeur Then 'condition 1 : si le nom de l'onglet est différent de "BC"
Set pl = ong.Range("N4:N" & ong.Range("N65536").End(xlUp).Row) 'définit la plage pl
For Each cel In pl 'boucle 2 : sur toutes les cellule cel de la plage pl
If cel.Value = valeur Then 'condition 2 : si la valeur de la cellule est "BC"
Set dest = Sheets(valeur).Range("A65536").End(xlUp).Offset(1, 0) 'définit la cellule de destination
cel.EntireRow.Copy dest 'copie la ligne entière de la cellule cel dans la cellule de destination dest
End If 'fin de la condition 2
Next cel 'prochaine cellule cel de la boucle 2
End If 'fin de la condition 1
Next ong 'prochain onglet de la boucle 1
End Sub
Sub cherche()
tableau = Array("BC", "EVG", "RED")
For n = 0 To UBound(tableau)
Call Macro1(tableau(n))
Next
End Sub