Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Vérification si une cellule est égale à un combobox

2 réponses
Avatar
Paul-François
Bonsoir,

Pourquoi lorsque je demande une vérification de la cellule active égale au
combo1 elle ne se fait pas ?

Pourtant les 2 valeurs sont égales ?

J'ai essayé avec Me.Combo1.Value sans succès ! Où est mon erreur ?

Bas:
If ActiveCell = Combo1.Value Then
ActiveCell.Offset(0, 5).Copy
Worksheets("Feuil2").Activate
Range("A2").Activate
Bas1:
If ActiveCell = "" Then
ActiveSheet.Paste
Else
ActiveCell.Offset(7, 0).Activate
GoTo Bas1
End If
Else
ActiveCell.Offset(1, 0).Activate
GoTo Bas
End If

Merci

Paul-François

2 réponses

Avatar
michdenis
Bonsoir Paul-François,

Avec un combobox et un textbox, il faut se rappeler que même si ces contrôles affichent une valeur numérique, ces derniers
retournent une donnée TEXTE.

Supposons que tu as la valeur 10 dans une cellule et 10 comme valeur affichée dans un combobox.
si tu fais la comparaison suivante : If ActiveCell = Combo1.Value Then , tu n'obtiendras pas une égalité car tu compares une
valeur numérique avec du texte. La cellule contient "10" le chiffre tandis que le combobox contient 2 caractères formées de 1 et 0
qui donnent "10" mais la signification dans les 2 cas est clairement différente pour excel.

Pour faire face à cette situation, différentes alternatives :

A ) Utilisation des fonctions de conversion : Cdbl(), Clng() ...et plusieurs autres que tu peux consulter si tu fais une recherche
dans l'aide sous le mot "conversion" ou "fonctions de conversion". Ces fonctions ont la capacité de transformer l'entrée Texte "10"
en donnée numérique. La fonction que tu devras utiliser dépend du type de données que contient ton combobox. L'aide d'excel sur le
sujet est très précis.

If ActiveCell = cdbl(Combo1.Value ) ou If ActiveCell = clng(Combo1.Value)

IMPORTANT : Pour pouvoir utiliser les fonctions de conversion, si tes données numériques utilisent un séparateur décimale, ce doit
être celui définit dans le panneau de configuration de Windows sinon cela va planter !

Une façon simple, si tes données dans ton combobox contient des données de type "Entier" ou "Double" avec le point comme séparateur
décimale est d'utilisé ceci :

If ActiveCell = val(Combo1.Value)
La fonction Val() ne fonctionne qu'avec le point comme séparateur décimale.


Et si les 2 contrôles contiennent du texte, attention à la casse ...elle doit être identique !


Salutatioins!





"Paul-François" a écrit dans le message de news: TL9Me.22036$
Bonsoir,

Pourquoi lorsque je demande une vérification de la cellule active égale au
combo1 elle ne se fait pas ?

Pourtant les 2 valeurs sont égales ?

J'ai essayé avec Me.Combo1.Value sans succès ! Où est mon erreur ?

Bas:
If ActiveCell = Combo1.Value Then
ActiveCell.Offset(0, 5).Copy
Worksheets("Feuil2").Activate
Range("A2").Activate
Bas1:
If ActiveCell = "" Then
ActiveSheet.Paste
Else
ActiveCell.Offset(7, 0).Activate
GoTo Bas1
End If
Else
ActiveCell.Offset(1, 0).Activate
GoTo Bas
End If

Merci

Paul-François
Avatar
Paul-François
Merci

Problème corrigé :

If ActiveCell.Value = CLng(CboPièce.Value) Then


"michdenis" a écrit dans le message de news:

Bonsoir Paul-François,

Avec un combobox et un textbox, il faut se rappeler que même si ces
contrôles affichent une valeur numérique, ces derniers
retournent une donnée TEXTE.

Supposons que tu as la valeur 10 dans une cellule et 10 comme valeur
affichée dans un combobox.
si tu fais la comparaison suivante : If ActiveCell = Combo1.Value Then ,
tu n'obtiendras pas une égalité car tu compares une
valeur numérique avec du texte. La cellule contient "10" le chiffre tandis
que le combobox contient 2 caractères formées de 1 et 0
qui donnent "10" mais la signification dans les 2 cas est clairement
différente pour excel.

Pour faire face à cette situation, différentes alternatives :

A ) Utilisation des fonctions de conversion : Cdbl(), Clng() ...et
plusieurs autres que tu peux consulter si tu fais une recherche
dans l'aide sous le mot "conversion" ou "fonctions de conversion". Ces
fonctions ont la capacité de transformer l'entrée Texte "10"
en donnée numérique. La fonction que tu devras utiliser dépend du type de
données que contient ton combobox. L'aide d'excel sur le
sujet est très précis.

If ActiveCell = cdbl(Combo1.Value ) ou If ActiveCell = clng(Combo1.Value)

IMPORTANT : Pour pouvoir utiliser les fonctions de conversion, si tes
données numériques utilisent un séparateur décimale, ce doit
être celui définit dans le panneau de configuration de Windows sinon cela
va planter !

Une façon simple, si tes données dans ton combobox contient des données de
type "Entier" ou "Double" avec le point comme séparateur
décimale est d'utilisé ceci :

If ActiveCell = val(Combo1.Value)
La fonction Val() ne fonctionne qu'avec le point comme séparateur
décimale.


Et si les 2 contrôles contiennent du texte, attention à la casse ...elle
doit être identique !


Salutatioins!





"Paul-François" a écrit dans le message
de news: TL9Me.22036$
Bonsoir,

Pourquoi lorsque je demande une vérification de la cellule active égale au
combo1 elle ne se fait pas ?

Pourtant les 2 valeurs sont égales ?

J'ai essayé avec Me.Combo1.Value sans succès ! Où est mon erreur ?

Bas:
If ActiveCell = Combo1.Value Then
ActiveCell.Offset(0, 5).Copy
Worksheets("Feuil2").Activate
Range("A2").Activate
Bas1:
If ActiveCell = "" Then
ActiveSheet.Paste
Else
ActiveCell.Offset(7, 0).Activate
GoTo Bas1
End If
Else
ActiveCell.Offset(1, 0).Activate
GoTo Bas
End If

Merci

Paul-François