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

problème avec combobox

5 réponses
Avatar
Greffier
Bonjour,

Ma question est peut-être mal dirigée, mais je vous la soumet.
En VBA.
J'ai garni un combobox avec les lettres de l'alphabet avec avec la méthode
"additem" : combobox1.additem "A".
Je récupère ces valeurs par l'évènement combobox1_change : Lettre =
Me.ComboBox1.Text. (définie en string)
Je compare cette valeur à une cellule d'un tableau contenant des lettres
cells(lig,col) = Lettre ou cells(lig,col)<> Lettre, et je m'aperçois
qu'aucune des comparaisons ne marchent correctement.

Où est l'erreur.

Merci pour vos réponses.

Greffier.

5 réponses

Avatar
anonymousA
Bonjour,

si comme tu le dis, tu remplis le combobox par des lettres et que tu
compares ( mais la question est comment compares-tu ? ) alors que tu es
certain que dans ton range , il y a bien ce texte , il ne devrait pa sy
avoir de problème

exemple

Private Sub UserForm_Initialize()

With Me.ComboBox1
.AddItem "A"
.AddItem "B"
.AddItem "C"
.AddItem "D"
End With
End Sub

et en range("A1:A5"), tu as des occurences qui sont A , B , C ou D

Private Sub ComboBox1_Change()

MsgBox Me.ComboBox1.Text

MsgBox Application.WorksheetFunction.Match(Me.ComboBox1.Text,
Range("A1:A5"), 0)


End Sub

A+



Bonjour,

Ma question est peut-être mal dirigée, mais je vous la soumet.
En VBA.
J'ai garni un combobox avec les lettres de l'alphabet avec avec la méthode
"additem" : combobox1.additem "A".
Je récupère ces valeurs par l'évènement combobox1_change : Lettre =
Me.ComboBox1.Text. (définie en string)
Je compare cette valeur à une cellule d'un tableau contenant des lettres
cells(lig,col) = Lettre ou cells(lig,col)<> Lettre, et je m'aperçois
qu'aucune des comparaisons ne marchent correctement.

Où est l'erreur.

Merci pour vos réponses.

Greffier.




Avatar
Greffier
Bonjour,

Merci anonymousA, je vais exploiter le filon que tu me propose avec la
solution match, et je te donne une suite.

bonne journée.

Greffier.

"anonymousA" a écrit dans le message de news:
461bcf38$0$5105$
Bonjour,

si comme tu le dis, tu remplis le combobox par des lettres et que tu
compares ( mais la question est comment compares-tu ? ) alors que tu es
certain que dans ton range , il y a bien ce texte , il ne devrait pa sy
avoir de problème

exemple

Private Sub UserForm_Initialize()

With Me.ComboBox1
.AddItem "A"
.AddItem "B"
.AddItem "C"
.AddItem "D"
End With
End Sub

et en range("A1:A5"), tu as des occurences qui sont A , B , C ou D

Private Sub ComboBox1_Change()

MsgBox Me.ComboBox1.Text

MsgBox Application.WorksheetFunction.Match(Me.ComboBox1.Text,
Range("A1:A5"), 0)


End Sub

A+



Bonjour,

Ma question est peut-être mal dirigée, mais je vous la soumet.
En VBA.
J'ai garni un combobox avec les lettres de l'alphabet avec avec la
méthode "additem" : combobox1.additem "A".
Je récupère ces valeurs par l'évènement combobox1_change : Lettre =
Me.ComboBox1.Text. (définie en string)
Je compare cette valeur à une cellule d'un tableau contenant des lettres
cells(lig,col) = Lettre ou cells(lig,col)<> Lettre, et je m'aperçois
qu'aucune des comparaisons ne marchent correctement.

Où est l'erreur.

Merci pour vos réponses.

Greffier.




Avatar
lSteph
Bonjour,

Supposons:

Private Sub UserForm_Initialize()
Dim i As Byte
For i = 65 To 90
ComboBox1.AddItem Chr(i)
Next
End Sub
'''''''''''''''''''''''''''''''''''''''''''''''''''''

' on obtient des majuscules après la comparaison devra en tenir compte
exemple pour toute acception:
'lcase(Cells(li,co))=lcase(ComboBox1)

'Cdlt.

'lSteph




On 10 avr, 19:07, "Greffier" wrote:
Bonjour,

Ma question est peut-être mal dirigée, mais je vous la soumet.
En VBA.
J'ai garni un combobox avec les lettres de l'alphabet avec avec la méth ode
"additem" : combobox1.additem "A".
Je récupère ces valeurs par l'évènement combobox1_change : Lettre =
Me.ComboBox1.Text. (définie en string)
Je compare cette valeur à une cellule d'un tableau contenant des lettres
cells(lig,col) = Lettre ou cells(lig,col)<> Lettre, et je m'aperçois
qu'aucune des comparaisons ne marchent correctement.

Où est l'erreur.

Merci pour vos réponses.

Greffier.


Avatar
Greffier
Bonjour,

J'ai longuement exploité les 2 solutions, mais je n'aboutit à aucune
solution.
Je vais donc vous exprimer, ce que j'aurais du faire dès le départ, mon
problème.
Si :
r est le n° de ligne
LastRow la dernière ligne
ColY est une colonne contenant une valeur numérique
représentant des points de charges
ColB est une colonne contenant les lettres de A à N
représentant les bâtiments
ColH est une colonne contenant de temps en temps une valeur
numérique représentant les sorties en cours d'AG

La condition exprime donc que l'on recherche un copropriétaire présent dans
la salle, appartenant à l'un bâtiment A à N, intéressé par le vote sur le
devis.
Le copropriétaire doit donc être compris dans la liste (1, LastRow), voir
des charges à payer (ColY), appartenir à l'un des bâtiments, sinon on
examine le copropriétaire suivant.

Jusqu'à présent j'ai tout utilisé, les boucles, les imbrications .... mais
la comparaison sur le bâtiment ne marche pas. Pourtant le pas à pas montre
que j'ai les bonnes valeurs.

Le "OR" signifie que le copropriétaire est présent au début de l'AG mais
qu'il peut au moment du vote être absent.

L'application de match tombe bien sur le premier copropriétaire du bâtiment
mais on ne peut pas aller plus loin : atteindre le suivant.

Je ne sais pas si finalement je ne vais mettre les copropriétaires
intéressés en table, et puis vider la table petit à petit.



If r > 1 And r <= LastRow And Cells(r, ColY) = "" And Cells(r, ColB) <>
LettreDuBatiment Or Cells(r, ColH) <> "" Then
r = r + 1
TextBox4.Text = FormatNumber(r, 0)
End If


J'espère avoir été plus clair.

Cordialement.

Greffier.




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

Bonjour,

Supposons:

Private Sub UserForm_Initialize()
Dim i As Byte
For i = 65 To 90
ComboBox1.AddItem Chr(i)
Next
End Sub
'''''''''''''''''''''''''''''''''''''''''''''''''''''

' on obtient des majuscules après la comparaison devra en tenir compte
exemple pour toute acception:
'lcase(Cells(li,co))=lcase(ComboBox1)

'Cdlt.

'lSteph




On 10 avr, 19:07, "Greffier" wrote:
Bonjour,

Ma question est peut-être mal dirigée, mais je vous la soumet.
En VBA.
J'ai garni un combobox avec les lettres de l'alphabet avec avec la méthode
"additem" : combobox1.additem "A".
Je récupère ces valeurs par l'évènement combobox1_change : Lettre > Me.ComboBox1.Text. (définie en string)
Je compare cette valeur à une cellule d'un tableau contenant des lettres
cells(lig,col) = Lettre ou cells(lig,col)<> Lettre, et je m'aperçois
qu'aucune des comparaisons ne marchent correctement.

Où est l'erreur.

Merci pour vos réponses.

Greffier.


Avatar
Greffier
Bonjour,

Je pense avoir trouvé une solution en combinant match et for next :

For rr = r To LastRow
If Cells(rr, ColY) <> "" And Cells(rr, ColH) = "" And Cells(rr, ColB) =
LettreDuBatiment Then
r = rr
TextBox4.Text = FormatNumber(r, 0)
Exit For
End If
Next rr

et dans combobox change:
r = FirstRow - 2 + Application.WorksheetFunction.Match(LettreDuBatiment,
(Range(CenL(ColB) & FirstRow & ":" & CenL(ColB) & LastRow)), 0)

par contre il faut définir r et rr as long, sinon j'ai des dépassements de
capacité.

Merci, pour votre aide, surtout pour WorksheetFunction.Match, que je ne
pensais pas utiliser.

Greffier.


"Greffier" a écrit dans le message de news:
ewQ$$
Bonjour,

J'ai longuement exploité les 2 solutions, mais je n'aboutit à aucune
solution.
Je vais donc vous exprimer, ce que j'aurais du faire dès le départ, mon
problème.
Si :
r est le n° de ligne
LastRow la dernière ligne
ColY est une colonne contenant une valeur numérique
représentant des points de charges
ColB est une colonne contenant les lettres de A à N
représentant les bâtiments
ColH est une colonne contenant de temps en temps une valeur
numérique représentant les sorties en cours d'AG

La condition exprime donc que l'on recherche un copropriétaire présent
dans la salle, appartenant à l'un bâtiment A à N, intéressé par le vote
sur le devis.
Le copropriétaire doit donc être compris dans la liste (1, LastRow), voir
des charges à payer (ColY), appartenir à l'un des bâtiments, sinon on
examine le copropriétaire suivant.

Jusqu'à présent j'ai tout utilisé, les boucles, les imbrications .... mais
la comparaison sur le bâtiment ne marche pas. Pourtant le pas à pas montre
que j'ai les bonnes valeurs.

Le "OR" signifie que le copropriétaire est présent au début de l'AG mais
qu'il peut au moment du vote être absent.

L'application de match tombe bien sur le premier copropriétaire du
bâtiment mais on ne peut pas aller plus loin : atteindre le suivant.

Je ne sais pas si finalement je ne vais mettre les copropriétaires
intéressés en table, et puis vider la table petit à petit.



If r > 1 And r <= LastRow And Cells(r, ColY) = "" And Cells(r, ColB) <>
LettreDuBatiment Or Cells(r, ColH) <> "" Then
r = r + 1
TextBox4.Text = FormatNumber(r, 0)
End If


J'espère avoir été plus clair.

Cordialement.

Greffier.




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

Bonjour,

Supposons:

Private Sub UserForm_Initialize()
Dim i As Byte
For i = 65 To 90
ComboBox1.AddItem Chr(i)
Next
End Sub
'''''''''''''''''''''''''''''''''''''''''''''''''''''

' on obtient des majuscules après la comparaison devra en tenir compte
exemple pour toute acception:
'lcase(Cells(li,co))=lcase(ComboBox1)

'Cdlt.

'lSteph




On 10 avr, 19:07, "Greffier" wrote:
Bonjour,

Ma question est peut-être mal dirigée, mais je vous la soumet.
En VBA.
J'ai garni un combobox avec les lettres de l'alphabet avec avec la
méthode
"additem" : combobox1.additem "A".
Je récupère ces valeurs par l'évènement combobox1_change : Lettre >> Me.ComboBox1.Text. (définie en string)
Je compare cette valeur à une cellule d'un tableau contenant des lettres
cells(lig,col) = Lettre ou cells(lig,col)<> Lettre, et je m'aperçois
qu'aucune des comparaisons ne marchent correctement.

Où est l'erreur.

Merci pour vos réponses.

Greffier.