Macro copier/coller avec condition

Bonjour,

Grace à ce forum j ai cette macro qui fonctionne très bien pour les pages de "2 Electrique" jusqu'à "17 Automaintenance" sur la page "recap Normative" :

Option Explicit

Dim f, sh, ln, lgn

Sub NONCONFORMEnorm()

    Set f = Sheets("Recap Normative")
    f.Range("A14").CurrentRegion.Offset(1, 0).Clear
    For Each sh In Worksheets
        If sh.Range("G14") = "Conforme /" & Chr(10) & "Non Conforme" Then
            For ln = 16 To sh.Range("D" & Rows.Count).End(xlUp).Row
                If sh.Range("G" & ln) = "NON CONFORME" Then
                    lgn = Application.Max(6, f.Range("D" & Rows.Count).End(xlUp)(2).Row)
                    sh.Range("B" & ln & ":I" & ln).Copy f.Range("A" & lgn)
                End If
            Next ln
        End If
    Next sh
    MsgBox "Travail terminé !"
End Sub

Donc en partant de là j'ai voulu l'adapter pour qu'elle fonctionne pour les pages de "Checklist DR1" jusqu'à "Checklist DR7" sur la page "Recap Gestionnelle" mais je ne comprend pas pourquoi elle ne fonctionne pas.

Option Explicit

Dim f, sh, ln, lgn

Sub NONCONFORMEgest()

    Set f = Sheets("Recap Gestionnelle")
    f.Range("A14").CurrentRegion.Offset(1, 0).Clear
    For Each sh In Worksheets
        If sh.Range("I14") = "Conforme /" & Chr(10) & "Non Conforme" Then
            For ln = 14 To sh.Range("G" & Rows.Count).End(xlUp).Row
                If sh.Range("I" & ln) = "NON CONFORME" Then
                    lgn = Application.Max(6, f.Range("D" & Rows.Count).End(xlUp)(2).Row)
                    sh.Range("B" & ln & ":I" & ln).Copy f.Range("A" & lgn)
                End If
            Next ln
        End If
    Next sh
    MsgBox "Travail terminé !"
End Sub

Voici le fichier

Merci d'avance.

Bonjour,

La valeur de la cellule I14 ne correspond pas à celle du test effectué par ta procédure.

Tu dois écrire :

        If sh.Range("I14") = "CONFORME / NON CONFORME" Then

A+

Merci, j'ai un autre soucis, je viens de m 'apercevoir que la macro ne check pas toutes les lignes de chaque pages, ou ne les copie pas. Qu'est ce que je doit faire ?

Pour déterminer le numéro de la ligne d'ajout dans la feuille "Recap Gestionnelle", tu utilises la colonne D.

Or, cette ligne n'est pas toujours renseignée, ce qui fausse cette détermination.

Tu peux essayer avec

lgn = Application.Max(13, f.Range("H" & Rows.Count).End(xlUp)(2).Row)

A+

Merci pour tout

Rechercher des sujets similaires à "macro copier coller condition"