Appliquer ligne procédure VBA au classeur entier

Fguenard

XLDnaute Nouveau
Bonjour à tous!

Je suis débutant en VBA bien qu'ayant un niveau d'Excel correct, que j'utilise essentiellement pour mon travail.
Aujourd'hui je suis face à une difficulté sur VBA, que je connais assez mal.

Je souhaite importer une valeur X contenue dans "classeur1" cellule A3 au sein de "classeur2" cellule A2.
J'ai déjà formulé ma procédure :

Workbooks("classeur2").Sheets("entrées 2013").Range("A2") = Workbooks("classeur1").Sheets("ENTREES 2013").Range("A3").Value

Quand je lance ma macro tout se passe bien et la valeur s'importe correctement.
Maintenant je voudrais duppliquer la procédure pour l'ensemble du classeur, un peu comme une incrémentation.

Afin que automatiquement lorsque l'utilisateur lance la macro alors que le classeur est vide, les valeurs contenues dans la colonne A "classeur1" s'exportent dans la colonne A "classeur2".

J'espère être assez clair, n'hésitez pas à me poser des questions si ce n'est pas le cas!

Merci à tous ceux qui voudront bien intervenir ;)
Cordialement
 

fanfan38

XLDnaute Barbatruc
Re : Appliquer ligne procédure VBA au classeur entier

Bonjour et bienvenue sur le site
Un fichier exemple est toujours le bienvenue...
je mettrai
derlig=Workbooks("classeur1").Sheets("ENTREES 2013").Range("A65536").end(xlup).rows
for i=3 to derlig
Workbooks("classeur2").Sheets("entrées 2013").cells(i-1,1) = workbooks("classeur1").Sheets("ENTREES2013").cells(i,1).Value
next

A+ François
 

Dranreb

XLDnaute Barbatruc
Re : Appliquer ligne procédure VBA au classeur entier

Bonjour.
Essayer:
VB:
Workbooks("classeur2").Worksheets("entrées  2013").[A:A].Value = Workbooks("classeur1").Sheets("ENTREES  2013").[A:A].Value
ou bien ça:
VB:
Dim PlgSource As Range
With Workbooks("classeur1").Worksheets("ENTREES 2013"): Set PlgSource = Intersect(.[A:A], .UsedRange): End With
Workbooks("classeur2").Worksheets("entrées 2013").[A1].Resize(PlgSource.Rows.Count).Value = PlgSource.Value
À +
 
Dernière édition:

Fguenard

XLDnaute Nouveau
Re : Appliquer ligne procédure VBA au classeur entier

Bonjour à tous les deux!

Pour la première solution : j'ai recopié mot à mot il en ressort "incompatibilité de type, erreur 13". Le débogage me souligne la partie "if i = 3 to derlig".

Pour la deuxième solution : idem mais avec "erreur 9 : l'indice n'appartient pas à la sélection". Ou "erreur d'exécution 91 : "variable objet non défini".
 

Fguenard

XLDnaute Nouveau
Re : Appliquer ligne procédure VBA au classeur entier

Dranreb : cela fonctionne désormais, merci beaucoup!

Du coup une autre question me vient : votre formule correspond à une macro.
Si j'essaye de la recopier dans la procédure en suivant, en changeant les valeurs des colonnes concernées, Excel m'indique qu'il retrouve plusieurs fois "DimPlgSource".

Si j'entre à nouveau Sub + End Sub et la formule au milieu, cela fonctionne mais une autre macro est créée.

Je voudrais dans la mesure du possible n'avoir qu'une seule macro : il n'est pas possible de mettre à la suite la même formule en changeant les colonnes?
 

Dranreb

XLDnaute Barbatruc
Re : Appliquer ligne procédure VBA au classeur entier

Je ne comprends pas très bien.
Vous pouvez réutiliser PlgSouce pour une copie d'une autre colonne sans avoir à le redéclarer.
Si c'est une série de colonnes contiguës, naturellement, copiez toute la plage rectangulaire en une fois !
Pour copier tout c'est encore plus simple:
VB:
Dim PlgSource As Range
Set PlgSource = Workbooks("classeur1").Worksheets("ENTREES 2013").UsedRange
Workbooks("classeur2").Worksheets("entrées 2013").[A1].Resize(PlgSource.Rows.Count, PlgSource.Columns.Count).Value = PlgSource.Value
À +
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
313 344
Messages
2 097 335
Membres
106 916
dernier inscrit
Soltani mohamed