déclaration de variable

bigmousse

XLDnaute Occasionnel
J'utilise l'application GetOpenFilename pour selectionner le fichier que je vais ouvrir par la suite.
Lorsque je selectionne mon fichier (boite de dialogue) l'application me renvoie comme valeur le chemin du fichier, s'il n'ya pas de selection (bouton annuler de la boite de dialogue) l'application me renvoie la valeur False.
Dans le cas où il n'y a pas de selection de fichier, je dois sortir de la procedure (Exit sub) en utilisant un test IF

Le code ci-desous contient une erreur puisque quand je fais une selection, , je compare une valeur type chaine de caractère à une valeur boolean.
Le message d'erreur est :
"Incompatibilité de type"


Voici un extrait du code :
Code:
    Dim FileToOpen
    
    Set Mon_TdB = ThisWorkbook
    'ouverture de la boite de dialogue et selection du fichier par l'utilisateur
    FileToOpen = Application.GetOpenFilename("Fichier Excel (*.xls),*.xls)", , "Analyser le fichier", , True)
    'Variable type workbook du classeur à analyser
    If FileToOpen = False Then
       Exit Sub
    End If


En resumé le type de la variable FileToOpen est une chaine de caratère lorsque je selectionne un fichier dans la boite de dialogue.
Et de type boolean si dans la boite de dialogue, j'appuie sur annulé.


Ma question, comment tester une variable si elle peut prendre deux types différents.
Salutations
Mousse
 

bigmousse

XLDnaute Occasionnel
Re : déclaration de variable

Désolé mais ça ne fonctionne pas
Merci quand même...
Getopenfilename a pour argument la valeur True (dernier argument). Je peux donc selectionner plusieurs fichiers.
Donc deux cas :
Si annuler dans la boite de dialogue : FileToOpen est une variable normale
Si il y a selection de fichier FileToOpen est une variable tableau
à+
 
Dernière édition:

JNP

XLDnaute Barbatruc
Re : déclaration de variable

Bonsoir le fil :),
Pierrot n'étant pas en ligne, 2 cas de figure :
une instruction :
Code:
If ... Then ... (Else)...
plusieurs instructions :
Code:
If ... Then
...
...
Else
...
...
End If
Une variante plusieurs instructions sans Else
Code:
If ... Then ... : ...
Bonne soirée :cool:
 

YANN-56

XLDnaute Barbatruc
Re : déclaration de variable

Tu as eu bonnes réponses avant que je rédige la mienne!

Et même si cela ne sert à rien,
j'aime pas que rien ne serve pas à grand chose. :)

Je joins donc ma bidouille avant de l'effacer.
(Même si elle est à coté de la plaque: comme à lire la suite, je pense)

Bonne réussite à toi dans ton projet.

Et bonne fin de journée à tous.

Yann
 

Pièces jointes

  • RECHERCHE.xls
    24 KB · Affichages: 44
  • RECHERCHE.xls
    24 KB · Affichages: 48
  • RECHERCHE.xls
    24 KB · Affichages: 47

JNP

XLDnaute Barbatruc
Re : déclaration de variable

Re :),
Je joins donc ma bidouille avant de l'effacer.
(Même si elle est à coté de la plaque: comme à lire la suite, je pense)
Salut Yann, juste qu'elle plante aussi quand on ferme avec la croix :p...
Mais c'est juste le On Error Resume Next qui n'est pas bien placé
Code:
Private Sub CommandButton1_Click()
Set RECHERCHE = Application.FileDialog(msoFileDialogFolderPicker)
   With RECHERCHE
      .Title = "     CHOISIR UN DOSSIER"
      .AllowMultiSelect = False
          If .Show = -1 Then
                For Each CHOIXDOSSIER In .SelectedItems
                DOSSIER_CHOISI = CHOIXDOSSIER
                Next CHOIXDOSSIER
         End If
    End With
Set RECHERCHE = Nothing
On Error Resume Next 'Au cas où il n'y ait pas de Fichier
Set DOSSIER_A_FOUILLER = CreateObject("Shell.Application")
Set DOC_EXISTANTS = DOSSIER_A_FOUILLER.Namespace(DOSSIER_CHOISI & "\")
For Each ELEMENT In DOC_EXISTANTS.Items
'If ELEMENT.isFolder = True Then
i = i + 1
   With ActiveSheet
    .Cells(i, 1).Value = ELEMENT
    .Cells(i, 2).Value = Format(DOC_EXISTANTS.GetDetailsOf(ELEMENT, 3), "dddd d mmmm yyyy ") ' DATE MISE A JOUR
    End With
' End If
Next ELEMENT
End Sub
Par contre, elle est très sympa et très efficace ;)!
Bonne soirée :cool:
 

YANN-56

XLDnaute Barbatruc
Re : déclaration de variable

Salut Moussaillon! Sale gosse! Tu mériterais une correction!!! :)

En tous les cas JNP; merci pour la tienne de "Correction".
Je n'avais pas constaté cette erreur :(
(Mais ce n'est que par le hasard de n'avoir pas rencontré ce cas)

J'ai bien fait de venir…. :) :) :)

A toi bigmousse, je reste disponible si tu vas vers ma façon de faire.

A toi JNP, Merci encore pour comme d'hab. m'avoir aidé. :cool:

A vous et à ceux qui passeront par là:

Bon après-midi.

Yann
 

Discussions similaires

Réponses
17
Affichages
690

Statistiques des forums

Discussions
314 017
Messages
2 104 578
Membres
109 081
dernier inscrit
Vio21