Passage de tableau optionnel en paramètre, erreur
Fermé
jeremayb
Messages postés
18
Date d'inscription
lundi 13 avril 2020
Statut
Membre
Dernière intervention
26 juin 2020
-
26 juin 2020 à 11:16
jeremayb - 29 juin 2020 à 12:03
jeremayb - 29 juin 2020 à 12:03
A voir également:
- Passage de tableau optionnel en paramètre, erreur
- Tableau croisé dynamique - Guide
- Erreur 0x80070643 - Guide
- Tableau ascii - Guide
- Tableau word - Guide
- Le fichier contient un tableau présentant un extrait des livres les plus prêtés à paris en 2016. filtrez le tableau pour ne faire apparaître que les bandes dessinées ado. puis filtrez le tableau pour ne faire apparaître que celles dont l'auteur est zep. quel est le titre de la bande dessinée ado de zep qui a été la plus prêtée d'après ce tableau ? ✓ - Forum Windows 10
2 réponses
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 744
Modifié le 26 juin 2020 à 11:44
Modifié le 26 juin 2020 à 11:44
Oui.
2 choses :
1- Tester si l'argument passé en Optional Variant est un tableau, grâce à la fonction IsArray()
Exemple :
2- Lance le code ci-dessus en pas à pas, et regarde dans la fenêtre des variables locales (menu affichage de l'éditeur VBA).
La variable tabl est de type Variant/Variant(0 To 2)
Mais, ces éléments (tabl(0), tabl(1) et tabl(2)) sont de type Variant/String.
VBA l'a automatiquement reconnu...
2 choses :
1- Tester si l'argument passé en Optional Variant est un tableau, grâce à la fonction IsArray()
Exemple :
Option Explicit Sub Appel() Dim monTab As Variant, autreTab As Variant monTab = Array("pomme", "poire", "scoubidou") MsgBox QuelIndex("scoubidou") 'Appel sans variable tableau MsgBox QuelIndex("scoubidou", monTab) 'Appel avec tableau "Variant" remplit MsgBox QuelIndex("scoubidou", autreTab) 'Appel avec tableau "Variant" vide End Sub Private Function QuelIndex(Quoi As String, Optional tabl As Variant) As Integer Dim i As Integer If IsMissing(tabl) Then 'teste si le paramètre Optionnel tabl est manquant MsgBox "paramètre manquant" QuelIndex = -1 Else If IsArray(tabl) Then 'teste si tabl est une variable tableau For i = LBound(tabl) To UBound(tabl) If tabl(i) = Quoi Then QuelIndex = i: Exit Function Next i Else QuelIndex = -1 'si tabl n'est pas un tableau retourne -1 End If End If End Function
2- Lance le code ci-dessus en pas à pas, et regarde dans la fenêtre des variables locales (menu affichage de l'éditeur VBA).
La variable tabl est de type Variant/Variant(0 To 2)
Mais, ces éléments (tabl(0), tabl(1) et tabl(2)) sont de type Variant/String.
VBA l'a automatiquement reconnu...
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 744
26 juin 2020 à 11:28
26 juin 2020 à 11:28
Bonjour,
La réponse est dans le message d'erreur.
Tu ne peux pas passer un tableau de String en Optionnel.
Deux choix :
> Soit tu le rends obligatoire (quitte à ce qu'il soit vide),
> Soit tu demandes un Variant :
La réponse est dans le message d'erreur.
Tu ne peux pas passer un tableau de String en Optionnel.
Deux choix :
> Soit tu le rends obligatoire (quitte à ce qu'il soit vide),
> Soit tu demandes un Variant :
Sub chercher_ac_codestation(phase As String, Optional debut As Integer, Optional fin As Integer, Optional codestation As String, Optional MonTab)
jeremayb
Messages postés
18
Date d'inscription
lundi 13 avril 2020
Statut
Membre
Dernière intervention
26 juin 2020
26 juin 2020 à 11:31
26 juin 2020 à 11:31
Merci pour ta réponse, en indiquant MonTab sans mettre de () après le logiciel va quand même "comprendre" qu'il a affaire a un tableau ?
Modifié le 29 juin 2020 à 12:03