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

Probleme macro copie fichier excel

4 réponses
Avatar
sunburn
Bonjour,
j'ai une macro qui me permet de copier des données d'un fichier ectérieur
vers mon fichier. Le hic, c'est que ça bug depuis que j'ai fais des tests sur
Excel 2007.... même si je ne pense pas que ça ai un rapport. Quelqu'un peut
me dire pourquoi ça plante ?
Merci. (il met : "argument ou appel de procédure incorrect)
YANN
-----------
Sub Import() 'pour importer la balance
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 X?", vbYesNo)
If rep = vbYes Then
[BalPGI] = 1
[BalPGIouPas] = "DE X"
Else
[BalPGI] = 0
[BalPGIouPas] = "DU CLIENT"
End If
If MsgBox("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)) '------******-------- ça plante là
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

4 réponses

Avatar
Daniel.C
Bonjour.
A tout hasard, efface la ligne et réécris-la.
Cordialement.
Daniel

Bonjour,
j'ai une macro qui me permet de copier des données d'un fichier ectérieur
vers mon fichier. Le hic, c'est que ça bug depuis que j'ai fais des tests sur
Excel 2007.... même si je ne pense pas que ça ai un rapport. Quelqu'un peut
me dire pourquoi ça plante ?
Merci. (il met : "argument ou appel de procédure incorrect)
YANN
-----------
Sub Import() 'pour importer la balance
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 X?", vbYesNo)
If rep = vbYes Then
[BalPGI] = 1
[BalPGIouPas] = "DE X"
Else
[BalPGI] = 0
[BalPGIouPas] = "DU CLIENT"
End If
If MsgBox("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)) '------******-------- ça plante là
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
FFO
Salut à toi

La ligne prise seule chez moi fonctionne
Pour déterminer la partie qui provoque le défaut mets comme ceci :

Lecteur = Mid(ActiveWorkbook.path, 1, 1)
ChDrive (Lecteur)

Et dis nous sur laquelle des deux celà bug
Avatar
sunburn
Salut,
ce qui plante, c'est ChDrive (Lecteur).
Par contre, si je supprime la ligne, je n'ai plus d'erreur.
est-ce obliger de tester le lecteur ?
YANN

"FFO" wrote:

Salut à toi

La ligne prise seule chez moi fonctionne
Pour déterminer la partie qui provoque le défaut mets comme ceci :

Lecteur = Mid(ActiveWorkbook.path, 1, 1)
ChDrive (Lecteur)

Et dis nous sur laquelle des deux celà bug



Avatar
FFO
Rebonjour à toi

La ligne :

ChDrive (Lecteur)

fait en sorte de positionner la boîte de dialogue qui suit dans ton code
sur le bon lecteur :

Fichier = Application.GetOpenFilename("(*.xls),xls", , , , False)



Si elle est positionnée sur un autre lecteur ta boîte de dialogue sans
cette ligne ne pourra pas se positionner sur le répertoire que tu détermines
par la ligne :

ChDir (Chemin)


Donc il est important que le lecteur soit bien déterminé pour que ta boîte
de dialogue soit bien positionnée

Les 2 lignes :

ChDrive (Lecteur)
ChDir (Chemin)

marche de paire pour que la ligne :

Fichier = Application.GetOpenFilename("(*.xls),xls", , , , False)

donne le bon résultat

As tu essayé au moment du Bug sur

ChDrive (Lecteur)

de passer la souris sur Lecteur pour en connaitre la valeur

Afin de vérifier qu'elle soit correct

Si tel n'est pas le cas c'est au niveau de la ligne :

Lecteur = Mid(ActiveWorkbook.path, 1, 1)

qu'il faut orienter tes recherches et plus particulièrement sur :

ActiveWorkbook.path

Passes ta souris dessus pour en connaitre sa valeur et notamment celle de sa
première lettre que tu extrais avec l'expression Mid(ActiveWorkbook.path, 1,
1)

Donnes nous des nouvelles !!!!!!