legalize83
Messages postés7Date d'inscriptionjeudi 4 juin 2009StatutMembreDernière intervention10 juin 2009
-
4 juin 2009 à 12:32
legalize83
Messages postés7Date d'inscriptionjeudi 4 juin 2009StatutMembreDernière intervention10 juin 2009
-
6 juin 2009 à 21:51
Bonjour
.
Je souhaiterais pouvoir copier une plage de cellules qui peut être variable selon le nombre de cellules saisie vers une autre plage de cellule sur une autre feuille.
J'aimerais en plus pouvoir copier ces cellules plusieurs fois et les coller à chaque fois en dessous de la plage de cellules ou les données ont été coller lors de la première opération.
Pour cela, j'ai essayé ceci:
Sub enregistrement2 ()
Dim I As Range
Set I = ThisWorkbook.Worksheets("COMMANDE CLIENT").Range("D6:D26")
Dim j As Range
Set j = ThisWorkbook.Worksheets("données commandes").Range("F3:F1000")
If Not IsEmpty(I) Then
I.Select
Selection.Copy
Range(j).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
Else
Do
While Not IsEmpty(j)
j.Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
Wend
Loop
End sub
J'attends une réponse au plus vite merci d'avance.
cnt
Messages postés219Date d'inscriptionlundi 21 novembre 2005StatutMembreDernière intervention20 décembre 20101 6 juin 2009 à 19:43
salut
Si j'ai bien compris, voila une solution
Sub Enregistrement2()
Dim I As Range
Set I = ThisWorkbook.Worksheets("commande client").Range("D6:D26")
Dim J As Range
Set J = ThisWorkbook.Worksheets("données commandes").Range("F3:F1000")
' boucle sur chaque cellule de "I"
For Each cI In I
If cI.Value <> "" Then
' boucle sur chaque cellule de "J"
For Each cJ In J
If cJ.Value = "" Then
Sheets("commande client").Select
cI.Copy
Sheets(2).Select
Sheets("données commandes").Select
cJ.PasteSpecial
' sortie forcée boucle sur "J"
Exit For
End If
Next
End If
Next
Application.CutCopyMode = False
End Sub
legalize83
Messages postés7Date d'inscriptionjeudi 4 juin 2009StatutMembreDernière intervention10 juin 2009 4 juin 2009 à 14:29
Oui, c'est ce que j'ai essayé de faire et lorsque je lance le débogage,
ça s'arrête sur:
I.Select
il y a marqué erreur d'exécution '1004
La méthode Select de la classe range a échoué
legalize83
Messages postés7Date d'inscriptionjeudi 4 juin 2009StatutMembreDernière intervention10 juin 2009 6 juin 2009 à 17:14
Merci pour ton aide cnt, le code fonctionne et ne fait plus d'erreur:
Sub Enregistrement2()
If Range("vérif") <> 0 Then
rep = MsgBox("un ou plusieurs critères n' ont pas été respectés", vbOKOnly, "oups")
End
End If
Dim I As Range
Set I = ThisWorkbook.Worksheets("COMMANDE CLIENT").Range("D6:D26")
Dim j As Range
Set j = ThisWorkbook.Worksheets("données commandes").Range("F3:F1000")
Do
Loop While Not IsEmpty(I) And IsEmpty(j)
Sheets("commande client").Select
I.Copy
Sheets("données commandes").Select
j.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
End Sub
Malheureusement, il n'effectue pas exactement ce que je souhaite.
En fait, j'aurais voulu que les cellules copiées se collent à la suite dans les cellules vides de la plage j .
Je souhaiterais donc dire par exemple:
si I <>"" alors copié
si la cellule f3 est vide alors coller
sinon
si la cellule F4 est vide alors coller
sinon
etc...
Mais je n'arrive pas à faire cela sans recopier comme un bourin la condition pour chaque cellule.