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

Chemin dans le VBA et TSE

2 réponses
Avatar
Sunburn
Bonjour,
j'ai une macro, qui me permet d'aller chercher un fichier Excel, en ouvrant
une boite de dialogue sous le dossier où se trouve mon fichier.
sur un poste normal, tout va bien.
Par contre, en fonctionnement TSE, ça plante là, et je sais pas pourquoi :
-------
ChDrive (Mid(ActiveWorkbook.path, 1, 1))
-----
Merci de votre aide.
YANN
---
Sub IMPORTBAL()
Dim Fichier As String, X
Dim DerLig As Long, DerCol As Integer
Dim Chemin As String, Wk As Workbook
rep = MsgBox("Est-ce une balance qui provient de PGI ?", vbYesNo)
If rep = vbYes Then
[BalPGI] = 1
Else
[BalPGI] = 0
End If
If MsgBox("Ce module va vous permettre d'importer une balance en choisissant
le " & _
"fichier de votre choix." & vbLf & vbLf & _
"Attention, votre balance à importer doit être correcte au niveau des
colonnes." & vbLf & _
"Pour cela, veuillez vous référer au manuel de procédure de REVIS'HOCHE"
& vbLf & vbLf & _
"Les colonnes doivent être identique à la feuille 'GA10' de ce fichier"
& vbLf & vbLf & _
"Etes-vous sûr de vouloir continuer ?", vbYesNo) = vbNo Then
Exit Sub
End If
'onglet Balances GA10
With Sheets("GA10")
.[A3:F3000].Value = "" 'effacement
End With
Chemin = ActiveWorkbook.path
If Chemin = "" Then
Chemin = Application.DefaultFilePath
End If
ChDrive (Mid(ActiveWorkbook.path, 1, 1)) '*************PLANTAGE******
ChDir (Chemin)
Application.ScreenUpdating = False
Fichier = Application.GetOpenFilename("(*.xls),xls", , , , False)
If TypeName(Fichier) = "Boolean" Then
MsgBox "Opération annulée. Aucun fichier sélectionné"
Exit Sub
Else
Set Wk = Workbooks.Open(Fichier)
End If
With Wk.ActiveSheet
DerLig = .Cells.Find(What:="*", _
LookIn:=xlFormulas, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious).Row
DerCol = .Cells.Find(What:="*", _
LookIn:=xlFormulas, _
SearchOrder:=xlByColumns, _
SearchDirection:=xlPrevious).Column
X = .Range(.Range("A2"), .Cells(DerLig, DerCol))
End With
With ThisWorkbook.Sheets("GA10")
.Range("A3").Resize(UBound(X, 1)).ClearContents
.Range("A3").Resize(UBound(X, 1)).NumberFormat = "General"
.Range("A3").Resize(UBound(X, 1), UBound(X, 2)) = X
End With
Wk.Close False
End Sub
-------

2 réponses

Avatar
Sunburn
re,
donc, quand j eme pose sur le plantage, j'ai le chemin qui commence par ça :
Srv
et comme il cherche une lettre, ça plante...
comment puis-je y remédier .????
merci.
YANN

"Sunburn" a écrit :

Bonjour,
j'ai une macro, qui me permet d'aller chercher un fichier Excel, en ouvrant
une boite de dialogue sous le dossier où se trouve mon fichier.
sur un poste normal, tout va bien.
Par contre, en fonctionnement TSE, ça plante là, et je sais pas pourquoi :
-------
ChDrive (Mid(ActiveWorkbook.path, 1, 1))
-----
Merci de votre aide.
YANN
---
Sub IMPORTBAL()
Dim Fichier As String, X
Dim DerLig As Long, DerCol As Integer
Dim Chemin As String, Wk As Workbook
rep = MsgBox("Est-ce une balance qui provient de PGI ?", vbYesNo)
If rep = vbYes Then
[BalPGI] = 1
Else
[BalPGI] = 0
End If
If MsgBox("Ce module va vous permettre d'importer une balance en choisissant
le " & _
"fichier de votre choix." & vbLf & vbLf & _
"Attention, votre balance à importer doit être correcte au niveau des
colonnes." & vbLf & _
"Pour cela, veuillez vous référer au manuel de procédure de REVIS'HOCHE"
& vbLf & vbLf & _
"Les colonnes doivent être identique à la feuille 'GA10' de ce fichier"
& vbLf & vbLf & _
"Etes-vous sûr de vouloir continuer ?", vbYesNo) = vbNo Then
Exit Sub
End If
'onglet Balances GA10
With Sheets("GA10")
.[A3:F3000].Value = "" 'effacement
End With
Chemin = ActiveWorkbook.path
If Chemin = "" Then
Chemin = Application.DefaultFilePath
End If
ChDrive (Mid(ActiveWorkbook.path, 1, 1)) '*************PLANTAGE******
ChDir (Chemin)
Application.ScreenUpdating = False
Fichier = Application.GetOpenFilename("(*.xls),xls", , , , False)
If TypeName(Fichier) = "Boolean" Then
MsgBox "Opération annulée. Aucun fichier sélectionné"
Exit Sub
Else
Set Wk = Workbooks.Open(Fichier)
End If
With Wk.ActiveSheet
DerLig = .Cells.Find(What:="*", _
LookIn:=xlFormulas, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious).Row
DerCol = .Cells.Find(What:="*", _
LookIn:=xlFormulas, _
SearchOrder:=xlByColumns, _
SearchDirection:=xlPrevious).Column
X = .Range(.Range("A2"), .Cells(DerLig, DerCol))
End With
With ThisWorkbook.Sheets("GA10")
.Range("A3").Resize(UBound(X, 1)).ClearContents
.Range("A3").Resize(UBound(X, 1)).NumberFormat = "General"
.Range("A3").Resize(UBound(X, 1), UBound(X, 2)) = X
End With
Wk.Close False
End Sub
-------


Avatar
michdenis
Voici une réponse que Frédéric Sigonneau faisait sur le sujet :

Je n'ai pas de moyen de tester mais j'ai déjà lu que ChDir ne donnait pas les
résultats attendus quand on cherche à accéder au dossier d'un ordinateur
distant. Il existe une fonction de substitution pour contourner ce problème, qui
pourrait peut-être t'aider à régler ton problème (code à recopier dans un module
standard du classeur où tu veux l'utiliser) :

'=============== 'une procédure pour remplacer ChDir avec un lecteur/répertoire réseau

'Déclaration de L'API dans le haut du module standard
Private Declare Function SetCurrentDirectoryA Lib _
"kernel32" (ByVal lpPathName As String) As Long
'----------------------------
Sub ChDirNet(szPath As String)
'collectif, d'après Laurent Longre, mpep
Dim lReturn As Long
lReturn = SetCurrentDirectoryA(szPath)
If lReturn = 0 Then Err.Raise vbObjectError + 1, "Error setting path."
End Sub

'Example of usage
'----------------------------
Sub GetFile()
On Error GoTo ErrHandler
ChDirNet "LOGD0FILESOGILVTWDocsTemp"
Exit Sub
ErrHandler:
MsgBox "Couldn't set path"
End Sub
'===============



"Sunburn" a écrit dans le message de groupe de
discussion :
Bonjour,
j'ai une macro, qui me permet d'aller chercher un fichier Excel, en ouvrant
une boite de dialogue sous le dossier où se trouve mon fichier.
sur un poste normal, tout va bien.
Par contre, en fonctionnement TSE, ça plante là, et je sais pas pourquoi :
-------
ChDrive (Mid(ActiveWorkbook.path, 1, 1))
-----
Merci de votre aide.
YANN
---
Sub IMPORTBAL()
Dim Fichier As String, X
Dim DerLig As Long, DerCol As Integer
Dim Chemin As String, Wk As Workbook
rep = MsgBox("Est-ce une balance qui provient de PGI ?", vbYesNo)
If rep = vbYes Then
[BalPGI] = 1
Else
[BalPGI] = 0
End If
If MsgBox("Ce module va vous permettre d'importer une balance en choisissant
le " & _
"fichier de votre choix." & vbLf & vbLf & _
"Attention, votre balance à importer doit être correcte au niveau des
colonnes." & vbLf & _
"Pour cela, veuillez vous référer au manuel de procédure de REVIS'HOCHE"
& vbLf & vbLf & _
"Les colonnes doivent être identique à la feuille 'GA10' de ce fichier"
& vbLf & vbLf & _
"Etes-vous sûr de vouloir continuer ?", vbYesNo) = vbNo Then
Exit Sub
End If
'onglet Balances GA10
With Sheets("GA10")
.[A3:F3000].Value = "" 'effacement
End With
Chemin = ActiveWorkbook.path
If Chemin = "" Then
Chemin = Application.DefaultFilePath
End If
ChDrive (Mid(ActiveWorkbook.path, 1, 1)) '*************PLANTAGE******
ChDir (Chemin)
Application.ScreenUpdating = False
Fichier = Application.GetOpenFilename("(*.xls),xls", , , , False)
If TypeName(Fichier) = "Boolean" Then
MsgBox "Opération annulée. Aucun fichier sélectionné"
Exit Sub
Else
Set Wk = Workbooks.Open(Fichier)
End If
With Wk.ActiveSheet
DerLig = .Cells.Find(What:="*", _
LookIn:=xlFormulas, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious).Row
DerCol = .Cells.Find(What:="*", _
LookIn:=xlFormulas, _
SearchOrder:=xlByColumns, _
SearchDirection:=xlPrevious).Column
X = .Range(.Range("A2"), .Cells(DerLig, DerCol))
End With
With ThisWorkbook.Sheets("GA10")
.Range("A3").Resize(UBound(X, 1)).ClearContents
.Range("A3").Resize(UBound(X, 1)).NumberFormat = "General"
.Range("A3").Resize(UBound(X, 1), UBound(X, 2)) = X
End With
Wk.Close False
End Sub
-------