Problème macro ouverture de fichiers

DAN59350

XLDnaute Nouveau
Bonjour,
J'ai un problème avec une macro pour ouvrir automatiquement les fichiers qu'un utilisateur choisit dans une liste.
Dans un premier temps la macro fonctionnait bien losrque l'utilisateur choisissait un ou plusieurs fichiers. Mais ce programme générait une erreur si l'utilisateur cliquait sur le bouton Annuler ou sur la croix de fermeture de la boîte de dialogue. J'ai donc rajouté des instructions pour résoudre ce problème. Malheureusement cela ne fonctionne pas et génére une erreur de type 13 lorsque je sélectionne un ou plusieurs fichiers. Je pense que le problème vient de la valeur de la variable OuvrirFichiers mais je n'arrive pas à trouver de solution !

L'un d'entre vous a t'il une solution à m'apporter ? D'avance merci.
Code:
Sub OuvertureDeFichiers()
Dim OuvrirFichiers As Variant
MsgBox ("valeur de OuvriFichiers =" & OuvrirFichiers)
'affichage de la boîte de dialogue Ouvrir
OuvrirFichiers = Application.GetOpenFilename("Tous les fichiers Microsoft Excel, *.xls", , , , True)
        If OuvrirFichiers = False Then
            MsgBox "Aucun fichier n'a été sélectionné. Fin de la procédure", _
            vbOKOnly + vbCritical, "Fin de la procédure"
            Exit Sub
        End If

'si l'utilisateur a sélectionné plusieurs fichiers
   If UBound(OuvrirFichiers) > 1 Then
        Dim rep As Long
        Dim liste As String
        Dim compteur As Byte
            For compteur = 1 To UBound(OuvrirFichiers)
                liste = liste & vbCr & OuvrirFichiers(compteur)
            Next compteur
 'affichage de la liste des fichiers et proposition d'ouverture
        rep = MsgBox("L'utilisateur a sélectionné plusieurs fichiers. En voici la liste." & _
    liste & vbCr & "Voulez-vous les ouvrir ?", vbYesNo + vbQuestion, "Ouvrir les fichiers ?")
    'ouverture des fichiers en cas de réponse positive
            If rep = vbYes Then
                    For compteur = 1 To UBound(OuvrirFichiers)
                        Workbooks.Open Filename:=OuvrirFichiers(compteur)
                    Next compteur
            End If
'si un seul fichier a été sélectionné, il est ouvert
Else
    Workbooks.Open Filename:=OuvrirFichiers(1)
End If
End Sub
 

Papou-net

XLDnaute Barbatruc
Re : Problème macro ouverture de fichiers

Bonjour DAN59350,

Modifie ton code comme suit, et ça devrait fonctionner comme tu le désires :

Code:
Sub OuvertureDeFichiers()
Dim OuvrirFichiers As Variant
MsgBox ("valeur de OuvriFichiers =" & OuvrirFichiers)
'affichage de la boîte de dialogue Ouvrir
OuvrirFichiers = Application.GetOpenFilename("Tous les fichiers Microsoft Excel, *.xls", , , , True)
        [COLOR="Red"]If UBound(OuvrirFichiers) = 0 Then[/COLOR]
            MsgBox "Aucun fichier n'a été sélectionné. Fin de la procédure", _
            vbOKOnly + vbCritical, "Fin de la procédure"
            Exit Sub
        End If

'si l'utilisateur a sélectionné plusieurs fichiers
   If UBound(OuvrirFichiers) > 1 Then
        Dim rep As Long
        Dim liste As String
        Dim compteur As Byte
            For compteur = 1 To UBound(OuvrirFichiers)
                liste = liste & vbCr & OuvrirFichiers(compteur)
            Next compteur
 'affichage de la liste des fichiers et proposition d'ouverture
        rep = MsgBox("L'utilisateur a sélectionné plusieurs fichiers. En voici la liste." & _
    liste & vbCr & "Voulez-vous les ouvrir ?", vbYesNo + vbQuestion, "Ouvrir les fichiers ?")
    'ouverture des fichiers en cas de réponse positive
            If rep = vbYes Then
                    For compteur = 1 To UBound(OuvrirFichiers)
                        Workbooks.Open Filename:=OuvrirFichiers(compteur)
                    Next compteur
            End If
'si un seul fichier a été sélectionné, il est ouvert
Else
    Workbooks.Open Filename:=OuvrirFichiers(1)
End If
End Sub

Cordialement.
 

camarchepas

XLDnaute Barbatruc
Re : Problème macro ouverture de fichiers

Bonjour,

Et oui le problème est le changement de type de variable donc :

Option Explicit
Sub OuvertureDeFichiers()
Dim OuvrirFichiers As Variant
Dim rep As Long
Dim liste As String
Dim compteur As Byte
'
'affichage de la boîte de dialogue Ouvrir
OuvrirFichiers = Application.GetOpenFilename("Tous les fichiers Microsoft Excel, *.xls", , , , True)
Select Case TypeName(OuvrirFichiers)
Case Is = "Boolean"
MsgBox "Aucun fichier n'a été sélectionné. Fin de la procédure", _
vbOKOnly + vbCritical, "Fin de la procédure"
Case Is = "Variant()"
'si l'utilisateur a sélectionné plusieurs fichiers
If UBound(OuvrirFichiers) > 1 Then
For compteur = 1 To UBound(OuvrirFichiers)
liste = liste & vbCr & OuvrirFichiers(compteur)
Next compteur
'affichage de la liste des fichiers et proposition d'ouverture
rep = MsgBox("L'utilisateur a sélectionné plusieurs fichiers. En voici la liste." & _
liste & vbCr & "Voulez-vous les ouvrir ?", vbYesNo + vbQuestion, "Ouvrir les fichiers ?")
'ouverture des fichiers en cas de réponse positive
If rep = vbYes Then
For compteur = 1 To UBound(OuvrirFichiers)
Workbooks.Open Filename:=OuvrirFichiers(compteur)
Next compteur
End If
'si un seul fichier a été sélectionné, il est ouvert
Else
Workbooks.Open Filename:=OuvrirFichiers(1)
End If
End Select
End Sub
 

YANN-56

XLDnaute Barbatruc
Re : Problème macro ouverture de fichiers

Bonjour DAN, Pascal, Nono et à ceux qui passeront par là.

Une petite idée différente jointe.

Reste à gérer autres points comme:

Le plouf certain (A ce stade) pour les classeurs ayant un
"Private Sub Workbook_Open()"

La fermeture du dernier classeur ouvert,
si l'on veut rester sur le présent.

Il faut bien te laisser bosser un peu! N'est-il pas? :)

Amicalement.

Yann

P.S. A noter que je ne me suis pas préoccupé de l'ouverture simultanée
de plusieurs classeurs, car ne n'en vois pas l'utilité!!!
 

Pièces jointes

  • VOIR.xls
    41 KB · Affichages: 67
  • VOIR.xls
    41 KB · Affichages: 67
  • VOIR.xls
    41 KB · Affichages: 73
Dernière édition:

DAN59350

XLDnaute Nouveau
Re : Problème macro ouverture de fichiers

Bonsoir,

Je vous remercie beaucoup pour les réponses que vous avez bien voulu m'apporter aussi rapidement.

J'ai modifié ma macro et cela fonctionne nickel chrome !!!
Encore un grand merci à tous les trois.

Bonne soirée.
 

Discussions similaires

Statistiques des forums

Discussions
312 428
Messages
2 088 347
Membres
103 821
dernier inscrit
Lorient56