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" ...... Then

Bonjour

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 Sub

Merci beaucoup. Pour votre promptitude et le partage de vos compétences.

Bien à vous.

Rechercher des sujets similaires à "modification macro"