Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Si condition

T

Temjeh

Guest
Bonsoir a tous

J'ai simplifié un peu ma question antérieur(sans réponse précise):

J'ai fait ceci mais il me copie a la suite toujours A2:E2 je voudrait si possible que Si If Range("F3") = "N" Then Range("A3:E3").Select.....

Sub Notes_Spéciales()

If Range("F2") = "N" Then
Range("A2:E2").Select
Selection.Copy
Else

If Range("A18") = "" Then
Range("A18").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
Else

If Range("A19") = "" Then
Range("A19").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
Else

If Range("A20") = "" Then
Range("A20").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
Else

If Range("A21") = "" Then
Range("A21").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False


If Range("F3") = "N" Then
Range("A3:E3").Select
Selection.Copy
If Range("A18") = "" Then
Range("A18").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
Else

If Range("A19") = "" Then
Range("A19").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
Else

If Range("A20") = "" Then
Range("A20").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
Else

If Range("A21") = "" Then
Range("A21").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False

End If
End If
End If
End If
End If
End If
End If
End If
End If
End If
End Sub


Merci de votre aide
 
R

Robert

Guest
Salut Temjeh, salut le forum,

J'ai l'impression que tu as mal exposé tes conditions. Je me trompe peut-être mais il me semble que les Else sont mal employés.

Ton code commence par la condition F2="N", et si cette condition est remplie il copie la plage A2:E2. Ensuite tu places un premier Else qui n'agira que si F2 est différant de "N" et dans ce cas rien n'est copié... et tu demandes alors un collage spécial. Oui mais de quoi puisque tu n'as rien copié ?

Comme tu as imbriqué des If et des Else dans ton exemple si F2 = "N" il ne se passera rien, à part la copie de la plage A2:E2. Et si F2 est différent de "N" il y aura un bug car rien n'a été copié.

Je me demande si ce n'est pas plutôt ça qu'il te faudrait :

Sub Notes_Spéciales()

'si la condition 1 est vérifiée, collage spécial dans les cellules non vides
'de la plage A18:A21
If Range("F2") = "N" Then 'condition 1
Range("A2:E2").Select
Selection.Copy
If Range("A18") = "" Then
Range("A18").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
End If
If Range("A19") = "" Then
Range("A19").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
End If
If Range("A20") = "" Then
Range("A20").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
End If
If Range("A21") = "" Then
Range("A21").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
End If
Application.CutCopyMode = False
End If

'si la condition 2 est vérifiée, collage spécial dans les cellules non vides
'de la plage A18:A21
If Range("F3") = "N" Then 'condition 2
Range("A3:E3").Select
Selection.Copy
If Range("A18") = "" Then
Range("A18").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
End If
If Range("A19") = "" Then
Range("A19").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
End If
If Range("A20") = "" Then
Range("A20").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
End If
If Range("A21") = "" Then
Range("A21").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
End If
Application.CutCopyMode = False
End If

End Sub

À plus,

Robert
 
T

Temjeh

Guest
Merci Robert c'est pour cela que j'ai écrit car j'était fourvoyer avec tant de if et de else mais avec votre aide j'y suis presque

Avec ton code il me copie si F2=N .....A2:E2 et le colle en A18 mais aussi en A19 et en A20 et A21

Ce que je veut et ptetre je suis pas dedans avec mon code c'est:

Si F2=N il copie 1 fois et copie la ligne A2:E2 en A18

et Si F3=N il copie 1 fois et copie la ligne A3:E3 en A19 soit a la suivante qui est vide

Si N n'est plus en F2 il placera a l'activation ...Si F3=N il copie en A18 soit a la première qui est vide car ma première est A18 pour le copier coller


Merci A++
 
R

Robert

Guest
Re Temjeh, bonsoir le forum,

Je crois que ce nouveau code devrait te convenir : il copie les valeurs de A2:E2 en A18 si F2="N" et si A18 est vide... puis il copie les valeurs de A3:E3 dans la première cellule vide de A18:A21 si F3="N".
Donc, Si F2="N" et F3="N" (je ne sais pas si cette configuration est possible dans ton cas). Il va copier les valeurs de A2:E2 en A18 puis celles de A3:E3 dans la premiere cellule non vide de la plage A19:A21. Et si F2 et F3 sont tous les deux différents de "N", rien ne se fait...

Sub Notes_Spéciales()

'si la condition 1 est vérifiée, collage spécial dans les cellules non vides
'de la plage A18
If Range("F2") = "N" Then 'condition 1
Range("A2:E2").Select
Selection.Copy
If Range("A18") = "" Then
Range("A18").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
End If
Application.CutCopyMode = False
End If

'si la condition 2 est vérifiée, collage spécial dans les cellules non vides
'de la plage A18:A21
If Range("F3") = "N" Then 'condition 2
Range("A3:E3").Select
Selection.Copy
If Range("A18") = "" Then
Range("A18").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
GoTo fin
End If
If Range("A19") = "" Then
Range("A19").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
GoTo fin
End If
If Range("A20") = "" Then
Range("A20").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
GoTo fin
End If
If Range("A21") = "" Then
Range("A21").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
End If
fin:
Application.CutCopyMode = False
End If
End Sub


À plus,

Robert

p.s. question indiscrète : c'est quoi Temjeh, un prénom ? Un surnom ? Masculin ou féminin ? En tous cas c'est très joli...
 

Discussions similaires

Réponses
2
Affichages
270
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…