Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

(vba) erreur (?) de path !

2 réponses
Avatar
j-pascal
Bonsoir,

Dans "ThisWorkbook" j'ai le code suivant :

With ThisWorkbook
ChDir .Path

(PS : je mets tout le code de ThisWorkbook à la fin ...)

... ce qui me permet d'enregistrer le classeur (en copie) dans le répertoire
où il a été ouvert. Le lecteur est un sous répertoire de C:\

Pb : J'ai un procédure dans un UF qui me permet d'exporter un Gif dans un
répertoire différent situé sous G:\
Ce que je ne comprends pas, c'est que mon classeur s'enregistre bien là où
il faut à la fermeture avec sa copie, mais dès lors que j'exporte le Gif
vers G, si je ferme le classeur, l'original s'enregistre bien sous C, mais
la copie du classeur sous G avec le Gif !!!
Je n'y comprends absolument rien !

Merci d'avance pour vos lumières !

Cordialement,

JP

PS : Tout le code de ThisWorkbook :

'-----------------------------
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As
Boolean)
Dim tst As Variant
Dim Sh As Worksheet

ThisWorkbook.Unprotect ""
Application.EnableEvents = False

If SaveAsUI Then
MsgBox "Désolé, l'option Enregistrer sous... est impossible !", _
vbExclamation, "choix possibles : Enregistrer ou Fermer"
Cancel = True
Else
tst = MsgBox("Voulez-vous enregistrer une copie sous la forme : " _
& "Date Heure Fichier.xls" & " ?", vbYesNo)

With ThisWorkbook
ChDir .Path
If tst = 6 Then
.SaveCopyAs Format(Now, "yyyymmmdd-hh""h""nn") & " " &
.Name
Else
Cancel = True
End If
End With
End If

Application.EnableCancelKey = xlDisabled
Application.ScreenUpdating = False

Feuil15.Visible = xlSheetVisible 'Sheets("accueil").Visible 'éviter !

For Each Sh In ThisWorkbook.Sheets
Sh.Protect userinterfaceonly:=True 'indispensable ?
If Sh.CodeName <> "Feuil15" Then
Sh.Visible = xlSheetVeryHidden
End If
Next

End Sub

Private Sub Workbook_SheetActivate(ByVal Sh As Object)

If Sh.Index >= 5 And Sh.Index <= 16 Then

MsgBox "Vous allez saisir des données dans * " & Sh.Name & " *",
vbOKOnly + vbInformation, _
"Attention !" 'MsgBox Sh.Name

If Range("C9") = 0 Then
Range("C9").Select
Else
If Range("C10") = 0 And Range("C9") <> 0 Then
Range("C10").Select
Else
Range("C9").End(xlDown).Offset(1, 0).Select
End If
End If
End If

End Sub
'-----------------------------

2 réponses

Avatar
Daniel.C
Bonsoir.
Je pense que ton problème vient du fait que, lorsque tu enregistres ton gif,
tu écris :
chdrive "g"
Avant d'effectuer la commande Chdir, il faut écrire :
chdrive "c"
Faute de quoi, Chdir ne s'effectue pas sans provoquer d'erreur.
Cordialement.
Daniel
"j-pascal" a écrit dans le message de news:

Bonsoir,

Dans "ThisWorkbook" j'ai le code suivant :

With ThisWorkbook
ChDir .Path

(PS : je mets tout le code de ThisWorkbook à la fin ...)

... ce qui me permet d'enregistrer le classeur (en copie) dans le
répertoire où il a été ouvert. Le lecteur est un sous répertoire de C:

Pb : J'ai un procédure dans un UF qui me permet d'exporter un Gif dans un
répertoire différent situé sous G:
Ce que je ne comprends pas, c'est que mon classeur s'enregistre bien là où
il faut à la fermeture avec sa copie, mais dès lors que j'exporte le Gif
vers G, si je ferme le classeur, l'original s'enregistre bien sous C, mais
la copie du classeur sous G avec le Gif !!!
Je n'y comprends absolument rien !

Merci d'avance pour vos lumières !

Cordialement,

JP

PS : Tout le code de ThisWorkbook :

'-----------------------------
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As
Boolean)
Dim tst As Variant
Dim Sh As Worksheet

ThisWorkbook.Unprotect ""
Application.EnableEvents = False

If SaveAsUI Then
MsgBox "Désolé, l'option Enregistrer sous... est impossible !", _
vbExclamation, "choix possibles : Enregistrer ou Fermer"
Cancel = True
Else
tst = MsgBox("Voulez-vous enregistrer une copie sous la forme : " _
& "Date Heure Fichier.xls" & " ?", vbYesNo)

With ThisWorkbook
ChDir .Path
If tst = 6 Then
.SaveCopyAs Format(Now, "yyyymmmdd-hh""h""nn") & " " &
.Name
Else
Cancel = True
End If
End With
End If

Application.EnableCancelKey = xlDisabled
Application.ScreenUpdating = False

Feuil15.Visible = xlSheetVisible 'Sheets("accueil").Visible 'éviter !

For Each Sh In ThisWorkbook.Sheets
Sh.Protect userinterfaceonly:=True 'indispensable ?
If Sh.CodeName <> "Feuil15" Then
Sh.Visible = xlSheetVeryHidden
End If
Next

End Sub

Private Sub Workbook_SheetActivate(ByVal Sh As Object)

If Sh.Index >= 5 And Sh.Index <= 16 Then

MsgBox "Vous allez saisir des données dans * " & Sh.Name & " *",
vbOKOnly + vbInformation, _
"Attention !" 'MsgBox Sh.Name

If Range("C9") = 0 Then
Range("C9").Select
Else
If Range("C10") = 0 And Range("C9") <> 0 Then
Range("C10").Select
Else
Range("C9").End(xlDown).Offset(1, 0).Select
End If
End If
End If

End Sub
'-----------------------------



Avatar
j-pascal
Bonsoir Daniel,

Merci ++++++++++++++++++++++++++
Tu as parfaitement résolu mon pb et cela m'a mis de très bonne humeur pour
la journée car ce petit "bugue" me contrariait beaucoup ...
Merci ++++++++++++++++++++++++++

JP

"Daniel.C" a écrit dans le message de news:
ONP$
Bonsoir.
Je pense que ton problème vient du fait que, lorsque tu enregistres ton
gif, tu écris :
chdrive "g"
Avant d'effectuer la commande Chdir, il faut écrire :
chdrive "c"
Faute de quoi, Chdir ne s'effectue pas sans provoquer d'erreur.
Cordialement.
Daniel
"j-pascal" a écrit dans le message de news:

Bonsoir,

Dans "ThisWorkbook" j'ai le code suivant :

With ThisWorkbook
ChDir .Path

(PS : je mets tout le code de ThisWorkbook à la fin ...)

... ce qui me permet d'enregistrer le classeur (en copie) dans le
répertoire où il a été ouvert. Le lecteur est un sous répertoire de C:

Pb : J'ai un procédure dans un UF qui me permet d'exporter un Gif dans un
répertoire différent situé sous G:
Ce que je ne comprends pas, c'est que mon classeur s'enregistre bien là
où il faut à la fermeture avec sa copie, mais dès lors que j'exporte le
Gif vers G, si je ferme le classeur, l'original s'enregistre bien sous C,
mais la copie du classeur sous G avec le Gif !!!
Je n'y comprends absolument rien !

Merci d'avance pour vos lumières !

Cordialement,

JP

PS : Tout le code de ThisWorkbook :

'-----------------------------
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As
Boolean)
Dim tst As Variant
Dim Sh As Worksheet

ThisWorkbook.Unprotect ""
Application.EnableEvents = False

If SaveAsUI Then
MsgBox "Désolé, l'option Enregistrer sous... est impossible !", _
vbExclamation, "choix possibles : Enregistrer ou Fermer"
Cancel = True
Else
tst = MsgBox("Voulez-vous enregistrer une copie sous la forme : "
_
& "Date Heure Fichier.xls" & " ?", vbYesNo)

With ThisWorkbook
ChDir .Path
If tst = 6 Then
.SaveCopyAs Format(Now, "yyyymmmdd-hh""h""nn") & " " &
.Name
Else
Cancel = True
End If
End With
End If

Application.EnableCancelKey = xlDisabled
Application.ScreenUpdating = False

Feuil15.Visible = xlSheetVisible 'Sheets("accueil").Visible 'éviter !

For Each Sh In ThisWorkbook.Sheets
Sh.Protect userinterfaceonly:=True 'indispensable ?
If Sh.CodeName <> "Feuil15" Then
Sh.Visible = xlSheetVeryHidden
End If
Next

End Sub

Private Sub Workbook_SheetActivate(ByVal Sh As Object)

If Sh.Index >= 5 And Sh.Index <= 16 Then

MsgBox "Vous allez saisir des données dans * " & Sh.Name & " *",
vbOKOnly + vbInformation, _
"Attention !" 'MsgBox Sh.Name

If Range("C9") = 0 Then
Range("C9").Select
Else
If Range("C10") = 0 And Range("C9") <> 0 Then
Range("C10").Select
Else
Range("C9").End(xlDown).Offset(1, 0).Select
End If
End If
End If

End Sub
'-----------------------------