Traitement de donnée EXCEL dans des dossiers variables

Y compris Power BI, Power Query et toute autre question en lien avec Excel
M
Max6456
Jeune membre
Jeune membre
Messages : 22
Inscrit le : 12 novembre 2015
Version d'Excel : 2007 FR

Message par Max6456 » 12 novembre 2015, 10:19

Bonjour, je suis nouveau sur le forum, et débutant en VBA.

Je vous écris car je rencontre un soucis dans mon programme.

Je m'explique :

Je dois créer un programme qui s'exécute sur un tableur excel qui va chercher à ouvrir d'autre tableurs excels, faire des copies et coller sur de nouveau onglet sur le tableur initial. Le programme s'éxecute bien sur le nom associé, voici un extrait du programme :

Sub CreationSynthese()

'Synthèse des documents à traiter


' Ouverture de ADA.xlsx"
Workbooks.Open "C:\Users\maxime.paruch\Analyse de donnée EXCEL\112163\ADA.xlsx"

Application.DisplayAlerts = False

' Copie des données :
Workbooks("ADA.xlsx").Sheets("ADA").Range("A1:P1000").Copy
Workbooks("Générateur de bilan de comptes.xlsm").Activate
Workbooks("Générateur de bilan de comptes.xlsm").Sheets("ADA").Select
Workbooks("Générateur de bilan de comptes.xlsm").Sheets("ADA").Paste
Workbooks("Générateur de bilan de comptes.xlsm").Sheets("ADA").Range("A1").Select

' Fermeture de ADA.xlsx :
Workbooks("ADA.xlsx").Close False

Application.DisplayAlerts = True



' Ouverture de ADA-2.xlsx :
Workbooks.Open "C:\Users\maxime.paruch\Analyse de donnée EXCEL\112163\ADA-2.xlsx"

Application.DisplayAlerts = False

' Copie des données :
Workbooks("ADA-2.xlsx").Sheets("ADA-2").Range("A1:P1000").Copy
Workbooks("Générateur de bilan de comptes.xlsm").Activate
Workbooks("Générateur de bilan de comptes.xlsm").Sheets("ADA (2)").Select
Workbooks("Générateur de bilan de comptes.xlsm").Sheets("ADA (2)").Paste
Workbooks("Générateur de bilan de comptes.xlsm").Sheets("ADA (2)").Range("A1").Select

' Fermeture de ADA-2.xlsx :
Workbooks("ADA-2.xlsx").Close False

Application.DisplayAlerts = True






Les données qui sont en couleur bleu sont variables selon le dossier ou le générateur de bilan s'éxecute.

Dans l'idée j'aimerais que mon programme puisse s'exécuter dans d'autre dossier directement avec n'importe quelle valeur du type XXXXXX (112163 pour celui ci).

Il faudrait que se soit une variable que le générateur prenne en compte.

Je vous remercie pour votre aide.



Maxime
Avatar du membre
Machin
Membre dévoué
Membre dévoué
Messages : 520
Inscrit le : 17 septembre 2015
Version d'Excel : 2007fr

Message par Machin » 12 novembre 2015, 11:30

Bonjour
Workbooks.Open "C:\Users\maxime.paruch\Analyse de donnée EXCEL\" [surligner]& variable &[/surligner] "\ADA-2.xlsx"
IL vous reste à intégrer dans la variable l'élément voulu
Je suis direct mais juste. Et inversement.
M
Max6456
Jeune membre
Jeune membre
Messages : 22
Inscrit le : 12 novembre 2015
Version d'Excel : 2007 FR

Message par Max6456 » 12 novembre 2015, 11:37

Tout d'abord merci pour votre réponse,
mais je ne sais pas comment gérer "& variable &" pour que cela fonctionne.

Comment dois-je la déclarer ? Et comment faire pour que mon programme fonctionne dans n'importe quel dossier de la forme XXXXXX..

Je vous remercie pour votre aide.

Cordialement,

Maxime
Avatar du membre
Machin
Membre dévoué
Membre dévoué
Messages : 520
Inscrit le : 17 septembre 2015
Version d'Excel : 2007fr

Message par Machin » 12 novembre 2015, 11:58

Tout dépend de la source, qui va donner à la variable sa raison d'être. Si c'est-ce une saisie manuelle...du texte dans une cellule...
Je suis direct mais juste. Et inversement.
M
Max6456
Jeune membre
Jeune membre
Messages : 22
Inscrit le : 12 novembre 2015
Version d'Excel : 2007 FR

Message par Max6456 » 12 novembre 2015, 12:09

Ici, par exemple mon programme s'executera dans un dossier portant un nom de la forme XXXXXX en chiffre.

Je voudrai qu'au lancement de la macro récupération de donnée, que le programme puisse prendre le numéro de compte XXXXXX.
Que la macro s'exécute en adaptant à chaque fois sa variable (n° de compte) dans le fichier ou elle se trouve (dans la ligne workbook.open).

NomDossier : 112158 --> & variable & =112158
NomDossier : 145489 --> & variable & =145489
NomDossier : 159486 --> & variable & =159486


Je vous remercie pour toute votre aide.


Cordialement,


Maxime
Avatar du membre
Machin
Membre dévoué
Membre dévoué
Messages : 520
Inscrit le : 17 septembre 2015
Version d'Excel : 2007fr

Message par Machin » 12 novembre 2015, 18:59

Max6456 a écrit : Je voudrai qu'au lancement de la macro récupération de donnée, que le programme puisse prendre le numéro de compte XXXXXX.
Je réitère ma question sous une autre forme : allez chercher le N° de compte où ? Chez l'épicier ? Chez le coiffeur ? Dans les toilettes ? Dans la cuisine ? Sous le coussin ? Dans la cellule B1, dans la feuille 2 ? Chez tatan Edmonde ? Chez tonton lulu ?
Je suis direct mais juste. Et inversement.
M
Max6456
Jeune membre
Jeune membre
Messages : 22
Inscrit le : 12 novembre 2015
Version d'Excel : 2007 FR

Message par Max6456 » 12 novembre 2015, 19:30

Après réflexion, je me suis rendu compte qu'il me faut une macro qui me permette d'aller chercher un dossier à traiter.
Chaque dossier est caractérisé par un numéro de compte à 6 chiffres.
Si vous voulais je vais garder la même structure de programme mais c'est moi qui lui dit dans quel dossier intervenir et où traiter justement les différents fichiers Excel.
Pouvez vous.m'aider à modifier mon programme pour qu'il puisse faire ça ?

En gros on doit via l'explorer lui dire ou la macr extraction doit intervenir (dossier avec numéro de compte)




Désolé pour mon ancienne explication.
Merci pour votre aide.

Cordialement.

Maxime.
Avatar du membre
Machin
Membre dévoué
Membre dévoué
Messages : 520
Inscrit le : 17 septembre 2015
Version d'Excel : 2007fr

Message par Machin » 12 novembre 2015, 21:02

En première approche, vous pouvez commencer par ceci (je vous laisse rajouter les éléments concernant la copie)
Sub recopie()
Dim fichierD As Workbook
Application.Dialogs(xlDialogOpen).Show
Set fichierD = ActiveWorkbook

Range(machintruc).Copy fichierD.sheets("bidule").Range("Aquelquechose")
End Sub
Tout ce qui vous paraît anormal (les machin truc bidule) ce sont les termes à remplacer.

Au lancement de la macro, une fenêtre s'ouvre. Vous allez chercher votre fichier via l'arborescence des repertoires puis celui-ci se nommera "FichierD" . Dans l'exemple ci-dessus je copie la plage machintruc pour la coller dans la feuille bidule du fichierD.
Je suis direct mais juste. Et inversement.
M
Max6456
Jeune membre
Jeune membre
Messages : 22
Inscrit le : 12 novembre 2015
Version d'Excel : 2007 FR

Message par Max6456 » 12 novembre 2015, 21:22

Tout d'abord merci pour votre réponse.

Je ne suis pas sur ma machine mais demain à la première heure je testes tout ça, et vous dit comment ça réagit.

Cela devrait résoudre mon problème, et pouvoir faire fonctionner cette macro dans n'importe quel dossier (fichierd, XXXXXX n° de compte).
La ligne qui recopie et place (RANGE), je peux en mettre à la suite autant que je veux sur la macro recopie ?

Je vous remercie.

Bien cordialement,

Maxime PARUCH
Avatar du membre
Machin
Membre dévoué
Membre dévoué
Messages : 520
Inscrit le : 17 septembre 2015
Version d'Excel : 2007fr

Message par Machin » 12 novembre 2015, 21:37

Autant que vba en supporte.
Par la suite, présentez-nous votre macro (voire le fichier) pour que les vbaïste puissent améliorer le code et vous apporter un certain "confort informatique)
Je suis direct mais juste. Et inversement.
Répondre Sujet précédentSujet suivant
  • Sujets similaires
    Réponses
    Vues
    Dernier message