Débutant VBA - Erreur 13 incompatibilité de Type 13
Bonjour à tous,
Je suis débutante en VBA et je suis face à une erreur de compatibilité de type 13 que j'ai essayé de comprendre...sans succès pour le moment. (les Types de données me semblent ok, c'est peut-être dans les procédures...)
Je vous joins mon fichier.
Dans ma Sub "Verif", on but est de vérifier une liste de conditions dans plusieurs fichiers d'un répertoire, et si ces conditions ne sont pas remplies, de répertorier le nom du fichier et son chemin d'accès pour obtenir la liste des fichiers en erreur. Les fichiers à tester commencent tous au même endroit, mais ont un nombre de lignes différent.
Un grand merci d'avance à ceux qui prendront le temps de regarder et de m'expliquer le pourquoi de mon (ou mes) erreur(s).
bonjour,
ta variable subfolder est vide et n'a pas le bon type lors de l'exécution de cette instruction
Set SourceFolder = Fso.GetFolder(SubFolder)
le paramètre devrait être le nom d'un répertoire (de type string)
après je pense que ceci ne fera pas ce que tu souhaites
"C6" & lignedeb
si lignedeb vaut 10 cela pointera vers la cellule C610, je pense que le 6 est en trop.
tes variables autofin, coldeb, colfin, lignedeb, lignefin ne sont pas initialisées.
Bonjour,
cette erreur intervient lorsque le type de donnée n'est pas celui attendu.
Par exemple une chaine pour une variable numérique.
Déposer ton fichier n'apporte pas grand chose vu qu'il n'y a aucune donnée. Coller le code ici aurait été suffisant.
Tu n'indiques pas la ligne en erreur...
eric
Merci h2so4
J'ai modifié mon code, mais ça continue de bloquer avec une erreur d'exécution type 5 à la ligne 12 apparemment...
C'est peut-être trop ambitieux pour mon niveau de débutante
Sub Valid()
Dim onglet As String
Dim Fso As Object
Dim SourceFolder As Object
Dim SubFolder As String
Dim fichier As Object
Dim lignedeb As String
Dim lignefin, autofin, coldeb, colfin As String
Dim i As Long
Set Fso = CreateObject("Scripting.FileSystemObject")
Set SourceFolder = Fso.GetFolder(SubFolder)
coldeb = Range("coldeb").Value
colfin = Range("colfin").Value
lignedeb = Range("lignedeb").Value
lignefin = Range("lignefin").Value
onglet = Range("onglet").Value
autofin = False
If lignefin = "" Then autofin = True
' boucle sur tous les fichiers du répertoire
For Each fichier In SourceFolder.Files
'Si le fichier a la bonne extension...
If Right(fichier. Name, 4) = ".xls" Or Right(fichier. Name, 5) = ".xlsx" Or Right(fichier. Name, 5) = ".xlsm" Or Right(fichier. Name, 4) = ".ods" Then
If Left(fichier. Name, 2) <> "~$" Then
Workbooks.Open Filename:=SubFolder & "\" & fichier. Name
'Si l'onglet s'appelle bien Feuill1
If Sheets(onglet).Name = "Feuil1" Then
Sheets(onglet).Select
'Trouve la dernière ligne remplie du fichier
Range(coldeb & (lignedeb - 1)).End(xlDown).Select
If autofin Then lignefin = ActiveCell.Row
' sélectionne la région à vérifier
Range(coldeb & lignedeb & ":" & colfin & lignefin).Select
'verifie si la colonne est vide
If Range(coldeb & lignedeb & ":" & colfin & lignefin) <> 0 Or " " Then ActiveWorkbook.Close SaveChanges:=False
Else
TestListeFichiers
'Répertorie l'erreur
Cells(i, 6) = "Donnée manquante"
ActiveWorkbook.Close SaveChanges:=False
End If
'Si l'onglet ne s'appelle pas Feuill1, renomme-le Feuil1
Else
Sheets(onglet).Name = "Feuil1"
ActiveWorkbook.Close SaveChanges:=True
End If
'Si le fichier n'a pas la bonne extension...
Else
TestListeFichiers
'Répertorie l'erreur
Cells(i, 6) = "Extension du fichier non reconnue"
ActiveWorkbook.Close SaveChanges:=False
End If
Next fichier
End Sub
re-Bonjour,
tu dois initialiser ta variable subfolder.
doit contenir le chemin du répertoire que tu veux examiner. Probablement celui-ci
subfolder = "C:\Users\lebargya\Desktop\TEST\Bon à compiler - 24 JANV"
Set Fso = CreateObject("Scripting.FileSystemObject")
Set SourceFolder = Fso.GetFolder(SubFolder)
Merci ! ce bug-là est résolu.
Il reste encore plein de bugs (Erreur 1004 à la ligne suivante...) mais je vais essayer de m'y pencher pour voir ce que je peux résoudre.
Merci encore pour ton aide.