Problème de condition dans une macro

Bonjour, je me tourne vers vous car j'ai un problème dans une macro que je n'arrive pas à résoudre.

En effet dans cette macro :

`Sub generationprenoms()
cpt = 5
cpt1 = 4

Sheets("Juillet 9 au 13").Select
Do While ("A" & cpt) <> ""
    If Range("E" & cpt) Or Range("F" & cpt) Or Range("G" & cpt) = 1 And Range("D" & cpt) = "S" Then
        Range("A" & cpt).Select
        Selection.Copy
        Sheets("signature").Select
        Range("A" & cpt1).Select
        ActiveSheet.Paste
        cpt = cpt + 1
        cpt1 = cpt1 + 1
        Sheets("Juillet 9 au 13").Select
    Else
    cpt = cpt + 1

    End If
Loop

End Sub

Deux choses ne sont pas prises en compte :

La macro continu à s’exécuter même si elle rencontre une cellule vide et cette partie de la fonction si n'est pas prise en compte :

And Range("D" & cpt) = "S".

Quelqu'un à t-il une solution? Merci

PS :je met le fichier en question en PJ, les noms/prénoms ont été changés vu qu'il s'agit d'enfants.

Merci

Laurent

Bonjour

A vérifier

Sub generationprenoms()

  cpt = 5
  cpt1 = 4

  With Sheets("Juillet 9 au 13")
    Do While .Range("A" & cpt) <> ""
      If (.Range("E" & cpt) = 1 Or .Range("F" & cpt) = 1 Or .Range("G" & cpt) = 1) And .Range("D" & cpt) = "S" Then
        .Range("A" & cpt).Copy Destination:=Sheets("signature").Range("A" & cpt1)
        cpt1 = cpt1 + 1
      End If
      cpt = cpt + 1
    Loop
  End With
End Sub

Merci de ton aide ça fonctionne bien. Une toute petite chose je voudrai que ça copie uniquement les valeurs et non la mise en forme, pour ce faire j'ai trouvé ceci :

Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _

:=False, Transpose:=False

Mais je ne sais pas où le mettre

Merci

Bonjour

Modifies la macro

Sub generationprenoms()

  cpt = 5
  cpt1 = 4

  Application.ScreenUpdating = False
  With Sheets("Juillet 9 au 13")
    Do While .Range("A" & cpt) <> ""
      If (.Range("E" & cpt) = 1 Or .Range("F" & cpt) = 1 Or .Range("G" & cpt) = 1) And .Range("D" & cpt) = "S" Then
        .Range("A" & cpt).Copy
        Sheets("signature").Range("A" & cpt1).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, _
                                                           SkipBlanks:=False, Transpose:=False
        cpt1 = cpt1 + 1
      End If
      cpt = cpt + 1
    Loop
  End With
  Application.CutCopyMode = False
End Sub

Merci de ton aide.

Petite question supplémentaire

sinon si en VBA ça s'écrit comment?

Bonjour

lolo64 a écrit :

sinon si en VBA ça s'écrit comment?

ElseIf ......... Then

Merci

Rechercher des sujets similaires à "probleme condition macro"