Modification de MACRO
Bonjour,
La macro ci-joint permet d'aller vérifier dans les feuilles qui ne sont pas nommées "Alarmes" si la valeur 2 est présente sur chaque ligne de la colonne C. Si elle est présente alors la ligne est copiée dans la feuille 'Alarmes'.
D'autres feuilles ont été ajoutées depuis: ("Suivi", "Dashboard1", "Dashboard2"). Je souhaiterais donc que la macro effectue la même opération mais pour toutes les feuilles qui ne sont pas nommées "Alarmes" et "Suivi", "Dashboard1", "Dashboard2".
Merci de votre aide si précieuse.
Bien à vous.
Sub importer2()
Application.ScreenUpdating = False
dlo = 27
Set wso = Sheets("Alarmes") ' wso référence feuille Défauts
For Each wsi In Worksheets
If wsi.Name <> wso.Name Then
dli = 250 ' dli dernière ligne contenant des données sur la feuille wsi
If dlo = 27 Then wsi.Rows(dlo).Copy wso.Rows(dlo) ' on copie les entêtes de wsi vers wso sur la même ligne *
For i = 27 To dli ' on parcourt toutes les lignes de wsi en commençant à la ligne 27 *
If wsi.Cells(i, 3) = 2 Then ' si le contenu de la colonne C est 2 *
dlo = dlo + 1 'on incrémente le compteur de lignes dlo
wsi.Rows(i).Copy wso.Rows(dlo) 'on copie la ligne de wsi sur wso
End If
Next i ' ligne suivante
End If
Next
Set wso = Nothing
Set wsi = Nothing
Application.ScreenUpdating = True
End Sub
If wsi.Name <> wso.Name and wsi.name <> "Alarmes" and wsi.name<>"Suivi" ...... ThenBonjour
Bonjour EngueEngue
Une autre solution
Si tu es sur que les noms des feuilles ne varieront pas (casse) tu peux t'affranchir des Ucase(....)
Sub importer2()
Application.ScreenUpdating = False
dlo = 27
Set wso = Sheets("Alarmes") ' wso référence feuille Défauts
For Each wsi In Worksheets
Select Case UCase(wsi.Name)
Case UCase("Alarmes"), UCase("Suivi"), UCase("Dashboard1"), UCase("Dashboard2")
Case Else
dli = 250 ' dli dernière ligne contenant des données sur la feuille wsi
If dlo = 27 Then wsi.Rows(dlo).Copy wso.Rows(dlo) ' on copie les entêtes de wsi vers wso sur la même ligne *
For i = 27 To dli ' on parcourt toutes les lignes de wsi en commençant à la ligne 27 *
If wsi.Cells(i, 3) = 2 Then ' si le contenu de la colonne C est 2 *
dlo = dlo + 1 'on incrémente le compteur de lignes dlo
wsi.Rows(i).Copy wso.Rows(dlo) 'on copie la ligne de wsi sur wso
End If
Next i ' ligne suivante
End Select
Next
Set wso = Nothing
Set wsi = Nothing
Application.ScreenUpdating = True
End SubMerci beaucoup. Pour votre promptitude et le partage de vos compétences.
Bien à vous.