[Résolu] Transfert de fichier partiel dans un autre répertoire (choix de feuilles)

Webperegrino

XLDnaute Impliqué
Supporter XLD
01:05 au FarWest Français : "Good Morning Forum !",
Bonjour à vous,

Je viens à vous car la macro de validation de l'UserForm du fichier ci-joint me pose grand souci.
Cela fait un mois que je travaille dessus, malgré les différentes recherches sur le Forum pour y puiser les excellentes astuces. En vain...

Auriez-vous la gentillesse de prendre un peu de temps pour analyser mes défaillances dans la macro ?
Peut-être arriverez-vous à m'éclairer et me soutenir dans vos corrections bienvenues.

L'Userform tente de trouver le chemin du répertoire-classeur-fichier où doit être transféré une copie partielle de mon fichier Source.

Par exemple, j'ai précédemment installé un dossier TRANSFERT dans le répertoire G:\
je cheminerai donc vers "G:\TRANSFERT\".
Mais il faut que je clicque sur un fichier existant (exemple Cédric.xls) pour pouvoir valider et sortir de la fenêtre de dialogue-chemin que j'ai réussi à placer.
Ce dialogue très intéressant, et pratique, est étrange toutefois en fin de son fonctionnement pour en sortir.
En effet, je ne devrais pas cliquer sur un fichier existant puisque ce sera justement une copie transfert partiel de mon fichier Source, renommé automatiquement qui devrait aller dans le dossier TRANSFERT).
Et ça bugue dans la macro au niveau d'un Tableau mémoire des feuilles à sélectionner, que j'ai commencé à placer : il devrait permettre ensuite le report.

Les explications sont aussi placées en 1ère feuille 'Accueil' du fichier, ainsi que le bouton d'accès à la phase de report du fichier.
Le mieux serait que vous l'essayiez : vous trouverez rapidement les anomalies, avec une feuille sélectionné, avec plusieurs feuilles sélectionnées pour le transfert à venir.

Enfin, mon fichier SOURCE volumineux que je peux produire ici, contient un mot de passe sur toutes ses feuilles.
Le "fichier-extrait-transféré" que je souhaite, renommé automatiquement avec nom, date et heure, ne devra plus avoir :
- les macros, [ça semble fonctionner]
- que les feuilles sélectionnées (1 ou plus),
- devra permettre le filtrage sur les feuilles I] [ça semble fonctionner aussi][/I],
- et l'utilisateur ultérieur pouvoir l'ouvrir sans mdp.
Grand merci pour votre aide, d'autant plus que ce peitit fichier, s'il fonctionnait correctement, pourrait bien service aux autres amis du Forum, car jusqu'ici mes recherches m'induisaient ensuite dans l'erreur dans la programmation, piètre programmeur que je suis !
Bonne nuit car mes neuronnes se disloquent à force de buguer dans ce fichier.
Webperegrino
 

Pièces jointes

  • Source.xls
    95.5 KB · Affichages: 70
  • Source.xls
    95.5 KB · Affichages: 83
  • Source.xls
    95.5 KB · Affichages: 87
Dernière édition:

Webperegrino

XLDnaute Impliqué
Supporter XLD
Re : Transfert de fichier partiel dans un autre répertoire (choix de feuilles à expor

Re-bonjour,
J'ai trouvé utile, avant d'aller dormir enfin, de déplacer ChoixFichier... du début de la macro au centre juste avant 'Dim Dest, Message.
Le résulat est plus logique, mais la macro continue à bloquer...

ChoixFichier 'Macrocommande en module1
[/COLOR]'Dim Dest, Message

Merci pour votre aide à venir,
Webperegrino de Lorient
 

Paritec

XLDnaute Barbatruc
Re : Transfert de fichier partiel dans un autre répertoire (choix de feuilles à expor

Bonjour Welpelegrino le forum
bon alors que tu utilises des tableaux ok pas de soucis mais il faut un minimum savoir ce que tu fais!!!!
un bout de ta macro modifié enfin en partie, je te laisse chercher les modifs
a+
papou:eek:

Code:
Dim Tabl()
j = 1
With ListBox1
    For i = 0 To .ListCount - 1
        If .Selected(i) Then
            ReDim Preserve Tabl(1, j) 'ne bloque plus là
            Tabl(1, j) = .List(i, 0)
            .Selected(i) = False
            j = j + 1
        End If
    Next
End With

'Sheets du fichier Source à copier

For W = 1 To UBound(Tabl, 2)
    With Sheets(Tabl(1, W)) 'ne bloque plus là mais la ligne en dessous le pourquoi à ton avis ???
        DerLig = Sheets("W").Range("B" & Rows.Count).End(xlUp).Row + 1
        'Sh(W).Range("A1" & ":K" & DerLig).Copy
        Sheets(W).Range("A1" & ":K" & DerLig).Copy 'Garder le fichier original ouvert
        Sheets(W).Add
    End With
Next
 
Dernière édition:

Paritec

XLDnaute Barbatruc
Re : Transfert de fichier partiel dans un autre répertoire (choix de feuilles à expor

re welpelegrino le forum
et pour ton label tu peux faire
a+
papou:eek:

Code:
Label_Date.Caption = Format(Date, "dd mmm yyyy") & " " & Format(Time, "hh") & "h" & Format(Time, "mm")
 

Webperegrino

XLDnaute Impliqué
Supporter XLD
Transfert de fichier partiel dans un autre répertoire (choix de feuilles à exporter)

Bonjour Le Forum,

Voici ma nouvelle version. ‘Je rame vraiment’

Merci à Paritec pour cette aide dans mes expériences en VBA.

Paritec, ta proposition #4 me va à souhait.
De plus j’ai progressé car tu m’as donné l’idée de modifier en feuille Réf. Saisies Entrées » la cellule F1 qui définit le format date heure minute

J’ai rectifié avec ton idée F1 en :
=TEXTE(MAINTENANT();"jjmmmaaa")&" "&TEXTE(MAINTENANT();"hh")&"h"&TEXTE(MAINTENANT();"mm")

Si bien qu’en A1, pour l’attribution du nom du fichier lorsqu’il réussira à être transféré… :
=TEXTE(E1&" "&F1;0)
cela donnera ainsi : Cédric 08mai2012 09h05.xls

Super. Merci beaucoup pour m’avoir orienté vers cela.

Quant à la réponse #3, merci pour ton indulgence car j’avance vraiment pas à pas dans la programmation ; et ce n’est pas évident de tout comprendre en autodidacte…
C’est la première fois que je place cette notion de Table(1,j) … etc

Depuis 9 h00 ce matin j’essaie de faire évoluer l’application.
J’ai fourni mes explications dans la macro-commande (Alt F11 pour les novices) pour ne pas alourdir ce message.
Une cascade de messages m’a permis de rectifier la structure. Mais là, j’explose ! Je ne peux plus avancer et comprendre pourquoi il y a bascule des fichiers à l’écran à la fin.

Je désire en effet garder la main sur le fichier Source qui doit rester à l’écran pour la suite.
Quant à la sélection des feuilles à exporter, c’est devenu de la mayonnaise pour moi : ça ne monte plus.
A l’aide si vous voulez bien accepter.
Je m'en vais prendre des aliments pour reprendre des forces !
Bonne journée.
Webperegrino
 

Pièces jointes

  • Source(1).xls
    104 KB · Affichages: 44
  • Source(1).xls
    104 KB · Affichages: 46
  • Source(1).xls
    104 KB · Affichages: 52
Dernière édition:

Paritec

XLDnaute Barbatruc
Re : Transfert de fichier partiel dans un autre répertoire (choix de feuilles à expor

re Welpelegrino le forum
oh là pas si vite !!! tu n'as pas compris ma remarque alors on y revient
tu essayais de redimensionner un tableau en ajoutant une ligne??? IMPOSSIBLE un tableau ne peut se redimensionner que en ajoutant des colonnes IMPORTANT
et après dans l'utilisation
je ne t'ai pas dis de supprimer la boucle mais je voulais que tu regardes le pourquoi de ton erreur
la ligne en dessous utilise correctement le tableau Tabl
Code:
With Sheets(Tabl(1, W))
mais là le tableau n'est pas utilisé mais uniquement la variable du nombre de ligne du Tabl !!!!
W est dans ce cas, l'index du tableau, et non pas le nom de la feuille, le nom de la feuille est contenu, dans Tabl (1 pour le numéro de ligne puisque ton tableau n'a qu'une ligne , et w pour la colonne du tableau.) donc Tabl(1,w) te donne le nom de ta feuille.
Code:
DerLig = Sheets("W").Range("B" & Rows.Count).End(xlUp).Row + 1
là pareil
Code:
Sh(W).Range("A1" & ":K" & DerLig).Copy
déjà il faut que tu comprennes cela
a+
papou:eek:
 
Dernière édition:

Paritec

XLDnaute Barbatruc
Re : Transfert de fichier partiel dans un autre répertoire (choix de feuilles à expor

Re Welpelegrino le forum
déjà explique moi grosso modo ce que tu souhaites faire exactement tu veux pouvoir copier un certain nombre de feuille dans un fichier existant c'est bien cela ?? et après le transférer en G:\Transfert\ ?? ou alors tu veux créer un nouveau fichier avec juste les deux feuilles ou avec les nouvelles feuilles choisies dans la listbox1 ???
Car ta macro est brouillonne enfin je pense que c'est une compile de plusieurs bout péché ici est là
expliques stp
a+
papou:eek:
 

Webperegrino

XLDnaute Impliqué
Supporter XLD
Re : Transfert de fichier partiel dans un autre répertoire (choix de feuilles à expor

Paritec,
Merci de me répondre si vite.
Désolé pour la longueur de ce que je vais ici t’expliquer pour que comprennes ce que je désire.
Je te remercie d’ailleurs pour le courage de me suivre dans cette conversation FIL-FORUM.

Ce n’est que par plaisir de « bidouiller dans Excel » et grâce surtout au Forum d’Excel-Download que je voudrais peaufiner avec cette macro mon fichier réel SOURCE que j’utilise dans une association, à titre de bénévole, avec cette fonction de transfert de données partielles sur clef USB par exemple pour exploitation en dehors de l’ordi qui garde le fichier Source.

Je vais aussi aller fureter sur le web pour approfondir et comprendre cette stratégie de Tabl() mise dans les macros ; peut-être me suis-je embarqué trop loin avec cela pour ce fichier, et qu’il existe un procédé plus simple. Pour le moment je continue dans cette conception car je veux comprendre ce que j’ai fait, bien ou mal et je pense que la résolution à 100 % est proche.

Ce fichier source réel fait en réalité 9900 ko avant que toute saisie de données dans la base ne soit faite sur les feuilles Saisies Entrées et feuille Saisies Sorties.

A ) PLACEMENT
L’extraction partielle en fichier copie ne se placera pas nécessairement dans le même répertoire que le fichier source (C:\) où je continuerai à faire mes saisies. D’où la deuxième fenêtre de dialogue dans la macro (un peu comme dans Windows) pour trouver le chemin pour placement dans un dossier et non écrasement d’un fichier existant dans ce dossier destination.

Le vrai objet : Dans quel dernier sous-dossier du chemin dans le dialogue faut-il placer le fichier copié ?
Et non « Quel fichier existant faut-il ouvrir ou écraser par le fichier copié ? »
D’où l’utilisation du nom de fichier-Copie avec date, heure et minutes défini par la macro.

Cette boîte de dialogue n’est peut-être pas la bonne, justement parce que l’on doit valider sur le dossier ou sous-dossier « réceptacle »
(exemple G:\TRANSFERT\WEBPEREGRINO recevra un fichier copié du style Cédric\08mai2012 17h23, et non validation ou double click sur un des fichiers existants comme actuellement (exemple : Cédric.xls dans ce même dossier WEBPEREGRINO).

Il se placera donc à côté des autres, et non à la place de l’un d’eux.

B) PARTICULARITÉ DE LA COPIE
A la fin de chaque macro exécutée :
- le fichier créé se place à l’endroit désiré dans la boîte de dialogue qui apparaîtra,
- ce fichier copié ne restera pas visible à l’écran,
- c’est le fichier Source qui doit demeurer à l’écran (pour continuer le travail et les saisies ultérieures par exemple)
- la macro ne place dans le fichier copie-transfert que les feuilles dont les onglets sont listés dans la fenêtre ListBox1
.
Ainsi le destinataire aura une copie simplifié de mon travail Source :
- sans les macros (j’ai constaté que ça semble déjà fonctionner)
- avec une protection simple "" (j’ai constaté que ça semble déjà fonctionner) et non à mot de passe obligatoire (mon dossier Source étant protégé par mdp sur chaque feuille
- conservation de la possibilité du filtrage sur les feuilles qui en ont dans le fichier Source (j’ai constaté que ça semble déjà fonctionner, on garde donc les formules dans les cellules de totaux de sous-totaux)
- pourvoir ne pas exporte les boutons de macro que j’ai en place sur les feuilles du dossier Source qui seront exportées

C) EXPLOITATION ULTÉRIEURE DE CETTE COPIE
Enfin, par exemple, de mon dossier réel SOURCE de 9 900 ko, dont on fait donc une extraction, le destinataire du fichier copié sera intéressé par :
611 lignes et 14 colonnes dans la feuille ENTRÉES
260 lignes et les 19 premières colonnes dans la feuille SORTIES
157 lignes et 7 colonnes dans la feuille SYNTHÈSE
900 lignes et les 21 premières colonnes de la feuille BALANCE DÉTAILLÉE.

C’est pour cela que j’ai placé une tentative de copie 1ère ligne à DERLIG (Colonne B) car c’est la colonne B qui, à chaque saisie dans les feuilles, reçoit soit une date soit un texte.
Et c’est ainsi que je peux déterminer la zone éventuelle d’extraction pour le fichier-copie pour que celui-ci soit le moins lourd possible.

Quant aux colonnes, tant pis si au-delà de la colonne 21 (comme dans le cas de la feuille Balance détaillée) d’autres informations sont aussi copiées : je ne veux pas exiger cela dans ma macro (réservation pour la copie de la zone de colonnes déjà concernée en « zone d’impression » que j’ai en place dans chaque feuille du dossier Source).

La macro du fichier Source(1) du message précédent s’exporte pour le moment avec TOUTES les feuilles du dossier Source.

Désolé d’avoir été si long dans le message, mais comme tu le demandais…
Merci
Webperegrino
 

Paritec

XLDnaute Barbatruc
Re : Transfert de fichier partiel dans un autre répertoire (choix de feuilles à expor

Bonjour Welpelegrino le forum
bon alors ou je ne suis pas réveillé ou tes explications sont bien compliquées !!! bref
expliques moi voir ce que tu voulais faire dans ce bout de macro
tu veux copier les feuilles sélectionnées de A1 à K et derlig OK mais pourquoi le dire deux fois? et après quel rapport avec le garder le fichier ouvert? quel fichier ouvert? à ce stade de ta macro, de toutes façons, tu n'as qu'un fichier ouvert donc???
Et après là c'est subtile, tu veux ajouter une feuille du nom de la feuille de ou tu veux copier les données et tout cela toujours dans le même classeur????????????????????
Pour tes explications de 100 lignes, je n'ai pas compris, car il faut faire, mais surtout ne pas faire , mais pouvoir le faire, sans savoir qu'on va le faire, et pourtant il faut avoir le choix de le faire et on ne sait pas si c'est bien ou non de le faire!!!!!????
J'ai essayé d'expliquer comme tu m'as expliqué ton classeur.
Donc on va régler les problèmes les un derrière les autres, donc début explication de ci-dessous, de ce que tu veux faire avec ce bout de code et on va avancer pas à pas STP
a+
papou:eek:

Code:
For W = 1 To UBound(Tabl, 2)
        With Sheets(Tabl(1, W))
            DerLig = Sheets(Tabl(1, W)).Range("B" & Rows.Count).End(xlUp).Row + 1
            Sheets(Tabl(1, W)).Range("A1:K" & DerLig).Copy
            Sheets(Tabl(1, W)).Range("A1" & ":K" & DerLig).Copy   'Garder le fichier original ouvert
            'Sheets(Tabl(1, W)).Add
        End With
    Next
 
Dernière édition:

Paritec

XLDnaute Barbatruc
Re : Transfert de fichier partiel dans un autre répertoire (choix de feuilles à expor

Re Welpelegrino le forum
bon pas de réponse alors j'ai fait tout seul tu ouvres tu cliques sur transférer, tu choisis 2 feuilles et tu lis
a+
Papou:eek:

PS: je pars en déplacement jusqu'à dimanche soir alors pour les réponse si j'ai pas de wifi ou je vais tu n'auras pas de réponse
 

Pièces jointes

  • Welpelegrino V3.zip
    42.5 KB · Affichages: 23

Webperegrino

XLDnaute Impliqué
Supporter XLD
Transfert de fichier partiel dans un autre répertoire (choix de feuilles à exporter)

Bonsoir Paritec,
J'arrive enfin à entrer dans cette fenêtre de message (ça bloque tout le temps pour entrer le texte, ça reste grisé et ça refusait de partir).

Voici la procédure sur moins de 20 lignes que je désirais pour le fonctionnement de cette macro :
Étape 1 : Le fichier SOURCE(1).xls reste ouvert à l’écran [sur C:\] pendant l’exécution de la macro.
Étape 2 : La macro est activée par le bouton «Transférer » placé en feuille ACCUEIL.

Cette macro demande quelles feuilles du fichier SOURCE(1) toujours à l’écran de l’ordinateur doivent être récupérées pour un transfert à venir.

On fait le choix de la ou des feuilles à reporter.

[c'est juste ce que tu viens de me joindre comme comception dans le message précédent : super]
Une clef USB étant, par exemple, branchée à l’ordinateur et contenant un dossier appelé TRANSFERT,

le chemin pour y accéder sera donc G:\TRANSFERT\

Étape 3 : La macro réalise une copie avec seulement les feuilles précédemment sélectionnées dans SOURCE (1)

Cette copie [pas nécessairement ouverte à l’écran] va se placer dans le dossier TRANSFERT de la clef USB, dans G:\TRANSFERT [la macro contient un dialogue permettant de définir ce chemin]

La macro a nommé cette copie Cédric 09mai2012 15h10, si possible non affiché à l’écran.

Si le fichier « Cédric 09mai2012 15h10.xls » est paru à l’écran, il est fermé à la fin de l’exécution de la macro.

Étape 4 : Comme avant l’exécution de la macro, le fichier SOURCE(1).xls est resté ouvert à l’écran de l’ordinateur.

On peut continuer à y travailler.

La clef USB contient un fichier dont le chemin d’accès est : G:\TRANSFERT\Cédric 09mai2012 15h10.xls


Voilà. Je dois quitter la région et ne viendrais sur le Forum que Dimanche prochain. Il n'y a rien d'urgent dans ce travail.
En tout cas, Paritec, merci pour toute cette contribution, c'est vraiment très sympathique. Tu as déjà fait beaucoup. A moi d'analyser comment tu as fait.
Bonne route à toi aussi.
Webperegrino
 

Webperegrino

XLDnaute Impliqué
Supporter XLD
[Résolu par Paritec] Transfert de fichier partiel dans un autre répertoire

Bonjour Le Forum,
Bonjour Paritec,

De gros problèmes d'ordinateur ne m'ont pas permis de répondre plus rapidement, malgré plusieurs essais.
Merci Paritec pour la version 4,

J’avais essayé d’avancer depuis mon dernier message : voici d'ailleurs mon approche en version n° 5 ci-jointe, avec un complément de la partie finale de ta macro afin d'automatiser l'export avec le nom de fichier.

J’adopte ta version qui est excellente. J’ai aussi adapté ta dernière version de Private Sub UserForm_Initialize() ; ça fonctionne mieux pour l’archivage du fichier avec les bonnes heures et minutes qui bloquaient en effet chez moi sur 17 h 12. J’arriverai à comprendre l’ensemble de ta macro un jour… besoin de persévérer…

Ça fonctionne très bien. L'application dans le fichier réel fonctionne également.

C’est très sympa à toi de m’avoir aidé, et on pourrait dès maintenant clôturer la discussion sur ce message, bien que je n’arrive pas toujours pas à conserver le filtrage dans le fichier transféré (ceux qui peuvent exister sur certaines feuilles du fichier Source).

Encore merci à ce Forum très sérieux, tout autant que les formateurs que nous y trouvons.

Webperegrino
 

Pièces jointes

  • Webpelegrino V5.xls
    112 KB · Affichages: 45

Paritec

XLDnaute Barbatruc
Re : Transfert de fichier partiel dans un autre répertoire (choix de feuilles à expor

Bonsoir Webperegrino,le forum
Tu peux me traduire STP, ??? Que veux tu dire????
bien que je n’arrive pas toujours pas à conserver le filtrage dans le fichier transféré (ceux qui peuvent exister sur certaines feuilles du fichier Source).
Car pour le moment, pour moi cela ne veux rien dire.
STP une explication simple 2 ou trois lignes pas un roman de 100 lignes.
a+
Papou:eek:
 
Dernière édition:

Webperegrino

XLDnaute Impliqué
Supporter XLD
Re : Transfert de fichier partiel dans un autre répertoire (choix de feuilles à expor

Bonjour Le Forum, Bonjour Paritec. Voici Paritec en 4 lignes :
Précision sur cette notion de Filtrage à conserver dans les feuilles transférées :
1 ) - Un filtre est placé dans la zone de cellules A7 :G7 de la Feuille « Référentiel des Saisie ENTRÉES » du Fichier Source. Cela a été réalisé avec la commande Données_Filtrer_Filtre automatique.
2 ) - Il faudrait conserver ces filtres en zone A7 :G7 de la feuille équivalente dans le fichier transféré.
Merci
Webperegrino
 

Discussions similaires

Statistiques des forums

Discussions
312 298
Messages
2 086 979
Membres
103 419
dernier inscrit
mk29