Bonjour à tous,
Je veux coller une plage de cellules (Plage) d'une feuille (Feuil1) vers une autre (Feuil2) selon un critère (Nom). Et que cette plage soit collée en bas si le critère est vérifié et à droite si celui-ci ne l'est pas.
Voici les étapes que je suis:
. 1- Sur la feuil1, je définis la plage à copier (set Plage=...). Tout va bien
. 2- Sur la feuil2, je cherche le critère. (Set JS= ... Find …). Tout va bien.
. 3- Si critère non-trouvé, copier/coller à gauche (If JS Is Nothing Then…). Tout va bien (ou presque...)
. 4- Si critère vérifié, copier/coller en dessous (If Not JS Is Nothing Then...) Tout va bien (ou presque...)
Ou presque... car quand les arguments 3 et 4 sont ensembles, un message erreur apparait (erreur "1004"). La partie surlignée est If JS Is nothing. Alors que la macro fonctionne normalement si l'un ou l'autre des deux arguments est absent...
M'enfin?!?... Pourquoi???
Merci pour votre attention.
Cordialement
Marc
Je veux coller une plage de cellules (Plage) d'une feuille (Feuil1) vers une autre (Feuil2) selon un critère (Nom). Et que cette plage soit collée en bas si le critère est vérifié et à droite si celui-ci ne l'est pas.
Voici les étapes que je suis:
. 1- Sur la feuil1, je définis la plage à copier (set Plage=...). Tout va bien
. 2- Sur la feuil2, je cherche le critère. (Set JS= ... Find …). Tout va bien.
. 3- Si critère non-trouvé, copier/coller à gauche (If JS Is Nothing Then…). Tout va bien (ou presque...)
. 4- Si critère vérifié, copier/coller en dessous (If Not JS Is Nothing Then...) Tout va bien (ou presque...)
Ou presque... car quand les arguments 3 et 4 sont ensembles, un message erreur apparait (erreur "1004"). La partie surlignée est If JS Is nothing. Alors que la macro fonctionne normalement si l'un ou l'autre des deux arguments est absent...
M'enfin?!?... Pourquoi???
VB:
Dim H as Range, M as Range
'(H est la première ligne de la plage, M la dernière cellule de la plage)
Dim N as Range ' (N est la cellule qui contient le critère sur Feuil1)
Dim Plage as Range, JS as Range
'''''''''''''''' Défini le critère qui sera recherché'''
Set N=Worksheets("Feuil1").Range("H2") '
'''''''''''''''''''''''''''''''''Défini la plage'''''''''''''''''''''''''
Set Plage=Worksheets("Feuil1").Range(H, M)
''''''''''''''''''''''''''''''Cherche le critère'''''''''''''''''''''''''
Set JS = Worksheets("Feuil2").Range("6:6").Find(N, _
LookIn:=xlValues, LookAt:=xlWhole, MatchCase:=False)
'With Application. etc...
'''''''''''''''''''''''''Si critère non-vérifié, copier/coller (valeurs+formats) à droite'''''''''''
If JS Is Nothing Then Plage.Copy
With Worksheets("Feuil2").Cells(5, Columns.Count).End(xlToLeft).Offset(0, 2)
.PasteSpecial Paste:=xlPasteAllUsingSourceTheme
.PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False
End With
''''''''''''''''''''''''''Si critère vérifié, copier/coller (valeurs+formats) en bas'''''''''''''''''''
If Not JS Is Nothing Then Plage.Copy
With Worksheets("Feuil2").Cells(Rows.Count, JS.Column).End(xlUp).Offset(3, 0)
.PasteSpecial Paste:=xlPasteAllUsingSourceTheme
.PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False
' With Application etc...
End With
Merci pour votre attention.
Cordialement
Marc