XL 2019 Userform imbriquée

julien1982

XLDnaute Occasionnel
Bsr a tous,
je suis en train de créer un fichier me permettant de gérer la création de bordereaux d'envoi pour mes différents clients et j'aurai besoin de votre aide pour la réalisation de ce fichier.

1- le plus important pour moi, dans la userform "accueil" quand je clique sur nouvelle affaire cela ouvre une autre userform "FrmSaisie" qui me permet de remplir l'onglet "Liste Affaires", le seul problème c'est que je ne sais pas comment faire pour dans les 2 txtbox "TxtChemAffaire" et "TxtChemPCE" je puisses récupérer le chemin ou sera enregistrer l'affaire (chemin affaire) et également le chemin d'un fichier spécifique (chemin PCE) en allant pointer un dossier pour la premiere et un fichier pour la seconde.

2- j'aimerai qu'à l'ouverture de mon fichier celui s'ouvre puis affiche la Userform "Accueil" en masquant le fichier Excel, j'arrive à le lancer et ouvrir la userform mais pas cacher le fichier...

3- J'aimerai egalement creer un bouton "retour Excel" me permettant de revenir sur le fichier si besoin...

En espérant etr assez clair.

Merci bp pour votre aide par avance.

Julien
 

Pièces jointes

  • Creation Bordereau.xlsm
    47.3 KB · Affichages: 15

Dudu2

XLDnaute Barbatruc
Bonjour,

1 - récupérer le chemin ou sera enregistrer l'affaire (chemin affaire) et également le chemin d'un fichier spécifique (chemin PCE) en allant pointer un dossier pour la premiere et un fichier pour la seconde.
Si tu ne le sais pas comment veux-tu qu'on sache où se trouvent ces informations ?

2- j'aimerai qu'à l'ouverture de mon fichier celui s'ouvre puis affiche la Userform "Accueil" en masquant le fichier Excel
3- J'aimerai egalement creer un bouton "retour Excel" me permettant de revenir sur le fichier si besoin...
Ça ce n'est pas du tout simple à faire. J'ai réussi à le faire en utilisant l'API.
Mais, le résultat est que le UserForm va s'afficher sur l'application précédemment (à Excel) active ou sur le bureau si toutes les autres applications on été préalablement minimisées. Je ne vois pas trop l'intérêt.
 

Pièces jointes

  • VBA Afficher UserForm en réduisant Excel.xlsm
    20.7 KB · Affichages: 7

julien1982

XLDnaute Occasionnel
Bonjour,


Si tu ne le sais pas comment veux-tu qu'on sache où se trouvent ces informations ?


Ça ce n'est pas du tout simple à faire. J'ai réussi à le faire en utilisant l'API.
Mais, le résultat est que le UserForm va s'afficher sur l'application précédemment (à Excel) active ou sur le bureau si toutes les autres applications on été préalablement minimisées. Je ne vois pas trop l'intérêt.
Bjr, pour ce qui est des informations je sais évidemment ou elles se trouvent, je veux juste que lorsque je clique sur le bouton cela m'ouvre une fenêtre pour aller chercher et cliquer sr mon dossier ou fichier (comme si tu cliques sur "ouvrir" dans n'importe quel logiciel.
Pour le reste, notamment l'ouverture de la userform et cacher le fichier je pensais faire comme ceci dans "thisWoorbook:

Private Sub Workbook_Open()
Application.Visible = False
UserForm1.Show False
End Sub
 

Dudu2

XLDnaute Barbatruc
comme si tu cliques sur "ouvrir" dans n'importe quel logiciel.
Si tu cliques sur un logiciel ça l'ouvre / exécute.
Je ne suis pas sûr de comprendre.
Tu veux cliquer sur un bouton et ouvrir le fichier ? Excel ?
Ou cliquer sur un bouton et ouvrir le répertoire qui contient le fichier dans une fenêtre de l'explorateur de fichiers ?
Ou cliquer sur un bouton et ouvrir une fenêtre de l'explorateur de fichiers pour naviguer et sélectionner le répertoire qui contient le fichier ?

Concernant l'option Application.Visible = False, c'est en effet beaucoup plus simple mais tous les classeurs ouverts sont masqués.

Edit: Et t'as intérêt à rendre Excel visible à la fermeture du UserForm sinon, tu as Excel qui tourne et tu ne le vois / sais pas. Fichier modifié pour ça.
 

Pièces jointes

  • Classeur1.xlsm
    13.9 KB · Affichages: 2
Dernière édition:

Dudu2

XLDnaute Barbatruc
Ou alors plutôt en jouant sur le paramètre .Visible de la Window qui ne masque pas totalement Excel mais grise la feuille. Ça évite de se retrouver avec le UserForm affiché sur une autre application.

Edit: Idem pour ce fichier
 

Pièces jointes

  • Classeur1b.xlsm
    14.2 KB · Affichages: 9
Dernière édition:

julien1982

XLDnaute Occasionnel
Ou alors plutôt en jouant sur le paramètre .Visible de la Window qui ne masque pas totalement Excel mais grise la feuille. Ça évite de se retrouver avec le UserForm affiché sur une autre application.

Edit: Idem pour ce fichier
Bonjour Dudu2, super ca! ca me va, je viens de tester c'est. En effet, cela m’évite d'avoir excel qui se ferme et tous mes classeurs avec.

Ci joint un exemple pour les 2 autres demande, ca sera plus claire je pense.
 

Pièces jointes

  • Exemple.png
    Exemple.png
    71.8 KB · Affichages: 28

Dudu2

XLDnaute Barbatruc
Et les bouts de code que j'ai dû corriger pour le postionnement intitial sur le répertoire éventuellement passé en paramètre optionnel.
VB:
Sub Test()
    MsgBox SélectionRépertoire("F:\Téléchargements\")
    'MsgBox SélectionFichier("F:\Téléchargements\")
End Sub
VB:
'-------------------------
'Sélection d'un répertoire
'-------------------------
Function SélectionRépertoire(Optional Répertoire As String = "") As String
    With Application.FileDialog(msoFileDialogFolderPicker)
        'Répertoire doit se terminer par '\'
        If Len(Répertoire) > 0 Then .InitialFileName = IIf(Right(Répertoire, 1) = "\", Répertoire, Répertoire & "\")
        .AllowMultiSelect = False
        .Show
        If .SelectedItems.Count = 0 Then Exit Function
        SélectionRépertoire = .SelectedItems(1)
    End With
End Function

'----------------------
'Sélection d'un fichier
'----------------------
Function SélectionFichier(Optional Répertoire As String = "") As String
    With Application.FileDialog(msoFileDialogFilePicker)
        'Répertoire doit se terminer par '\'
        If Len(Répertoire) > 0 Then .InitialFileName = IIf(Right(Répertoire, 1) = "\", Répertoire, Répertoire & "\")
        .AllowMultiSelect = False
        .Show
        If .SelectedItems.Count = 0 Then Exit Function
        SélectionFichier = .SelectedItems(1)
    End With
End Function
 
Dernière édition:

julien1982

XLDnaute Occasionnel
Ou alors plutôt en jouant sur le paramètre .Visible de la Window qui ne masque pas totalement Excel mais grise la feuille. Ça évite de se retrouver avec le UserForm affiché sur une autre application.

Edit: Idem pour ce fichier
re, je viens de tester et je me retrouve avec ce msg d'erreur...

1649077294485.png
 

julien1982

XLDnaute Occasionnel
Ça j'ai bien compris.
Mais pourquoi tu n'arrives pas à me dire quel est ce message ?
Ou mieux, à envoyer le fichier.
Est-ce que mon classeur du Post #5 fonctionne chez toi ? Ou bien est-ce ce fichier qui plante ?
Je suis sur le téléphone pr répondre c'est pr cela que je ne peux pas transmettre le fichier. la. Ton fichier classeur1b fonctionne chez moi je l'ai essayé qd tu la posté.
 

Discussions similaires

Statistiques des forums

Discussions
314 662
Messages
2 111 640
Membres
111 242
dernier inscrit
Oyam