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:=False

Bonjour,

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 Sub

Re,

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

Re,

Pour les fichiers conséquents ... tu peux utiliser

http://www.cjoint.com/

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

15personal.xlsb (32.30 Ko)

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 ...

Re,

Ci-joint ton fichier test ... avec ta macro adaptée ...

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 j

Dans 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 j

Excellent !!!! ç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

Rechercher des sujets similaires à "probleme basculer donnees fichier"