Implementer un combobox quand c'est une nouvelle valeur

Bonjour à toutes et à tous,

Je souhaiterai réaliser une macro qui implemente ma combobox à partir d'une plage de cellule variable ( qui se trouve en colonne B) . Je m'explique je voudrais que dès ma macro trouve une nouvelle valeur, elle ajoute cette valeur dans le combobox.

Voici, ci-dessous, ce que j'ai essayé de faire :

Private Sub UserForm_Initialize()
Dim var As String, i As Integer, DernLigne As Integer
var = ""
DernLigne = Range("B" & Rows.Count).End(xlUp).Row

For i = 3 To DernLigne

If Cells(i, B) = Cells(i + 1, B) Then
 var = ""
 Else
    var = Cells(i + 1, B)
    Combobox1.AddItem = var
End If

Next i

End Sub

Quelqu'un pourrait-il m'aider ?

Cordialement,

Marion

Bonjour,

Je n'ai pas compris le pourquoi du test suivant, mais si il est là c'est qu'il doit y avoir un besoin quelconque ?

If Cells(i, B) = Cells(i + 1, B) Then

De même qu'en faisant ça :

var = Cells(i + 1, B)

tu n'ajoute pas la 1ère valeur, c'est normal (un en-tête ? Dans ce cas pourquoi ne pas faire partir i à 4 ?)

Sinon à première vue :

Cells(i, "B")

il ne faut pas oublier les guillemets autour de la lettre de la colonne (à modifier sur les 3 occurrences).

Combobox1.AddItem = var

=>

ComboBox1.AddItem (var)

De même qu'à moins que ton fichier n'est qu'un seul onglet, et que ton userform ne soit ouvert qu'à partir de cet onglet, personnellement, je préciserais le nom de l'onglet à chaque fois, cela ne coût pas grand chose, et cela peut éviter des erreurs.

Cordialement,

Merci pour votre réponse Effectivement je veux bien prendre la première valeur aussi en compte. Voilà ce que j'ai ré-écris en tenant compte de vos conseils. Ne manque t'il pas des "Value" pour que cela fonctionne. Je m'explique si la valeur de la cellule N est égale à la valeur de la cellule N + 1 alors on ne met rien dans var. Par contre si la valeur de la cellule N n'est pas égale à la valuer de la cellule N+1 alors var = la valeur de ma cellule N.

Private Sub UserForm_Initialize()
Dim var As String, i As Integer, DernLigne As Integer
var = ""
DernLigne = Range("B" & Rows.Count).End(xlUp).Row

For i = 3 To DernLigne

If Cells(i, "B") = Cells(i + 1, "B") Then
 var = ""
 Else
    var = Cells(i, "B")

    ComboBox1.AddItem (var)

End If

Next i

End Sub

Ne manque t'il pas des "Value" pour que cela fonctionne.

Vous pouvez les mettre si cela vous semble plus lisible et plus clair, mais ils ne sont pas obligatoires. Normalement le code devrait fonctionner en l'état.

Je m'explique si la valeur de la cellule N est égale à la valeur de la cellule N + 1 alors on ne met rien dans var. Par contre si la valeur de la cellule N n'est pas égale à la valuer de la cellule N+1 alors var = la valeur de ma cellule N.

Je ne comprend toujours pas à quoi cela sert ? Pour éviter les doublons ? Mais si la valeur en doublon n'est pas sur la ligne suivante mais 3 ligne après, cela ne fonctionne plus.

Par exemple si dans votre colonne vous avez :

1
2
3
3
4

Dans votre liste, vous aurez bien

1
2
3
4

Par contre, avec votre test, si dans votre colonne il y a :

1
2
3
4
3

Dans votre ComboBox, vous aurez ça, car les deux valeurs identiques ne sont pas à la suite :

1
2
3
4
3

Comment vous différenciez les 2 valeurs "3" ?

Je ne sais pas comment ces valeurs viennent s'ajouter dans la colonne "B" de votre onglet, si c'est manuellement ou via un traitement, mais il faudrait soit prévoir un vrai traitement des doublons à ce moment là, soit faire ce test au chargement du userform comme vous avez voulu le faire, c'est en effet possible, mais actuellement, c'est incomplet.

Si ce n'est pas pour gérer les doublons, je ne serais pas contre de plus amples précisions.

Cordialement.

Normalement pas de soucis pour ça car dans mon fichier les valeurs identiques se suivent :

1

1

1

2

2

2

3

3

3

Par contre, je suis intéréssé dans le cas ou effectivement les valeurs identiques ne se suivent pas. Là, par contre je ne serai pas comment faire...

marions1857 a écrit :

Par contre, je suis intéréssé dans le cas ou effectivement les valeurs identiques ne se suivent pas. Là, par contre je ne serai pas comment faire...

Pour gérer les doublons, je vous renvoi vers le site de Jacques Boisgontier, qui participe activement sur différents forums, vous y trouverez différents exemples pour gérer les doublons (avec différentes méthodes, en triant ou non la liste, etc etc) :

http://boisgontierjacques.free.fr/pages_site/formulairelistesansdoublons.htm#Dictionnary

Normalement vous avez tout ce qu'il faut sur cette page pour vous débarrasser des doublons peu importe leur position.

Cordialement,

Super merci beaucoup Je vais aller regarder !

Rechercher des sujets similaires à "implementer combobox quand nouvelle valeur"