IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Problème avec la fonction GetOpenFilename [XL-2003]


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    124
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 124
    Points : 70
    Points
    70
    Par défaut Problème avec la fonction GetOpenFilename
    Bonjour le forum,

    J'utilise une macro avec laquelle j'ouvre plusieurs fichiers via les fonctions Applications.GetOpenFilename et Application.Workbooks.Open.

    J'utilise la fonction GetOpen avec la multisélection. La macro fonctionne bien, mais j'aimerai à présent mettre une condition sur le GetOpen, à savoir que si aucun fichier n'est sélectionné, je sors de la boucle.
    Et bien, c'est justement cette condition que je n'arrive pas à "écrire" .

    Voici mon code de base
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
    Sub Sheet_resistance()
     
    Dim WB As Workbook
    Dim TreatedFile As Workbook
    Dim Counter() As Variant
    Dim a As Integer 
    Dim run as string
     
    run = InputBox("Run Number?")
    If run = "" Then Exit Sub
     
    Set WB = ThisWorkbook  
     
    Counter = Application.GetOpenFilename(",*.map", , , , True) 
     
    For a = 1 To UBound(Counter)
     
        Set TreatedFile = Application.Workbooks.Open(Counter(a), xlMSDOS)
        ...puis traitement...
    Next a
    End sub
    J'avoue avoir essayé pas mal de code rencontré sur le net (que je plaçais toujours juste après le GetOpenFilename), genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    If VarType(Counter) = vbBoolean Then Exit Sub
    If IsArray(Counter) Then Exit Sub
    (j'en passe et des meilleurs...)

    mais pas moyen de sortir de la boucle, j'ai automatiquement une erreur si je fais echap lors de la sélection des fichiers à traiter. L'erreur est de type erreur 13 et semble concernée la ligne GetOpenFilename justement. J'ai tenté de changer le type de varaible de "counter", mais rien n'y fait ...

    Quelqu'un aurait-il une idée SVP?

    Johann

  2. #2
    Membre chevronné Avatar de aalex_38
    Inscrit en
    Septembre 2007
    Messages
    1 631
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 631
    Points : 1 999
    Points
    1 999
    Par défaut
    Un exemple :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim quelfichier As Variant
    quelfichier = Application.GetOpenFilename(Title:="Sélectionner le fichier à traiter", MultiSelect:=False)
    il ne te reste plus qu'a tester quelfichier

  3. #3
    Membre confirmé
    Inscrit en
    Décembre 2003
    Messages
    434
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 434
    Points : 547
    Points
    547
    Par défaut
    Salut,

    Change ta declaration de en et ajoute ce test avant de lire les fichiers selectionnes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If IsArray(Counter) Then
    ++
    Minick

  4. #4
    Membre chevronné Avatar de aalex_38
    Inscrit en
    Septembre 2007
    Messages
    1 631
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 631
    Points : 1 999
    Points
    1 999
    Par défaut
    Un autre exemple plus complet :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub RLS_Parcourir()
    Dim mychemin As Variant 'Variant pour tester le code retour de la boite de dialogue
    ' +-----------------------------------------------------------------------+
    ' ! Ouverture de la boite de dialogue ouvrir pour choisir le chemin       !
    ' +-----------------------------------------------------------------------+
     mychemin = Application.GetOpenFilename("Tous les fichiers, *.*,Fichiers Textes , *.txt ,Fichiers office, *.xls;*.doc;*.ppt,Fichiers Word , *.doc") 'fenetre pour selection du fichier
     If VarType(mychemin) = vbBoolean Then ' test si on ne selectionne pas de chemin
     Else:   TB1.Text = mychemin: End If
     End Sub

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    124
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 124
    Points : 70
    Points
    70
    Par défaut
    Merci de vos réponses,

    J'ai essayé la méthode de Minick et j'ai donc enlevé les parenthèses lors de la déclarations de Counter.
    Ça marche du tonnerre

    Par contre, à titre personnel, j'aimerai savoir pourquoi il ne faut pas mettre les parenthèse (ou bien faut-il ls mettre partout?)?

    Merci,
    Johann

    Euh désolé,
    En fait vous me disiez tous les deux de supprimer les ()

    Merci à tous les deux

    Johann

  6. #6
    Membre chevronné Avatar de Krovax
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 888
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Points : 2 168
    Points
    2 168
    Par défaut
    D'après ce que j'ai compris

    Si tu déclares
    counter est un tableau puisque tu as mis des parenthèse
    donc quelque soit le résultat de ta recherche
    renvoi Vrai

    si tu déclare
    counter n'est pas un tableau puisque tu n'as pas de parenthèse
    donc si tu ne trouve rien
    renvoi False
    Si tu trouve cela renvoi vrai

    A confirmer tout de même

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    124
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 124
    Points : 70
    Points
    70
    Par défaut
    Merci Kovrax,

    Je vais me pencher sur la question et essayer de comprendre par moi meme, c'est pas gagne...

    Merci de ton aide,
    johann

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème avec ma fonction GetOpenFileName ()
    Par NoritakaRomain dans le forum Windows
    Réponses: 5
    Dernier message: 03/05/2007, 11h52
  2. Problème avec la fonction findfirst ()
    Par Angelico dans le forum Windows
    Réponses: 3
    Dernier message: 05/08/2004, 20h40
  3. [Requete SQL en VBA] Problème avec la fonction FLOOR
    Par zubral dans le forum Langage SQL
    Réponses: 4
    Dernier message: 13/07/2004, 13h24
  4. Problème avec les fonctions
    Par jvachez dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 13/01/2004, 12h06
  5. [Postgresql]Problème avec les fonctions ...
    Par fet dans le forum Requêtes
    Réponses: 4
    Dernier message: 02/10/2003, 09h04

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo