Problème pour ouvrir un Excel sous VBA
Bonsoir,
J'ai un problème pour le moins étrange.
Lors de l’exécution de ma macro si je rentre 3 paramètres la macro tourne normalement et la dernière ligne de code ouvre bien mon fichier final.
En revanche si je rentre 4 paramètres (et j'ai essayé avec plusieurs fichiers test afin de voir si un fichier en particulier était en cause), la dernière ligne ne s'effectue pas correctement et me renvoie une erreur : "La méthode Open de l'objet workbook à échouer".
Je n'arrive pas à comprendre pourquoi avec 3 paramètres cela fonctionne très bien mais pas au delà...
Edit : Si je supprime la dernière ligne qui me permet d'ouvrir le fichier, la macro s’exécute correctement.
Si j'ouvre ensuite le fichier à la main, Excel me préviens qu'il a trouver un problème dans le contenu du fichier et m'invite à le "récupérer" si le classeur est fiable.
Puis un fenêtre m"indiquant : " Enregistrements réparés: Affichage dans la partie /xl/worksheets/sheet1.xml"
Merci de vos réponse.
OuvrirFichier = Application.GetOpenFilename(FileFilter:="Classeur Excel(* .xlsx),*xlsx", Title:="Selection FSM", MultiSelect:=True)
Set Tableau = GetObject("C:\Users\toto\Desktop\Macro\Tableau.xlsx")
Tableau.Activate ' Afin de pouvoir voir les modifications lors de l'éxécution, sera supprimé plus tard.
Tableau.Windows(1).Visible = True
'Instruction
Instruction modifiant mon classeur tableau
'Fin Instruction
Tableau.SaveAs Filename:="C:\Users\toto\Desktop\Macro\Tableau " & Application.UserName
Tableau.Close
Set Tableau = Nothing
Workbooks.Open Filename:="C:\Users\toto\Desktop\Macro\Tableau " & Application.UserName & ".xlsx"Bonjour,
si tu autorises la multisélection, tu reçois un tableau qu'il balayer pour récupérer tous les fichiers.
Ex :
NomFichier = Application.GetOpenFilename(Filtre, 1, "Ouvrir", , True)
If IsArray(NomFichier) Then
For cmpt = LBound(NomFichier) To UBound(NomFichier)
Application.Workbooks.Open NomFichier(cmpt)
'fich = Split(NomFichier(cmpt), "\")
'MsgBox fich(UBound(fich))
Next cmpt
End Iferic
Merci de ta réponse.
C'est fait avec cette instruction :
Set Classeur1 as Workbook
For compteur = 1 To UBound(OuvrirFichier)
Set Classeur1 = GetObject(OuvrirFichier(compteur))
'InstructionOu je récupère le classeur excel pour ensuite le mettre dans le workbook classeur1 qui sera libéré en fin d'instruction afin de pouvoir lui donner le prochain classeur sélectionné.
J'avais des cellules fusionnées au sein de mon tableau (Pour faire jolie...) , que je viens d'enlever et la plus aucun problème, ni de fichier corrompus.
Même si cela m’énerve de ne pas comprendre l'explication derrière...