VBA: Erreur dans double ComboBox

yeti_yeti

XLDnaute Junior
Bonjour,

J'ai un petit soucis depuis que je suis passé à Excel 2007... J'ai un document que j'utilisais dans Excel 2003 bourré de macros.

Dans la partie qui plante, c'est un FORM avec 2 ComboBox (Search_Product et Search_Country). Les données de Search_Country dépendent du choix de Search_Product... et c'est à ce moment là que ça plante. En fait lorsqu'on choisi une valeure dans Search_Product, j'ai une erreur "Run-time error '13': Type mismatch" et en cliquant sur Debug, je tombe sur cette partie du code qui apparemment plante:

Code:
d = Application.Match(Search_Product, [DB_Products], 0)
For i = d To d + Application.CountIf([DB_Products], Search_Product) - 1
Search_Country.AddItem [DB_Country].Cells(i, 1).Value
Next i

Le problème, c'est que je n'ai apporté aucune modification depuis des mois et que ça a toujours très bien marché... mais on a remarqué cette erreur depuis qu'on est passé à la version 2007.

Est-ce que vous voyez qqch qui pose problème à première vue?
Si vous avez besoin de plus d'information (comme DB_Country / DB_Products qui sont des Name>Define), n'hésitez pas à me demander.

Merci d'avance
Salutations

YeTi
 
G

Guest

Guest
Re : VBA: Erreur dans double ComboBox

Bonjour,

Comme Application.Match est un equivalent de la fonction de feuille de calcul Equiv qui peut renvoyer une valeur d'erreur (ex: #NA) il vaut mieux le déclarer en type variant et tester le résultat. C'est moins vrai pour CountIf (nb.si) qui renvoie 0 s'il ne trouve rien.

Tu peux essayer d'adapter en fonction de :

VB:
 Dim d As Variant, cpt As Variant
 
d = Application.Match(Search_Product, [DB_Products], 0)
cpt = Application.CountIf([DB_Products], Search_Product) - 1
 
If Not IsError(cpt) And Not IsError(d) Then
For i = d To d + cpt - 1
Search_Country.AddItem [DB_Country].Cells(i, 1).Value
Next i
Else
MsgBox "Erreur " & vbCrLf & "d = " & CStr(d) & vbCrLf & "cpt = " & CStr(cpt)
End If

A+
 
G

Guest

Guest
Re : VBA: Erreur dans double ComboBox

bonjour,

C'est ce que je te disais plus haut: d = Application.Match(Search_Product, [DB_Products], 0)
ne trouve pas le produit cherché.

Pourquoi? J'en sais rien.

A+
 

yeti_yeti

XLDnaute Junior
Re : VBA: Erreur dans double ComboBox

Bonjour,

Merci de ton aide.

J'ai trouvé le problème. Si "d = Application.Match(Search_Product, [DB_Products], 0)" ne trouvait pas le produit cherché c'est simplement car il manquait un $ pour bloquer le groupe de cellules dans mes "Name>Define" (j'ai une version anglaise d'Excel, je ne connais pas la version française). Sans le $, le champ de cellules était variable ce qui créait ce problème...

Salutations

YeTi
 

yeti_yeti

XLDnaute Junior
Re : VBA: Erreur dans double ComboBox

Et bien je ne saurais dire...

Soit la version 2003 était moins "pénible" et comprenait ça sans trop de problèmes... soit quelqu'un a modifié sans faire exprès ce champs...

Mystère résolu quoi qu'il en soit!
 

Discussions similaires

  • Question
Microsoft 365 vba
Réponses
14
Affichages
1 K

Statistiques des forums

Discussions
312 559
Messages
2 089 637
Membres
104 234
dernier inscrit
boulayy