[Excel / VBA] Probleme importation de donnée excel

Signaler
Messages postés
80
Date d'inscription
lundi 22 octobre 2007
Statut
Membre
Dernière intervention
30 juillet 2008
-
Messages postés
80
Date d'inscription
lundi 22 octobre 2007
Statut
Membre
Dernière intervention
30 juillet 2008
-
Bonjour ,

j'ai de nouveau un probleme lors de mon importation de données
En gros, je fais une importation d'une feuille excel d'un autre document vers mon document en cours.

Pour se faire, en cliquant sur un bouton, je parcours mes fichiers en affichant les fichiers excel.

Tout marche bine quand je séléctionne un fichier excel, cependant, si je fais "annuler", cela met une erreur

le code :

 FileToOpen = Application.GetOpenFilename("Tout les fichiers Excel (*.xl*;*.xls;*.xla;*.xml;*.xlm;*.xlc;*.xlw),")
    If Not FileToOpen = vbNullString Then Workbooks.Open FileToOpen Else
    If FileToOpen = vbNullString Then
    MsgBox mes1
    End If
    Exit Sub

Erreur d'execution '1004'
il me met en erreur qu'il n'a pas pu trouver le fichier : "faux.xls"

mes1 est une message disant qu'il y a eu une annulation de l'importation

15 réponses

Messages postés
1835
Date d'inscription
vendredi 13 mai 2005
Statut
Membre
Dernière intervention
20 novembre 2013
9
Salut

 FileToOpen = Application.GetOpenFilename("Tout les fichiers Excel (*.xl*;*.xls;*.xla;*.xml;*.xlm;*.xlc;*.xlw),")
    If Not FileToOpen = false Then
        Workbooks.Open FileToOpen
    Else
        MsgBox mes1
    End If
    Exit Sub

si false ne marche pas ajoute MsgBox FileToOpen avant la condition if, pour voir ce que contient la variable FileToOpen quand tu cliques sur cancel

A+
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
salut,

ton code est bizarre, voilà ce qu'il faudrait faire :

 FileToOpen = Application.GetOpenFilename("Tout les fichiers Excel (*.xl*;*.xls;*.xla;*.xml;*.xlm;*.xlc;*.xlw),")
    If FileToOpen <> vbNullString Or FileToOpen Then
        Workbooks.Open FileToOpen
    Else <strike></strike>
    MsgBox mes1
    End If
    Exit Sub

annuler renvoi non pas une chaine de caractère nulle, mais false

@++

le mystérieux chevalier,"Provençal, le gaulois"
Messages postés
80
Date d'inscription
lundi 22 octobre 2007
Statut
Membre
Dernière intervention
30 juillet 2008

J'ai modifié, mais un probleme persiste.

Maintenant, quand je fais annuler , cela marche, mais lorsque je choisi un fichier pour l'importation , cela plante

Il met que le type est incompatible, erreur d'execution '13'

PS : je croyais que cétait VbNullString et non pas False ?
Enfin c'est ce qu'a dit Mortalino
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
VbNullstring = si rien n'est choisi, mais appuie sur Valider
false = annuler.
(cf F1, je viens de le lire)

elle est sur quelle ligne ton erreur ?

@++

le mystérieux chevalier,"Provençal, le gaulois"
Messages postés
80
Date d'inscription
lundi 22 octobre 2007
Statut
Membre
Dernière intervention
30 juillet 2008

J'ai essayé ta methode Mortalino, mais il y a un probleme, cela bug quand je séléctionne un fichier et aussi quand j'annule

Il me dit que le probleme vient de cette ligne là :

FileToOpen = Application.GetOpenFilename("Tout les fichiers Excel (*.xl*;*.xls;*.xla;*.xml;*.xlm;*.xlc;*.xlw),")
    If FileToOpen <> vbNullString Or FileToOpen Then
        Workbooks.Open FileToOpen
    Else <strike></strike>
    MsgBox mes1
    End If
    Exit Sub

Dans les 2 cas : erreur d'execution '13'
Incompatibilité des types
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
grrr

c'est bon j'ai vu, mais il y a conflit dans les types de données..
Je cherche

@++

le mystérieux chevalier,"Provençal, le gaulois"
Messages postés
1835
Date d'inscription
vendredi 13 mai 2005
Statut
Membre
Dernière intervention
20 novembre 2013
9
essai comme ça pour voir

FileToOpen = Application.GetOpenFilename("Tout les fichiers Excel (*.xl*;*.xls;*.xla;*.xml;*.xlm;*.xlc;*.xlw),")
    If FileToOpen <> "" Or FileToOpen = True Then
        Workbooks.Open FileToOpen
    Else
    MsgBox mes1
    End If
    Exit Sub
Messages postés
1835
Date d'inscription
vendredi 13 mai 2005
Statut
Membre
Dernière intervention
20 novembre 2013
9
pardon

If FileToOpen <> "" Or Not FileToOpen = False Then
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
Nop,

If FileToOpen Then

Tout bêtement, car le bouton ouvrir est grisé tant qu'il n'y a pas de fichier de sélectionné.

Par contre, si un filou mets quelque chose dans la barre d'adresse, et qui ne correspond pas à un fichier valide, ça plantera.
(vérifier avec Dir)

@++

le mystérieux chevalier,"Provençal, le gaulois"
Messages postés
80
Date d'inscription
lundi 22 octobre 2007
Statut
Membre
Dernière intervention
30 juillet 2008

Je viens de tester ta méthode Bigfish, mais ni l'importation, ni l'annulation ne marchent

Anuulation , parce qu'il cherche le fichier : "faux.xls"
Imporation, incompatibilité de type
Messages postés
80
Date d'inscription
lundi 22 octobre 2007
Statut
Membre
Dernière intervention
30 juillet 2008

Bon , je viens de faire plusieurs tests, j'arrive à faire marcher l'importation avec :

    FileToOpen = Application.GetOpenFilename("Tout les fichiers Excel (*.xl*;*.xls;*.xla;*.xml;*.xlm;*.xlc;*.xlw),")
    If FileToOpen <> vbNullString Then
        Workbooks.Open FileToOpen
    Else
    MsgBox mes1
    End If

Par contre , cela plante toujours si je fais annuler
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
If FileToOpen Then
        Workbooks.Open FileToOpen
    Else
    MsgBox mes1
    End If

en cas d'annulation c'est géré (voir mon dernier comm de la page précédante)
@++

le mystérieux chevalier,"Provençal, le gaulois"
Messages postés
80
Date d'inscription
lundi 22 octobre 2007
Statut
Membre
Dernière intervention
30 juillet 2008

J'ai essayé comme cela, ca marche pour l'nnulation , mais pas pour l'importation de fichier
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
essaie comme ceci, j'ai testé, c'est bon :

Dim FileToOpen As Variant

On Local Error GoTo MyOpen
    FileToOpen = Application.GetOpenFilename("Tout les fichiers Excel
(*.xl*;*.xls;*.xla;*.xml;*.xlm;*.xlc;*.xlw),")
    If FileToOpen Then
MyOpen:
        If Err.Number = 13 Then
            Err.Clear: On Local Error GoTo
0
            Workbooks.Open FileToOpen
        End If
    Else
        MsgBox mes1
    End If

~
<small>Mortalino ~ [code.aspx?ID=39466 Colorisation
automatique]</small>

@++

le mystérieux chevalier,"Provençal, le gaulois"
Messages postés
80
Date d'inscription
lundi 22 octobre 2007
Statut
Membre
Dernière intervention
30 juillet 2008

C'est parfait , tout marche parfaitement

Merci beaucoup pour l'aide ;)