Choix d'un classeur par msgbox à partir d'une macro

didus

XLDnaute Occasionnel
Bonjour,

J'ai passé une partie de mon aprés'm à chercher, en désespoir, je poste cette question qui va sans doute paraitre idiote à beaucoup...
Dans une macro qui doit reprendre des valeurs d'un tableau situé dans un classeur dont le nom varie, je voudrais que l'utilisateur soit sollicité pour choisir ce classeur, l'idéal serait une boite de message qui affiche l'explorateur, dans le bon répertoire si possible (ex:K:\ch1\sch1\) et permette la sélection par l'opérateur du bon classeur dont le nom serait repris pour la suite des opérations (nomclasseur) et refermé sans modifications en fin de traitement.

La macro en cours, c'est la zone ??? qui me manque ;-))

elle est dans le classeur joint

D'avance merci
 

Pièces jointes

  • Classeur a mettre a jour.xls
    32.5 KB · Affichages: 76
Dernière édition:

tototiti2008

XLDnaute Barbatruc
Re : Choix d'un classeur par msgbox à partir d'une macro

Bonjour didus,

à la place des ???

Code:
 Dim nomclasseur As String, FD As FileDialog
   
    Set FD = Application.FileDialog(msoFileDialogOpen)
    With FD
        .AllowMultiSelect = False
        .Filters.Clear
        .Filters.Add "Fichier Excel", "*.xls, *.xlsx, *.xlsm", 1
        .InitialFileName = "K:\ch1\sch1\"
        If .Show = -1 Then
            nomclasseur = .SelectedItems(1)
        Else
            Exit Sub
        End If
    End With

Je ne me suis pas trop occupé de la suite du traitement
 

Minick

XLDnaute Impliqué
Re : Choix d'un classeur par msgbox à partir d'une macro

Salut,

Quelque chose comme ca...
Code:
   ChDir "K:\ch1\sch1\"
   nomclasseur = Application.GetOpenFilename("Fichiers Excel,*.xls")
   If Dir(nomclasseur) <> "" Then
   .
   .
   Ton code
   .
   .
   End If
 

didus

XLDnaute Occasionnel
Re : Choix d'un classeur par msgbox à partir d'une macro

Bonjour,

Tototiti et Minick, merci pour vos réponses rapides!

C'est avec plaisir que j'ai vu que nous nous étions bien compris, ma demande devait être claire et votre interprétation sans faille, tout simplement.

Vos deux propositions fonctionnent, la première me place correctement dans le répertoire, la seconde me laisse dans le répertoire en cours, seul bémol.

Donc tout va bien jusqu'à la fin où j'ai un message d'erreur, du à mon code, en effet la valeur nommée nomclasseur est erronée puisque elle est constituée du chemin ET du nom du classeur, à la fin de mon code, j'utilise la fonction
Windows(nomclasseur).Activate
Qui ne fonctionne pas, naturellement, car nomclasseur n'est pas QUE le nom du classeur.
Dans le code j'ai donc renommé nomclasseur en cheminetnomclasseur et créé une seconde variable nomclasseur pour définir uniquement le nom du classeur pour la suite du code.
Je vais chercher la syntaxe du code que je n'ai pas encore trouvé pour définir le nom du classeur choisi, en effet, je ne parle pas beaucoup le VB et travaille par mimétisme, ou assistance :rolleyes:

Un immense merci pour votre analyse rapide et efficace.

Cordialement
 
Dernière édition:

Minick

XLDnaute Impliqué
Re : Choix d'un classeur par msgbox à partir d'une macro

Salut,

Au temps pour moi, je n'avais pas tenu compte du fait que tu ne serais pas forcement sur le lecteur K.

Ca devrait mieux passer avec:
Code:
   ChDrive "k"
   ChDir "K:\ch1\sch1\"
   nomclasseur = Application.GetOpenFilename("Fichiers Excel,*.xls")
   If Dir(nomclasseur) <> "" Then
   .
   .
   Ton code
   .
   .
   End If
Et pour ne retrouver que le nom du classeur essaie ceci
Code:
nomclasseur = Mid(nomclasseur, InStrRev(nomclasseur, "\") + 1)
 

didus

XLDnaute Occasionnel
Re : Choix d'un classeur par msgbox à partir d'une macro

Bonjour,

Voilà, c'est tout bon, le classeur est bien nommé, la mise en forme, puis la copie des données se déroulent bien, la procédure retourne ensuite correctement sur la feuille source sans plus d'erreur, puis la ferme.
Impeccable!

J'ai monté deux macros sur vos conseils respectifs, en choisissant correctement mes fichiers les résultats sont similaires, je n'ai pas testé le mode "utilisateur fou" pour pousser les macros dans leurs derniers retranchements.

Pour parfaire l'usage de la macro, lors de la fermeture j'ai deux messages concernant la fermeture du classeur source, que je souhaite pas modifier et la conservation ou non des données du presse papier.
Pour ces deux questions la personne qui extrait les données doit répondre non, pas très compliqué mais ce serait mieux si ces options étaient inclues dans la macro.

Juré, c'est ma dernière petite question, j'ai un peu honte car j'ai l'impression de tirer le fil de l'assistance... :confused:

Dernière remarque, ce serait sans doute un plus de mettre les macros finales dans un message, elle ne sont pas très longues et une fois adaptées pourraient servir à d'autres car je n'ai pas trouvé de post direct sur ce sujet dans le forum.

merci encore pour votre réactivité et la pertinence de vos lignes de code.
 
Dernière édition:

tototiti2008

XLDnaute Barbatruc
Re : Choix d'un classeur par msgbox à partir d'une macro

Bonjour didus, Bonjour Minick,

Et pour ne retrouver que le nom du classeur essaie ceci
Code :
nomclasseur = Mid(nomclasseur, InStrRev(nomclasseur, "\") + 1)

ou bien
Code:
nomclasseur = Dir(nomclasseur)
:)

Sinon pour vider le "presse-papier"

Code:
Application.Cutcopymode = False

et pour fermer un classeur sans l'enregistrer

Code:
workbooks(nomclasseur).close false
 

didus

XLDnaute Occasionnel
Re : Choix d'un classeur par msgbox à partir d'une macro

Trop trop fort, j'avais fait une phaute d'orthographe que je n'ai même pas eu le temps de rectifier avant la réponse, vu mon grand age, je suis un peu mou, soit, mais cela n'explique pas tout...

tototiti2008, je te propose un complément à ton nom, BipBip... :eek:

Maintenant, je teste et je poste les deux macros en clôture (j'ai très peu de doutes sur la fonctionnalité du code soumis) :D

Cordialement
 

didus

XLDnaute Occasionnel
Re : Choix d'un classeur par msgbox à partir d'une macro

Bonsoir,

Royal!

voici le contenu des deux macros dans deux fichiers texte (pour ne pas alourdir le post).
J'ai remplacé mon nom de fichier par source , pour plus de lisibilité, avec des commentaires.

merci encore
 

Pièces jointes

  • macros.zip
    1.7 KB · Affichages: 46
  • macros.zip
    1.7 KB · Affichages: 46
  • macros.zip
    1.7 KB · Affichages: 47

didus

XLDnaute Occasionnel
Re : Choix d'un classeur par msgbox à partir d'une macro

Bonjour, Pour moi le sujet est traité, ne faudrait-il pas l'annoter pour le passer en statut résolu par exemple?
si oui, comment réaliser cette opération.

Merci
 

Discussions similaires

Réponses
15
Affichages
850
Compte Supprimé 979
C

Statistiques des forums

Discussions
312 492
Messages
2 088 893
Membres
103 982
dernier inscrit
krakencolas