Syntaxe de copie

Benjy

XLDnaute Occasionnel
Bonjour j'ai un petit problème dont je n'arrive pas à me sortir.

Cette ligne de code fonctionne :
Code:
Workbooks(c).Sheets("Tableau").Range("C30:C" & j) = Workbooks(D).Sheets(E).Range("E4:E" & i).Value

Cette ligne ne fonctionne pas :
Code:
Workbooks(c).Sheets("Tableau").Range(Cells(30, col), Cells(j, col)) = Workbooks(D).Sheets(E).Range("E4:E" & i).Value

La variable col étant déclarer en integer.
Peut on m'expliquer pourquoi la seconde ligne ne fonctionne pas ?
 

david84

XLDnaute Barbatruc
Re : Syntaxe de copie

Bonjour,
si le nom de la feuille du classeur D est E , il faut le placer entre parenthèses :
Code:
Workbooks(c).Sheets("Tableau").Range(Cells(30, col), Cells(j, col)) = Workbooks(D).Sheets("E").Range("E4:E" & i).Value
Peut-être que là est ton problème.
A+
 

Benjy

XLDnaute Occasionnel
Re : Syntaxe de copie

Si je simplifie en enlevant la variable col :

Cette ligne fonctionne :
Code:
Workbooks(c).Sheets("Tableau").[B]Range("C30:C" & j)[/B] = Workbooks(D).Sheets(E).Range("E4:E" & i).Value

Cette ligne ne fonctionne pas :
Code:
Workbooks(c).Sheets("Tableau").[B]Range(Cells(30, 3), Cells(j, 3))[/B] = Workbooks(D).Sheets(E).Range("E4:E" & i).Value


La seul différence est la partie en gras. Je ne comprends pas pourquoi la seconde ligne ne fonctionne pas :confused:
Quand je dis qu'elle ne fonctionne pas, j'obtiens une erreur de type : execution 1004 : Erreur définie par l'application ou par l'objet.
 

Efgé

XLDnaute Barbatruc
Re : Syntaxe de copie

Bonjour Benjy, Bonjour david84 :), Un essai :
VB:
With Workbooks(c).Sheets("Tableau")
VB:
.Range(.Cells(30, 3), .Cells(j, 3)) = Workbooks(D).Sheets(E).Range("E4:E" & i).Value
VB:
End With
Cordialement
 

Efgé

XLDnaute Barbatruc
Re : Syntaxe de copie

Re, Si tu métais 10 secondes à faire tourner quelque chose qui ne fonctionnai pas et que tu mets 10 minutes à faire tourner quelque chose qui fonctionne je ne pense pas que la "viabilité" de la ligne soit en cause. Peut être que le reste du code est à regarder. Des copies en boucles peuvent être très longues surtout si les fichiers sont volumineux. Pour ma part, je pense avoir répondu à la question du fil. En te souhaitant bon courage pour la suite. Cordialement
 

Benjy

XLDnaute Occasionnel
Re : Syntaxe de copie

Non non. Je me suis mal exprimé mon fichier fonctionne en l'état. Et l’exécution est très rapide.
J'importe des données d'un fichier dans plusieurs colonne avec un code ce type :
Code:
Workbooks(c).Sheets("Tableau").[B]Range("C30:C" & j)[/B] = Workbooks(D).Sheets(E).Range("E4:E" & i).Value

Ce que je cherchais à réaliser c'est rajouter une sécurité qui permet de pallier à l'ajout de colonne entre mes colonnes de copie.
Car je colle des données dans les colonnes : C,D,E,F, ...AA, AE, AF etc.
Or si l'utilisateur rajoute une colonne en plein milieu les données suivantes seront toutes décalées.
Je cherchais donc à rajouter une boucle pour chaque copie qui cherche l’entête de la colonne cible puis colle les données à cet endroit.

J'ai ajouter ton code pour l'importation d'une colonne et sa fonctionne bien mais l’exécution prends alors beaucoup plus de temps. Je n'ose pas imaginer si j'ajoute le code à toutes mes colonnes.

Voilà le code sur 2 colonnes du fichier qui fonctionne :
Code:
'Nom local
Workbooks(c).Sheets("Tableau").Range("C30:C" & j) = Workbooks(D).Sheets(E).Range("E4:E" & i).Value
'Surface
Workbooks(c).Sheets("Tableau").Range("D30:D" & j) = Workbooks(D).Sheets(E).Range("F4:F" & i).Value

Voilà le code qui ne fonctionne pas chez moi :
Code:
For x = 3 To 100
If cells(26, x) = "Nom local" Then
col = x
End If
Next x
Workbooks(c).Sheets("Tableau").Range(Cells(30, col), Cells(j, col)) = Workbooks(D).Sheets(E).Range("E4:E" & i).Value


Mais ceci ne fonctionne pas.
 
Dernière édition:

Discussions similaires

Réponses
28
Affichages
1 K

Statistiques des forums

Discussions
312 231
Messages
2 086 442
Membres
103 210
dernier inscrit
Bay onais