Problème pour basculer des données d'un fichier à un autre
Bonjour à tous !
Je suis débutant en VBA excel et je suis entrain de faire une macro pour basculer des informations d'un fichier vers un autre. Sans même avoir encore fait tourner ma macro. Je pense que je vais être confronté à un sérieux problème. J'utilise la fonction VBA : Windows. ("NOM de mon fichier source.xls").Activate. Pour aller chercher les informations à transférer vers mon fichier qui s'appelle "COMPTEOLIVIER.XLS". Seulement voilà mon fichier source va constamment changer de nom...
Donc voici ma question existe t'il une ligne de code pour définir automatiquement le nom du fichier à traiter au début? Je verrais bien une fenêtre qui s'affiche avec un InputBox avec un message genre "quel fichier voulez vous traiter?"
'Bascule les dates et les codes compte en compta
Sheets("COMPTE1").Select
Range("A8").Select
Range("A8:B" & Range("A65536").End(xlUp).Row).Copy
Windows("COMPTOLIVIER.xls").Activate
Sheets("COMPTE1").Select
Range("A8").Select
Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Sheets("COMPTE1").Select
'Copie le nom, le numéro de dossier et la mesure de protection
Windows("nom de mon fichier source.xls").Activate
Sheets("COMPTE1").Select
Range("B2:B4").Select
Selection.Copy
Windows("COMPTOLIVIER.xls").Activate
Sheets("COMPTE1").Select
Range("B2").Select
Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=FalseBonjour,
Le plus simple est de définir deux variables ...
Dim w1 As Workbook
Dim w2 As Workbook
Set w1 = ActiveWorkbook
' ensuite dès que ta macro ouvre le second fichier
Set w2 = ActiveWorkbook
' pendant toute la suite de ton code, w1 et w2 seront les "bons" fichiers ...Ah oui c'est pas mal ça !!! Mais du coup je dois placer cette variable tout au début je suppose? Et après le Fameux W1 et W2 je remplace mes objets "Windows(".xls").Activate" par soit W1 ou W2 en fonction du fichier si c'est la source ou la destination c'est ça?
Re,
Tu as totalement raison ...
James007 a écrit :Re,
Tu as totalement raison ...
Merci infiniment !!!! Je vais tester ça de suite
Re,
Bien sûr ... si tu rencontres une difficulté ...il ne faut pas hésiter à reposter sur le Forum ...
James007 a écrit :Re,
Bien sûr ... si tu rencontres une difficulté ...il ne faut pas hésiter à reposter sur le Forum ...
Bon ben je suis vraiment une vrai quiche j'ai essayé de remplacer mes objets par des worksheets"W2".Activate et ça ne fonctionne pas....
Je ne comprends vraiment pas
'Bascule les dates et les codes compte en compta
Sheets("COMPTE1").Select
Range("A8").Select
Range("A8:B" & Range("A65536").End(xlUp).Row).Copy
Windows("COMPTOLIVIER.xls").Activate
Sheets("COMPTE1").Select
Range("A8").Select
Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Sheets("COMPTE1").Select
'Bascule les libellés des écritures comptables
Sheets("COMPTE1").Select
Range("D8").Select
Range("D8:D" & Range("D65536").End(xlUp).Row).Copy
Windows("COMPTOLIVIER.xls").Activate
Sheets("COMPTE1").Select
Range("D8").Select
Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Sheets("COMPTE1").Select
'Copie le nom, le numéro de dossier et la mesure de protection
Windows("COMPT1888.xls").Activate
Sheets("COMPTE1").Select
Range("B2:B4").Select
Selection.Copy
Windows("COMPTOLIVIER.xls").Activate
Sheets("COMPTE1").Select
Range("B2").Select
Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
'Bascule les écritures comptable
'F
Windows("COMPT1888.xls").Activate
Sheets("COMPTE1").Select
Range("F8").Select
Range("F8:F" & Range("F65536").End(xlUp).Row).Copy
Windows("COMPTOLIVIER.xls").Activate
Sheets("COMPTE1").Select
Range("F8").Select
Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Sheets("COMPTE1").Select
'G
Windows("COMPT1888.xls").Activate
Sheets("COMPTE1").Select
Range("G8").Select
Range("G8:G" & Range("G65536").End(xlUp).Row).Copy
Windows("COMPTOLIVIER.xls").Activate
Sheets("COMPTE1").Select
Range("G8").Select
Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Sheets("COMPTE1").Select
'H
Windows("COMPT1888.xls").Activate
Sheets("COMPTE1").Select
Range("H8").Select
Range("H8:H" & Range("H65536").End(xlUp).Row).Copy
Windows("COMPTOLIVIER.xls").Activate
Sheets("COMPTE1").Select
Range("H8").Select
Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Sheets("COMPTE1").Select
'I
Windows("COMPT1888.xls").Activate
Sheets("COMPTE1").Select
Range("I8").Select
Range("I8:I" & Range("I65536").End(xlUp).Row).Copy
Windows("COMPTOLIVIER.xls").Activate
Sheets("COMPTE1").Select
Range("I8").Select
Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Sheets("COMPTE1").Select
'J
Windows("COMPT1888.xls").Activate
Sheets("COMPTE1").Select
Range("J8").Select
Range("J8:J" & Range("J65536").End(xlUp).Row).Copy
Windows("COMPTOLIVIER.xls").Activate
Sheets("COMPTE1").Select
Range("J8").Select
Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Sheets("COMPTE1").Select
'K
Windows("COMPT1888.xls").Activate
Sheets("COMPTE1").Select
Range("K8").Select
Range("K8:K" & Range("K65536").End(xlUp).Row).Copy
Windows("COMPTOLIVIER.xls").Activate
Sheets("COMPTE1").Select
Range("K8").Select
Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Sheets("COMPTE1").Select
'L
Windows("COMPT1888.xls").Activate
Sheets("COMPTE1").Select
Range("L8").Select
Range("L8:L" & Range("L65536").End(xlUp).Row).Copy
Windows("COMPTOLIVIER.xls").Activate
Sheets("COMPTE1").Select
Range("L8").Select
Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Sheets("COMPTE1").Select
'M
Windows("COMPT1888.xls").Activate
Sheets("COMPTE1").Select
Range("M8").Select
Range("M8:M" & Range("M65536").End(xlUp).Row).Copy
Windows("COMPTOLIVIER.xls").Activate
Sheets("COMPTE1").Select
Range("M8").Select
Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Sheets("COMPTE1").Select
'N
Windows("COMPT1888.xls").Activate
Sheets("COMPTE1").Select
Range("N8").Select
Range("N8:N" & Range("N65536").End(xlUp).Row).Copy
Windows("COMPTOLIVIER.xls").Activate
Sheets("COMPTE1").Select
Range("N8").Select
Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Sheets("COMPTE1").Select
'O
Windows("COMPT1888.xls").Activate
Sheets("COMPTE1").Select
Range("O8").Select
Range("O8:O" & Range("O65536").End(xlUp).Row).Copy
Windows("COMPTOLIVIER.xls").Activate
Sheets("COMPTE1").Select
Range("O8").Select
Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Sheets("COMPTE1").Select
'P
Windows("COMPT1888.xls").Activate
Sheets("COMPTE1").Select
Range("P8").Select
Range("P8:P" & Range("P65536").End(xlUp).Row).Copy
Windows("COMPTOLIVIER.xls").Activate
Sheets("COMPTE1").Select
Range("P8").Select
Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Sheets("COMPTE1").Select
'Q
Windows("COMPT1888.xls").Activate
Sheets("COMPTE1").Select
Range("Q8").Select
Range("Q8:Q" & Range("Q65536").End(xlUp).Row).Copy
Windows("COMPTOLIVIER.xls").Activate
Sheets("COMPTE1").Select
Range("Q8").Select
Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Sheets("COMPTE1").Select
'R
Windows("COMPT1888.xls").Activate
Sheets("COMPTE1").Select
Range("R8").Select
Range("R8:R" & Range("R65536").End(xlUp).Row).Copy
Windows("COMPTOLIVIER.xls").Activate
Sheets("COMPTE1").Select
Range("R8").Select
Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Sheets("COMPTE1").Select
'S
Windows("COMPT1888.xls").Activate
Sheets("COMPTE1").Select
Range("S8").Select
Range("S8:S" & Range("S65536").End(xlUp).Row).Copy
Windows("COMPTOLIVIER.xls").Activate
Sheets("COMPTE1").Select
Range("S8").Select
Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Sheets("COMPTE1").Select
'Bascule les intitulés de compte
Windows("COMPT1888.xls").Activate
Sheets("COMPTE1").Select
Range("AM6:AO19").Select
Selection.Copy
Windows("COMPTOLIVIER.xls").Activate
Sheets("COMPTE1").Select
Range("AM6").Select
Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
'Bascule la numérotation des comptes
Windows("COMPT1888.xls").Activate
Sheets("COMPTE1").Select
Range("AQ6:AQ19").Select
Selection.Copy
Windows("COMPTOLIVIER.xls").Activate
Sheets("COMPTE1").Select
Range("AQ6").Select
Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
'Bascule les intitulés dans les dépenses
Windows("COMPT1888.xls").Activate
Sheets("COMPTE1").Select
Range("AV6:AV27").Select
Selection.Copy
Windows("COMPTOLIVIER.xls").Activate
Sheets("COMPTE1").Select
Range("AV6").Select
Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
'Bascule les intitulés dans les ressources
Windows("COMPT1888.xls").Activate
Sheets("COMPTE1").Select
Range("BK6:BK28").Select
Selection.Copy
Windows("COMPTOLIVIER.xls").Activate
Sheets("COMPTE1").Select
Range("BK6").Select
Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
End SubRe,
L'idéal serait que tu joignes ton fichier ...
James007 a écrit :Re,
L'idéal serait que tu joignes ton fichier ...
J'aimerais bien mais je n'arrive pas à ajouter les fichiers sur ce forum les fichiers sont limités à 300Ko et mon fichier fait 900KO même en retirant bcp d'éléménts superflus dessus... la poisse
Merci beaucoup
Alors pour le fichier source des données c'est celui-ci :
Et pour le fichier destination c'est celui-ci :
Merci d'avance,
Bonjour,
Merci pour les fichiers ...
Ceci étant... j'ai bien cherché ... et je ne trouve aucune trace de la macro de départ ... que tu veux modifier ...???
Mais oui suis-je bête... La macro se trouve dans mes macros personnelles donc dans un autre fichier.
Je te mets mon fichier ci-joint
Thanks
Re,
Merci pour le dernier fichier ...
J'avais l'impression d'être passé à côté ... du sujet ...
Je vais prendre le temps de l'analyser dans le détail ...
James007 a écrit :Re,
Merci pour le dernier fichier ...
J'avais l'impression d'être passé à côté ... du sujet ...
Je vais prendre le temps de l'analyser dans le détail ...
Merci infiniment oui par contre il y a plusieurs autres macro qui servent à rien dans ce fichier de macro personnelles. Seul la macro "BasculeOldversNew" est la macro que je veux utiliser
liod a écrit :Merci infiniment oui par contre il y a plusieurs autres macros qui ne servent à rien dans ce fichier de macros personnelles.
Seule la macro "BasculeOldversNew" est la macro que je veux utiliser ...
Entendu ... je vais reprendre la Old vs New ...
Merci infiniment !!! ça fonctionne à merveille whaouuuu !
Par contre désolé d'abuser de ta gentillesse encore mais j'ai encore un dernier soucis avec la formule qui copie mes écritures comptables de la ligne 6 à la ligne 19
'Bascule les écritures comptables Colonnes F à S (soit de 6 à 19)
For j = 6 To 19
x = W2.Worksheets("COMPTE1").Cells(65536, j).End(xlUp).Row
W2.Worksheets("COMPTE1").Range(Cells(8, j), Cells(x, j)).Copy
W1.Worksheets("COMPTE1").Cells(8, j).PasteSpecial Paste:=xlPasteFormulas
Next jDans le cas où il n'y a aucune écriture comptable la macro va bizarrement copier ce qui se trouve dans la colonne 6 alors qu'on lui demande de commencer à copier à partir de la colonne 6... Ce qui fausse sur certaine colonne mon report d'écriture...
J'ai beau chercher je ne trouve pas y'a t'il un objet pour demander à la macro de sauter si il y a pas d'écriture pour éviter cette erreur ?
En tout cas merci beaucoup encore
Bonjour,
Ravi que cela fonctionne comme tu le souhaitais ...
Pour les écritures inexistantes, tu peux tester la modification suivante :
'Bascule les écritures comptables Colonnes F à S (soit de 6 à 19)
For j = 6 To 19
x = W2.Worksheets("COMPTE1").Cells(65536, j).End(xlUp).Row
If x > 8 Then
W2.Worksheets("COMPTE1").Range(Cells(8, j), Cells(x, j)).Copy
W1.Worksheets("COMPTE1").Cells(8, j).PasteSpecial Paste:=xlPasteFormulas
End If
Next jExcellent !!!! ça fonctionne à merveille !!!! Un grand merci en prime je comprends le système de variable
Merci pour le cours
Bon réveillon à toi.
À bientôt