Copiers des données spécifiques vers un autre fichier

Y compris Power BI, Power Query et toute autre question en lien avec Excel
J
Jeanba
Membre habitué
Membre habitué
Messages : 63
Inscrit le : 14 octobre 2016
Version d'Excel : 2010

Message par Jeanba » 28 décembre 2016, 09:53

Bonjour le Forum,

Joyeuses fêtes à tous!

Je fais quelques insomnies pour une problématique de copie de données spécifiques de divers fichiers pour les déplacer vers un autre fichier. Mes recherches sur ce forum et par ailleurs se heurtent à des solutions non adaptées... Car, dans mon cas, il s'agit de copier le contenu de certaines cellules de certaines feuilles d'un classeur (Feuille source) vers un classeur (Feuille destinataire) contenant 2 feuilles.

La feuille à copier est sélectionnée via un userform (ici Userform2).

La première de ces 2 feuilles du classeur destinataire (parametres) ne reçoit qu'une valeur en B2, celle qui se trouve invariablement en A7 de la feuille copiée.

La 2e feuille du classeur destinataire (donnees) prend quant à elle l'essentiel des informations comprises dans la plage A8:H jusqu'à la dernière colonne non vide, à l'exception des données de la colonne D qui ne sont pas à copier.

Alors, avec ça, vous comprenez pourquoi j'ai des migraines au point de rester éveillé jusqu'à 02h32! J'ai tenté un code mais, ça va pas à chaque fois...
Pour simplifier, on va dire que les 2 fichiers joints sont dans C:\Mes Documents\VBA.

Je joins les fichiers pour plus de clarté.
Merci par avance

Jeanba
Copie fichier vers autre - Feuille destinataire.xlsm
(20.02 Kio) Téléchargé 10 fois
Copie fichier vers autre - Feuille source.xlsm
(463.74 Kio) Téléchargé 9 fois
g
gmb
Fanatique d'Excel
Fanatique d'Excel
Messages : 12'068
Appréciations reçues : 260
Inscrit le : 4 avril 2013
Version d'Excel : 2016

Message par gmb » 28 décembre 2016, 13:56

Bonjour

Un essai à tester. Te convient-il ?
Bye !
Jeanba.zip
(202.15 Kio) Téléchargé 23 fois
J
Jeanba
Membre habitué
Membre habitué
Messages : 63
Inscrit le : 14 octobre 2016
Version d'Excel : 2010

Message par Jeanba » 28 décembre 2016, 15:22

Bonjour gmb, bonjour le Forum,

Je suis stupéfait de voir la rapidité avec laquelle tu as abordé le problème que j'ai soumis.
La solution est exactement celle-là!

La seule petite chose qui me comblerait, serait de pouvoir 1) effacer toutes les données du classeur destinataire et 2) écrire dans le classeur destinataire sans l'ouvrir. J'ai lu quelque part dans ce forum que des gens en sont arrivés. Sauf que moi je suis pas doué...

Merci en tous les cas pour tout!

Joyeux Noël!

Jeanba
J
Jeanba
Membre habitué
Membre habitué
Messages : 63
Inscrit le : 14 octobre 2016
Version d'Excel : 2010

Message par Jeanba » 28 décembre 2016, 16:48

Dis gmb,

j'aimerais que le copier/coller soit en valeur.
Comment insérer l'instruction PasteSpecial Paste:=xlPasteValues dans ta formule là:
           fp.Range("B2") = fm.Range("A7")
            fd.Range("A1").CurrentRegion.Offset(1, 0).ClearContents
            fm.Range("A8:C" & fm.Range("A" & Rows.Count).End(xlUp).Row).Copy fd.Range("A2")
            fm.Range("E8:H" & fm.Range("A" & Rows.Count).End(xlUp).Row).Copy fd.Range("D2")
g
gmb
Fanatique d'Excel
Fanatique d'Excel
Messages : 12'068
Appréciations reçues : 260
Inscrit le : 4 avril 2013
Version d'Excel : 2016

Message par gmb » 28 décembre 2016, 17:43

Jeanba a écrit :La seule petite chose...
Je crois qu’en fait il y en a plusieurs :
pouvoir 1) effacer toutes les données du classeur destinataire
La macro efface déjà les données du tableau destinataire de la page ‘’DONNEES’’ et écrase ce qu’il y a dans la cellule B2 de la feuille ‘’PARAMETRES’’.
Doit-elle effacer autre chose ?
2) écrire dans le classeur destinataire sans l'ouvrir
Je ne sais pas faire ça. Mais je peux faire en sorte que la macro ouvre le fichier, remplace les données et le referme en l’enregistrant.
j'aimerais que le copier/coller soit en valeur.
Ce n’est pas un problème
Nouvelle version :
Bye !
JeanBa.zip
(216.6 Kio) Téléchargé 12 fois
J
Jeanba
Membre habitué
Membre habitué
Messages : 63
Inscrit le : 14 octobre 2016
Version d'Excel : 2010

Message par Jeanba » 28 décembre 2016, 19:18

2) écrire dans le classeur destinataire sans l'ouvrir
Je ne sais pas faire ça. Mais je peux faire en sorte que la macro ouvre le fichier, remplace les données et le referme en l’enregistrant.

Cher gmb,

Tout est parfait! Si tu peux juste faire ouvrir le fichier, y écrire, l'enregistrer et le refermer...

Dans la dernière version que tu as envoyée, je crois que la macro ouvre déjà le fichier, y inscrit les données mais ne le referme pas
En effet, je suis en train de développer derrière un module qui récupère le fichier destinataire ainsi obtenu pour d'autres fins..
Et cette procédure doit débuter après ton message "Exportation réussie". Je clique sur ok et je fais un Call d'une autre procédure pour terminer...

Au passage, ce qui m'embête aussi c'est l'enregistrement sous pdf d'une feuille (attention, pas tout le classeur!!) sous le nom de la feuille + la valeur en A7. Ainsi, si ma feuille s'appelle Janvier, j'aimerai pouvoir sauvegarder les données de ce mois sous pdf sous ce nom "Journal 01 2016" (2016 étant une valeur stockée dans une feuille "parametres" et correspondant à l'année en cours...

Avec les autres sur ce forum et ailleurs, vous m'avez suffisamment bleuffé que je crois que ce serait un jeu d'enfant pour vous...
Merci par avance,

Jeanba
g
gmb
Fanatique d'Excel
Fanatique d'Excel
Messages : 12'068
Appréciations reçues : 260
Inscrit le : 4 avril 2013
Version d'Excel : 2016

Message par gmb » 28 décembre 2016, 20:33

Jeanba a écrit :je crois que la macro ouvre déjà le fichier, y inscrit les données mais ne le referme pas
Mais si ! Dans la dernière version envoyée, le fichier se refermait, en tout cas sur mon PC.
Dans celle ci-jointe, le fichier reste ouvert et un autre fichier, fermé, est enregistré au format PDF dans le dossier d'origine.

Bye !
JeanBa.zip
(218.85 Kio) Téléchargé 8 fois
J
Jeanba
Membre habitué
Membre habitué
Messages : 63
Inscrit le : 14 octobre 2016
Version d'Excel : 2010

Message par Jeanba » 28 décembre 2016, 22:41

Effectivement, dans la version précédente, le fichier se charge et se referme.
J'ai dû pas prêter attention du fait que tu as laissé cette ligne de code (qui ne devrait plus avoir lieu alors?):
OuvrirFichier:
    MsgBox "Vous devez ouvrir le fichier ''fichier vers autre - Feuille destinataire.xlsm''", 16
End Sub
En m'en tenant à ton dernier chef-d'oeuvre, je m'incline! C'est exactement en tout point ce dont je rêvais!
Ce sera mon cadeau de Noël, tu ne réalises pas combien de temps j'ai déjà passer dessus à chercher...

Donc, pour finir en beauté, je te parlais d'une procédure que j'appelle en fin de procédure après lemessage "Exportation réussie".
Cette autre procédure appelons là inventaire. Elle se trouve dans un autre fichier que la macro doit ouvrir et s'exécuter.
J'ai tapé cette ligne de code que j'ai chopée chez toi et ça fonctionne bien:
    MsgBox "Exportation réussie !"
    [b][color=#0000BF]Workbooks.Open Filename:=ThisWorkbook.Path & "\Inventaire.xlsm"[/color][/b]
Exit Sub
Alors, ma question est de savoir si c'est mieux d'ouvrir ce classeur ainsi ou faut-il dans les règles de l'art préférer le faire dans un module qu'on appelle?

Encore merci!

Jeanba
g
gmb
Fanatique d'Excel
Fanatique d'Excel
Messages : 12'068
Appréciations reçues : 260
Inscrit le : 4 avril 2013
Version d'Excel : 2016

Message par gmb » 29 décembre 2016, 00:51

Jeanba a écrit :ma question est de savoir si c'est mieux d'ouvrir ce classeur ainsi ou faut-il dans les règles de l'art préférer le faire dans un module qu'on appelle?
Si ça marche comme ça, pourquoi chercher autre chose ?

Bye !
J
Jeanba
Membre habitué
Membre habitué
Messages : 63
Inscrit le : 14 octobre 2016
Version d'Excel : 2010

Message par Jeanba » 29 décembre 2016, 13:39

Bonjour gmb, bonjour le Forum,

Bon, là j'y comprends plus rien..
Hier soir, en exécutant ta macro gmb, ça marchait comme sur des roulettes.
J'ai voulu intégré cette macro dans mon projet final, ça bugg!

Je joins les fichiers :
1) "Souci d'exec..." qui contient l'usf et donc aussi les feuilles à copier en fonction de la sélection
2) "Feuille export" qui est la feuille destinataire des données copiées
3) "Inventaire" qui contient le programme extérieur que j'appelle en milieu de procédure

Et, petite cerise sur le gâteau, si c'est possible, une barre de progression pendant l'exécution de tout ça pour faire patienter...
Merci par avance

Jeanba
Source à copier vers Feuille export.xlsm
(427.26 Kio) Téléchargé 9 fois
Inventaire.xlsm
(58.4 Kio) Téléchargé 8 fois
Feuille export.xlsm
(26.35 Kio) Téléchargé 9 fois
Répondre Sujet précédentSujet suivant
  • Sujets similaires
    Réponses
    Vues
    Dernier message