Macro et Autofill

Kayalka

XLDnaute Nouveau
Bonjour à tous,

Je me décide à finalement poster un appel au secours sur le forum, ma patience étant à bout.

Alors voilà, j'essaie de construire un fichier consolidant les données de plusieurs fichiers ayant tous la même structure de données. Le but étant de constituer à termes une base de données qui alimentera un tableau croisé dynamique.

Moyennant bricolage, ma macro de copie des données fonctionne et recueille les données de mes fichiers. Seulement voilà, une partie des données qui sont copiées sont collées via la méthode "Transposer", le résultat est que ces données présentes en colonne D sur les fichiers DATA (plage D2:D5) se retrouvent sur une ligne et "étalées" sur les colonnes A,B,C et D du fichier "Fichier de travail v9".

Mon problème vient du fait que seul une ligne de données sur les colonnes A à D est complétée hors ce n'est pas la disposition en base dont j'ai besoin. J'ai donc logiquement essayé d'automatiser un "Autofill" sur ces quatre colonnes et ce de façon redondante dans ma macro mais je n'y parviens pas.
J'ai essayé des solutions définissant la dernière ligne contenant les données subissant l'autofill comme variable, également essayé des solutions comptant le nombre de lignes dans une feuille mais mes tentatives sont infructueuses pour le moment. La dernière tentative en date est la macro Test contenue dans le fichier qui diverge un peu des technique citées précédemment.

Donc voilà, si une bonne âme a une piste / idée / inspiration je suis preneur et j'érigerai un temple à sa gloire, mon problème étant vraiment que je ne parviens pas à adapter els solutions trouvées sur le net (que j'ai gardé en mémoire dans le VBA du fichier de conso d'ailleurs).

Enfin, des fichiers valent mieux qu'un long discours ...

Bonne journée à vous,

Cordialement,
Kayalka
 

Pièces jointes

  • CONSO.zip
    82 KB · Affichages: 39
  • CONSO.zip
    82 KB · Affichages: 35
  • CONSO.zip
    82 KB · Affichages: 36

Zon

XLDnaute Impliqué
Re : Macro et Autofill

Salut,


d'après ce que j'a compris c'est ce que tu verux

Code:
.Close                                                                    'Fermeture du fichier CRA
   With Sheets("CONSO")
   .Range("A" & Lg & ":D" & Lg).AutoFill .Range("A" & Lg & ":D" & .Range("E65536").End(xlUp).Row)
   End With
End With

End If
Next                                                                      'Réinitialisation de la macro


A+++
 

Kayalka

XLDnaute Nouveau
Re : Macro et Autofill

Salut Zon,

Merci d'avoir pris le temps de regarder. En revanche cela ne me donne pas le résultat escompté.
La valeur de Lg qui plus est ne me semble utilisable dans l'autofill puisqu'elle renvoie Range("E65536").End(x1up)Row+1 ...

J'ai fais une nouvelle tentative en me basant sur ton exemple mais sans résultat -_-' :

Code:
ActiveSheet.CONSO
Lc = Range("E65536").End(xlUp).Row
.Range("A" & .Range("A65536").End(xlUp).Row & ": D" & .Range("D65536").End(xlUp).Row).AutoFill .Range("A" & Lc & ": D" & Lc)
 

Zon

XLDnaute Impliqué
Re : Macro et Autofill

Re,

tu ne peux pax écrire activesheet.conso.

je vais prendre 1 exemple:

lg donne la dernière ligne utilisée+1 admettons lg =3 avant que tu écrives tes données en colonne E.

tu écris 10 lignes en colonne E

tu as E13 remplie.

Ensuite tu fais ton transpose sur A3:D3 , là tu veux glisser jusqu'A13:D13 il me semble ?

ce qu'on écrit en VBA
range(A3:D3).autofill range(A3:D13)
par variable, si tu veux en rajouter lc comme tu l'as fait:

rappel lg=3 et lc =13
With Sheets("CONSO")
Lc = .Range("E65536").End(xlUp).Row
.Range("A" & Lg & ":D" & Lg).AutoFill .Range("A" & Lg & ":D" & Lc)
End With


A+++
 

Kayalka

XLDnaute Nouveau
Re : Macro et Autofill

Mmmh ce n'est pas très clair dans l'exécution.
Sur le principe je vois tout à fait ce que tu veux dire mais je n'arrive à rien pour le moment.
Tant pis, je finirais par trouver.

Merci pour tes éclaircissements en tout cas !
 

Zon

XLDnaute Impliqué
Re : Macro et Autofill

Salut,

Je te mets le code juste aprés ton .close qui fonctionne dans ton exemple de fichier.

Si dans ton fichier de travail ça donne pas les résultats escomptés il faut que tu sois plus explicite:

soit tu m'envoies en MP ton fichier de travail en donnant des explications où ça te turlupine.

soit "je n'arrive rien pour le moment " ??? => pour moi je ne peux pas comprendre ce qui ce passe chez toi , est que cela fonctionne ? est ce qu'il faut l'adapter autrement ? ....


A+++
 

Kayalka

XLDnaute Nouveau
Re : Macro et Autofill

Hum oui pardon je n'ai pas été très précis dans le résultat.

J'ai recopié le code que tu m'as fourni à l'endroit indiqué dans ma macro; la macro tourne et ne plante pas mais l'autofill n'a pas lieu sur mon fichier.

Exemple dans le fichier joint (qui contient ton code):
Après consolidation, mon objectif est que les données contenues sur la plage A2:D2 soient recopiées jusqu'en A51:D51 (pour ce cas-ci). La ligne est variable comme nous nous le sommes dit.

Ce que je ne saisis pas dans ton code c'est que tu utilises la variable Lg (= Range("E65536").End(x1Up).Row + 1)
pour effectuer un copier / coller et il ne peut y avoir de données sur la ligne Lg ...

Code:
.Range("A" & Lg & ":D" & Lg).AutoFill .Range("A" & Lg & ":D" & .Range("E65536").End(xlUp).Row)

Je ne sais pas si je suis clair, le fichier en l'état devrait parler de lui-même.
 

Pièces jointes

  • CONSO.zip
    87.6 KB · Affichages: 34
  • CONSO.zip
    87.6 KB · Affichages: 30
  • CONSO.zip
    87.6 KB · Affichages: 31

Zon

XLDnaute Impliqué
Re : Macro et Autofill

Salut,


Lg était déjà dans ton code ...avec commentaire en plus!
=>elle nous permet de savoir la ligne de départ , aprés collage .E65536].end(xlup).row là sert à savoir la ligne d'arrivée


Je te renvoie ton fichier travail avec le code que je t'avais donné au départ

si dans le fichier data je mets en D2 (donc service) je mets toto alors dans fichier travail j'aurai toto de A2 à A51
si dans data2 je mets en D2 je mets titi , alors dans fichier travail j'aurai titi de A52 à A101.


A+++
 

Pièces jointes

  • kayalka.xlsm
    31.2 KB · Affichages: 49

Kayalka

XLDnaute Nouveau
Re : Macro et Autofill

Je viens de saisir, mon incompréhension venait du fait que je considérais Lg après le premier collage hors cette variable est calculée avant collage des données et il est donc logique de l'utiliser pour l'autofill.

Le code sur ton fichier marche bien ! En revanche impossible de trouver l'erreur de syntaxe avec mon ancien fichier. Pourrais-tu me dire ce que tu as corrigé histoire de comprendre stp ?

Chose étrange l'autofill ne va pas jusqu'à la dernière ligne contenant des données; il s'arrête une ligne avant c'est curieux (ex: données en colonne E et suivantes présentes jusqu'en ligne 200, l'autofill sur les colonnes A:D s'arrête à 199).

Enfin bon, merci beaucoup pour ton aide !

Bonne journée,
 

Kayalka

XLDnaute Nouveau
Re : Macro et Autofill

Bonjour Zon,

Bon décidément, je n'arrive pas à voir l'option ajouter une pièce-jointe dans l'interface de message privé x_X. Je continue sur le fil donc.

Voici l'ancienne version où j'avais ajouté ton code sans obtenir de résultat. Je n'arrive pas à voir l'erreur de syntaxe que j'ai glissé malgré moi dans le code mais bon tant pis.

En revanche, fait étrange est que sur la version que tu m'as envoyé aujourd'hui l'autofill s'arrête une ligne trop top et ça j'avoue que ça me dépasse complètement.

Merci de tes lumières,


Bonne après-midi,

Kayalka
 

Pièces jointes

  • CONSO OLD.zip
    87.6 KB · Affichages: 32

Zon

XLDnaute Impliqué
Re : Macro et Autofill

Re,

si tu étais à côté de moi, je te taillerais les oreilles en pointe et tu me serais redevable de quelques tournées

lors de la recopie de ton code:

tu as écris

VB:
.Range("A" & Lg & ":D" & Lg).AutoFill.Range ("A" & Lg & ":D" & .Range("E65536").End(x1Up).Row)

il manque 1 espace entre autofill et .range. et x1up (pas le chiffre 1 mais la lettre L) à la place de xlup.

Pour éviter ce genre d'erreur , sous l'editeur VBA, écris en minuscule quand tu passes à la ligne xlup devient xlUp alors que x1up reste en x1up ...

Quand tu testes desactives on error resume next pour savoir d'où vient l'erreur.

Tu aurais fait copier coller depuis le forum pas de pb
A+++
 

Discussions similaires

Réponses
8
Affichages
438

Statistiques des forums

Discussions
312 514
Messages
2 089 220
Membres
104 065
dernier inscrit
il matador