Transfert d'une colonne d'un document à un autre

Bonjour, bonjour,

Voilà j'ai un soucis avec un code VBA. J'essaie de coller une colonne d'un document dans un autre document avec une condition If et une boucle For.

C'est assez difficile d'exprimer avec des mots le résultat que j'aimerais obtenir, mais en gros ça donne ça :

Pour i = 2 à 19

Si la cellule "Ei" de ma feuil1 est pleine alors

Coller cette même cellule dans ma feuil2 en "i1" (soit B1 pour la 1ère valeur de i)

Activer le document source

Copier la colonne "G5:G60" de la feuil1 du document source

Activer le document de réception

Coller la colonne "G5:G60" du document source dans la cellule "i2" de mon document de réception (soit B2 pour la 1ère valeur de i)

En fait je crée des "titres" de colonnes avec les 2 premières lignes de code (après le For)

Puis je veux récupérer des données dans un autre document que je collerais sous ces titres.

Tout ça en me décalant d'une colonne vers la droite à chaque tour de boucle.

Bref le code que j'ai écrit ressemble à ça :

For i = 2 To 19
If Not IsEmpty(Range("E" & i)) Then
Range("E" & i).Copy Destination:=Sheets("niveau 3").Cells("1", " " & i)
Windows(DOC2).Activate
Sheets("synthèse").Range("g5:g60").Copy
Windows(DOC).Activate
Sheets("niveau 3").Range(Cells(2, i)).Select
Selection.PasteSpecial = xlPasteValues
End If
Next i

Et évidemment celui-ci ne fonctionne pas. Il bloque après l'activation du document de réception, lors de la sélection. (surligner ici)

Sélection que j'ai essayé de contourner en trifouillant ces 2 dernières lignes dans tout les sens

Si quelqu'un peut me porter main forte je lui en serait très reconnaissant, j'ai jamais perdu autant de temps sur un petit bout de code comme ça !

HELP !

Vbrod

Bonsoir,

essaie ceci

For i = 2 To 19
If Not IsEmpty(Range("E" & i)) Then
Range("E" & i).Copy Destination:=Sheets("niveau 3").Cells(1,i)
Windows(DOC2).Activate
Sheets("synthèse").Range("g5:g60").Copy
Windows(DOC).Activate
Sheets("niveau 3").Range(Cells(2, i)).PasteSpecial paste:=xlPasteValues
End If
Next i

Salut h2so4,

Merci pour ta réponse, malheuresement j'ai déjà essayé ce code, j'ai toujours une erreur sur la ligne

"Erreur définit par l'application ou par l'objet"

Je ne comprends vraiment pas ..

Bon, j'ai finalement réussi à résoudre mon problème en fractionnant ma boucle For et en modifiant mon PasteSpecial.

Si jamais ça intéresse quelqu'un, voilà le code que j'ai écris :

For i = 2 To 19
If Not IsEmpty(Range("E" & i)) Then
Range("E" & i).Copy Destination:=Sheets("niveau 3").Cells("1", " " & i)
End If
Next i

Windows(DOC2).Activate
Sheets("synthèse").Range("g5:g60").Copy
Windows(DOC).Activate
Sheets("niveau 3").Activate

For i = 2 To 19
If Not IsEmpty(Cells(1, i)) And IsEmpty(Cells(2, i)) Then
Cells(2, i).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
End If
Next i

Bonjour,

une autre correction

For i = 2 To 19
If Not IsEmpty(Range("E" & i)) Then
Range("E" & i).Copy Destination:=Sheets("niveau 3").Cells(1,i)
Windows(DOC2).Activate
Sheets("synthèse").Range("g5:g60").Copy
Windows(DOC).Activate
Sheets("niveau 3").Cells(2, i).PasteSpecial paste:=xlPasteValues
End If
Next i
Rechercher des sujets similaires à "transfert colonne document"