Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

teodormircea

XLDnaute Occasionnel
Bojour le forum
j'ai un petit soucis de codage

vFichiers = Application.GetOpenFilename("*.xls, *.xls", , "IMPORT AD FILE", , True)
Application.ScreenUpdating = False
With ActiveWorkbook.Sheets(1)
For Each vFileToOpen In vFichiers
Workbooks.Open vFileToOpen

au moment ou j'appuye cancel le code m'envoie une erreur de type mistmach
 
Re : Erreur code

bonjour
L'un des problèmes que vous pouvez rencontrer tient à la macro qui génère une erreur d'incompatibilité de Type si l'utilisateur clique sur le bouton Annuler dans la boîte de dialogue. La valeur de la variable sera définie sur False. "Standard error-trapping techniques" peuvent être utilisées pour intercepter ce problème :
Code:
Sub Open_Files

       'Defines the variable as a variant data type
       Dim X as variant

       'Continues to run the macro even if an error occurs
       On Error Resume Next

       'Opens the dialog
       X = Application.GetOpenFilename _
           ("Text Files (*.txt), *.txt, Add-in Files (*.xla), *.xla", 2, _
           "Open My Files", ,True)

       'Tests the variable X to see if it is valid
       If X = False then GoTo Cancel

       'Loops through every file that is selected and opens each one
       For Y = 1 to Ubound(X)
           Workbooks.Open X(Y)
       Next

       Exit Sub

       'If X was equal to false, displays a message and exits the macro
   Cancel:
       Msgbox "The Cancel button was selected."

   End Sub

tiré de : support.microsoft
 
Dernière édition:
Re : Erreur code

bonjour

le souci de getopenfilename est qu'il peut renvoyer une variables de 2 types differents (meme 3 si on est pas en multiselection)

- boolean (false) si on clique sur annuler
- tableau si on selectionne plusieurs fichiers

la solution passe donc par le test du type de variable, si c'est un boolean c'est qu'on à cliqué sur cancel :

Code:
Dim vfichiers As Variant

vfichiers = Application.GetOpenFilename("*.xls, *.xls", , "IMPORT AD FILE", , True)
If VarType(vfichiers) = 11 Then Exit Sub

salut
 
Re : Erreur code

voila tout le code

Dim vFichiers As Variant, vFileToOpen As Variant
Worksheets("ORIGINAl").Activate
If MsgBox(Prompt:="IMPORT FIRST AD FILE", _
Buttons:=vbQuestion + vbOKCancel + vbDefaultButton2, _
Title:="Hide") = vbCancel Then
MsgBox "Action Cancelled"
Exit Sub
End If
Application.ScreenUpdating = True
vFichiers = Application.GetOpenFilename("*.xls, *.xls", , "IMPORT AD", , True)
With ActiveWorkbook.Sheets(1)
For Each vFileToOpen In vFichiers
Workbooks.Open vFileToOpen
Range(Cells(1, 1), Cells(Cells(65536, 1).End(xlUp).Row, Cells(1, 255).End(xlToLeft).Column)).Copy _
Destination:=.Cells(.Cells(65536, 1).End(xlUp).Row, 1)
ActiveWorkbook.Close
Next vFileToOpen
End With
Application.ScreenUpdating = True
End Sub
 
Re : Erreur code

re

chez moi, ce code fonctionne 😕 :

Code:
Dim vfichiers As Variant, fichier

vfichiers = Application.GetOpenFilename("*.xls, *.xls", , "IMPORT AD FILE", , True)
If VarType(vfichiers) = 11 Then Exit Sub
For Each fichier In vfichiers
    MsgBox fichier
Next fichier

bye
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
5
Affichages
910
  • Question Question
XL 2021 VBA excel
Réponses
4
Affichages
452
Réponses
10
Affichages
517
Réponses
0
Affichages
663
  • Question Question
Microsoft 365 Erreur de format
Réponses
5
Affichages
597
Réponses
9
Affichages
884
Réponses
3
Affichages
430
Retour