Microsoft 365 recherche fichier sans un dossier

pelerin65

XLDnaute Occasionnel
Bonjour le forum,

voila j'avais un fichier excel avec le code suivant

VB:
nomF = Sheets("Tableau de Bord").Range("Q2") '<- adapter éventuellement le nom de la feuille
If nomF <> "" Then
    fichier = Dir(CHEMIN_TR & nomF & ".xls*")
    If Left(fichier, Len(nomF)) = nomF Then
        VREP = MsgBox("Le Fichier" & " " & [Q2] & " " & "existe, l'ouvrir?", vbYesNo)
       If VREP = 6 Then
            Set wb = Workbooks.Open(CHEMIN_TR & fichier)
        End If
     Else
        VREP = MsgBox(fichier & "La tournée" & " " & [Q2] & " " & "n'existe pas, création d'un nouveau fichier ?", vbYesNo)
        If VREP = 6 Then
            Set wb = Workbooks.Open(CHEMIN_FICHIER_TR_BASE)
            wb.SaveAs (CHEMIN_TR & nomF & ".xlsb")
        End If
    End If
End If


J'aimerai pouvoir l'adapter à ce nouveau ficher qui est 100% avec des userform
ca me permets de pouvoir avoir un historique par N° de Tournée

je joins le fichier
 

Pièces jointes

  • Notes.xlsb
    302.1 KB · Affichages: 8

pelerin65

XLDnaute Occasionnel
Bonjour,
A quel moment exécutiez-vous ce code ?
la cellule Q2 correspond à quoi dans le nouveau classeur ?
Re
ça correspond maintenant au label N° de Tournée (LblTournee) dans l'userform "PREPARATION"
ça permettait d avoir toujours un fichier de base vierge
je voudrais lors que je clique sur affiche de l'userform "ACCUEIL", il vérifie s'il existe, si oui, il l'ouvre le fichier trouvé sinon il crée un nouveau fichier avec le numéro de tournée
cordialement
 

patricktoulon

XLDnaute Barbatruc
Bonjour
quand on connait pas le dossier(voir dossier parent ou sub dossier)
avec DIR
on fait un DIR vbdirectory dans une fonction récursive car contrairement au DIR dans le dos il n'est pas récursif

avec une fonction récursive on peut partir de la lettre du disque pour arriver au fichier

cela dit je soupçonne un manque de réflexion dans la conception de l'applicatif
ça aurait du être pensé avant
 

fanch55

XLDnaute Barbatruc
Testez le classeur ci-joint
l'ouverture du classeur externe est effectué au moment de l'initialize de l'userform ou du click sur le label Tournée .
N'oubliez pas de modifier les variables Chemin_Tr et Chemin_Fichier_Tr_Base avec les vrais noms de dossier

VB:
 Private Sub UserForm_Initialize()
  Dim ligne As Long, I As Long, h As Byte, cond, recherche
  Dim x As Integer, ws As Workbook
    .......
     .......
    LblTournee_Click
    Application.ScreenUpdating = True
End Sub
Private Sub LblTournee_Click()
Dim Fichier As String
Dim Wb As Workbook
    Dim Chemin_Tr As String:                             Chemin_Tr = ThisWorkbook.Path & "\"
    Dim Chemin_Fichier_Tr_Base As String:   Chemin_Fichier_Tr_Base = ThisWorkbook.Path & "\Base\Tournée.xlsb"
    Dim nomF As String:                                       nomF = Chemin_Tr & Me.LblTournee & ".xlsb"
    If nomF <> "" Then
        Err.Clear: On Error Resume Next
       ' on vérifie qu'il ne soit pas déjà ouvert
        Set Wb = Application.Workbooks(Me.LblTournee & ".xlsb")
        If Wb Is Nothing Then
            Fichier = Dir(nomF)
            If Fichier <> "" Then
                ' le fichier existe
                If MsgBox("Le Fichier " & Me.LblTournee & " existe" & vbLf _
                       & "l'ouvrir ?", vbQuestion + vbYesNo) = vbYes Then
                    Set Wb = Workbooks.Open(Chemin_Tr & Fichier)
                End If
             Else
                If MsgBox("La tournée " & nomF & "n'existe pas" & vbLf _
                        & "voulez-vous la créer ?", vbQuestion + vbYesNo) = vbYes Then
                    Set Wb = Workbooks.Open(Chemin_Fichier_Tr_Base)
                    Wb.SaveAs (nomF)
                End If
            End If
        Else
            Wb.Activate
        End If
        Application.WindowState = xlNormal
    End If
End Sub
 

Pièces jointes

  • Notes F55.xlsb
    316.2 KB · Affichages: 3

pelerin65

XLDnaute Occasionnel
Re fanch55
je ne sais pas si je suis idiot ou bête
je n'arrive pas changer les chemins
le fichier de base : "C:\Notes 25\00-ESV 702 25\notes.xlsb"
l enregistrement des fichiers : "C:\Notes 25\01-Tounées\"
Vraiment désolé
JL
 

pelerin65

XLDnaute Occasionnel
Bonjour, Fanch55, ChTi160 et le forum

la proposition fanch55 fonctionne maintenant
mais mon idée était que lorsqu'on clic sur afficher dans l'userfrom ACCUEIL
ca fait la même chose que la proposition Fanch55

Je joint les deux fichiers actuellement utilisé
on ouvre en premier Préparation et le deuxième s'ouvre automatiquement
Forcement il faut que le fichier soit dans un dossier et faut un dossier archives
https://www.cjoint.com/c/NEiivo1ggou
https://www.cjoint.com/c/NEiiurFpmVu

cordialement
Attention, c'est une usine à gaz lol

cordialement
JL
 

pelerin65

XLDnaute Occasionnel
Re Bonjour
est ce que cela Fonctionne ?
VB:
Dim Chemin_Tr As String:      Chemin_Tr = "C:\Notes 25\01-Tounées\" 'Dossier ou tu enregistres le Fichier "01-Tounées"
Dim Chemin_Fichier_Tr_Base As String:   Chemin_Fichier_Tr_Base = "C:\Notes 25\00-ESV 702 25\notes.xlsb" 'Le Fichier que tu vas Copier
Dim nomF As String:                                nomF = Chemin_Tr & Me.LblTournee & ".xlsb"

Je n'ai personnellement pas compris le principe . (tu me diras l'important , c'est que toi tu Comprennes Lol)
Tu veux Archiver , enregistrer un Fichier "Note.xlsb" (est ce le fichier a partir duquel tu travailles ?
n'est ce pas les données de la Feuille "Journal" que tu veux archiver ? ( avec le Nom de la Tournée )
Bonne Journée
Jean marie
Bonjour,
l'idée c est d'avoir toujours une fichier de base vierge et lorsqu'on qu'on commence une journée, on crée un fichier avec le N° de Tournée.
j'ai poster les deux fichiers actuellement utilisés
JL
 

pelerin65

XLDnaute Occasionnel
Bonjour
quand on connait pas le dossier(voir dossier parent ou sub dossier)
avec DIR
on fait un DIR vbdirectory dans une fonction récursive car contrairement au DIR dans le dos il n'est pas récursif

avec une fonction récursive on peut partir de la lettre du disque pour arriver au fichier

cela dit je soupçonne un manque de réflexion dans la conception de l'applicatif
ça aurait du être pensé avant
Bonjour Patrick Toulon,

C est surement vrai
Mais Jai aucune connaissances du VBA
J'essaie D'apprendre avec les forums.
J'aurais tant aimé apprendre plus jeune le vba, aujourd'hui j ai un mal fou a retenir ce que j'ai déjà crée LOL
les choses simples ça va encore mais dés que ca devient complexe dur,dur!!!
voila
 

fanch55

XLDnaute Barbatruc
Re fanch55
je ne sais pas si je suis idiot ou bête
je n'arrive pas changer les chemins
le fichier de base : "C:\Notes 25\00-ESV 702 25\notes.xlsb"
l enregistrement des fichiers : "C:\Notes 25\01-Tounées\"
Vraiment désolé
JL
VB:
Private Sub LblTournee_Click()
Dim Fichier As String
Dim Wb As Workbook
    Dim Chemin_Tr As String:                             Chemin_Tr = "C:\Notes 25\01-Tournées\"
    Dim Chemin_Fichier_Tr_Base As String:   Chemin_Fichier_Tr_Base = "C:\Notes 25\00-ESV 702 25\notes.xlsb"
    Dim nomF As String:                                       nomF = Chemin_Tr & Me.LblTournee & ".xlsb"
    If nomF <> "" Then
        Err.Clear: On Error Resume Next
       ' on vérifie qu'il ne soit pas déjà ouvert
        Set Wb = Application.Workbooks(Me.LblTournee & ".xlsb")
        If Wb Is Nothing Then
            Fichier = Dir(nomF)
            If Fichier <> "" Then
                ' le fichier existe
                If MsgBox("Le Fichier " & Me.LblTournee & " existe" & vbLf _
                       & "l'ouvrir ?", vbQuestion + vbYesNo) = vbYes Then
                    Set Wb = Workbooks.Open(Chemin_Tr & Fichier)
                End If
             Else
                If MsgBox("La tournée " & nomF & "n'existe pas" & vbLf _
                        & "voulez-vous la créer ?", vbQuestion + vbYesNo) = vbYes Then
                    Set Wb = Workbooks.Open(Chemin_Fichier_Tr_Base)
                    Wb.SaveAs (nomF)
                End If
            End If
        Else
            Wb.Activate
        End If
        Application.WindowState = xlNormal
    End If
End Sub
 

ChTi160

XLDnaute Barbatruc
Bonsoir
Juste par Curiosité !
tu auras par exemple :
VB:
nomF = "C:\Notes 25\01-Tournées\SE18A.xlsb"
qui sera ouvert ou Créer
Cela ce fait en Fin de Journée ou quand tu le veux ?
Ce fichier "SE18A.xlsb" va servir à quoi ? que va t'il contenir ?
tu dis :
l'idée c est d'avoir toujours une fichier de base vierge
Tu pourrais avoir , dans le Dossier qui va contenir les Fiches ,Un fichier vierge nommé par exemple "Modele Fiche" dont tu pourrais faire Une Copie à chaque création de Fiche !
Bonne fin de Journée
Jean marie
 

ChTi160

XLDnaute Barbatruc
Re
Un exemple de ce que pourrait être la procédure de Création de la Fiche (exemple : Fichier "SE18A.xlsb" )
cela peut être adapter pour répondre à la demande !
Code:
Option Explicit

Sub CreerApartirdeModele()
    Dim PathDossier As String
    Dim PathModele As String
    Dim PathFichierCreer As String
    Dim Rep
    'le dossier "01-Tournées " se trouve dans le Même Dossier que le Fichier "Notes"
    ' Définir le chemin du dossier
    PathDossier = ThisWorkbook.Path & "\01-Tournées\"
    'le fichier "Modele Fiche.xlsb" se trouve dans le dossier "01-Tournées"
    ' Définir le chemin du fichier modèle
    PathModele = PathDossier & "Modele Fiche.xlsb"
    
    ' Définir le chemin de la Copie du Fichier "Modele Fiche.xlsb" que l'on va renommer "SE18A" avec l'extension ".xlsb"
    PathFichierCreer = PathDossier & "SE18A.xlsb"
    
    ' Vérifier si le fichier cible existe déjà
        If Dir(PathFichierCreer) <> "" Then
        ' Demander à l'utilisateur s'il veut ouvrir le fichier déjà existant
        Rep = MsgBox("Le fichier existe déjà. Voulez-vous l'ouvrir ?", vbQuestion + vbYesNo)
        ' Vérifier si Ok
        If Rep = vbYes Then
            ' Ouvrir le fichier
            Workbooks.Open PathFichierCreer
                   Else
            MsgBox "Le fichier existe mais n'a pas été ouvert ! ", vbInformation
        End If
        Exit Sub
    End If
    
    ' On Copie et on renomme le fichier modèle
    With CreateObject("Scripting.FileSystemObject")
        .CopyFile PathModele, PathFichierCreer
    End With
    
                MsgBox "Le fichier modèle a été copié et renommé avec succès.", vbInformation 'on informe de la création
End Sub
Bonne fin de Soirée
Jean marie
 

pelerin65

XLDnaute Occasionnel
Re
Un exemple de ce que pourrait être la procédure de Création de la Fiche (exemple : Fichier "SE18A.xlsb" )
cela peut être adapter pour répondre à la demande !
Code:
Option Explicit

Sub CreerApartirdeModele()
    Dim PathDossier As String
    Dim PathModele As String
    Dim PathFichierCreer As String
    Dim Rep
    'le dossier "01-Tournées " se trouve dans le Même Dossier que le Fichier "Notes"
    ' Définir le chemin du dossier
    PathDossier = ThisWorkbook.Path & "\01-Tournées\"
    'le fichier "Modele Fiche.xlsb" se trouve dans le dossier "01-Tournées"
    ' Définir le chemin du fichier modèle
    PathModele = PathDossier & "Modele Fiche.xlsb"
   
    ' Définir le chemin de la Copie du Fichier "Modele Fiche.xlsb" que l'on va renommer "SE18A" avec l'extension ".xlsb"
    PathFichierCreer = PathDossier & "SE18A.xlsb"
   
    ' Vérifier si le fichier cible existe déjà
        If Dir(PathFichierCreer) <> "" Then
        ' Demander à l'utilisateur s'il veut ouvrir le fichier déjà existant
        Rep = MsgBox("Le fichier existe déjà. Voulez-vous l'ouvrir ?", vbQuestion + vbYesNo)
        ' Vérifier si Ok
        If Rep = vbYes Then
            ' Ouvrir le fichier
            Workbooks.Open PathFichierCreer
                   Else
            MsgBox "Le fichier existe mais n'a pas été ouvert ! ", vbInformation
        End If
        Exit Sub
    End If
   
    ' On Copie et on renomme le fichier modèle
    With CreateObject("Scripting.FileSystemObject")
        .CopyFile PathModele, PathFichierCreer
    End With
   
                MsgBox "Le fichier modèle a été copié et renommé avec succès.", vbInformation 'on informe de la création
End Sub
Bonne fin de Soirée
Jean marie
Bonjour ChTi160,
le code je le mets dans quelle userform??
Cordialement
JL
 

ChTi160

XLDnaute Barbatruc
Bonjour Jean Luc
Sur quel userform travailles tu ?
"Préparation" non ?
Ensuite tu peux, adapter au click sur un bouton ou sur le label "tournee"
Comment vas tu utiliser cette procédure ?
Etc etc ,
Tu poses beaucoup de questions ,mais tu ne réponds pas aux miennes. #11 par exemple.
Bonne fin de journée
Jean marie
 
Dernière édition:

pelerin65

XLDnaute Occasionnel
Bonjour Jean Luc
Sur quel userform travailles tu ?
"Préparation" non ?
Ensuite tu peux, adapter au click sur un bouton ou sur le label "tournee"
Comment vas tu utiliser cette procédure ?
Etc etc ,
Tu poses beaucoup de questions ,mais tu ne réponds pas aux miennes. #11 par exemple.
Bonne fin de journée
Jean marie
Bonjour ChTi160

J'aurais voulu pour l'utiliser avec l'Userform "ACCUEIL" avec le Bouton "AFFICHER" (en le renommant CREER FICHIER" par exemple).
C'est vrai que l'idée est dans ma tête, mais l'utilisation de ce fichier sera utilisé par une 20 éme de collègues Donc, il serait mieux qu'il se renomme à sa Création.
Mais le problème qui se pose, c'est que la cellule qui sert à renommer le fichier est dans le l'Userform "Préparation".
Voilà ChTI160
Je vous fait Travailler le code avec mes demandes.
Et vous remercie de votre aide
Cordialement
JL
 

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
314 708
Messages
2 112 097
Membres
111 416
dernier inscrit
philipperoy83