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
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
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
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
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
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
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
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
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
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
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
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
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
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
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 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
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