Manoeuvre listBox et modification d'un enregistrement

Bonjour cameleon1881,

Je n'ai pas testé ... mais je crois que le code est bon ...

https://forum.excel-pratique.com/excel/combobox-sans-doublon-30653#p174156

ric

Bonjour cameleon1881,

Code testé avec succès ...

Private Sub AlimenterEtPositionnerDerligCombobox1()
Dim DerLig As Integer, i As Integer
Dim C As Range, Paspresent As Boolean

    DerLig = Sheets("F1").Range("A" & Rows.Count).End(xlUp).row

    For Each C In Sheets("F1").Range("B2:B" & DerLig)
        If C.Value <> "" Then
            'on cherche s'il existe dans la combobox
            If ComboBox1.ListCount > 0 Then  'Deja des items dans la liste
                Paspresent = True
                For i = 0 To ComboBox1.ListCount - 1
                    If CDate(ComboBox1.List(i)) = CDate(C.Value) Then
                        Paspresent = False
                    End If
                Next
            Else 'pas encore d'item dans la liste
                Paspresent = True
            End If
            If Paspresent = True Then ComboBox1.AddItem C.Value
        End If
    Next C
    ComboBox1.ListIndex = ComboBox1.ListCount - 1
End Sub

ric

Merci bien Ric :) ça reprend la logique que tu m'as envoyé dans le lien tout à l'heure oui.

Mais comme même, je joints mon fichier avec le bloc compteur que j'ai fait et qui ne marche pas ... en fait quand il s'agissait dans un autre exemple chez moi de mettre à jour une colonne excel, ça a fonctionné. Je ne sais pas pourquoi ça ne le fait pas quand il s'agit de mettre à jour une combobox ?

Re

mintenant je vais décortiquer ton code là :)

Bonjour,

Si j'ai bien compris, tu veux comparer les dates avec la dernière date (ligne du bas) ...

Si c'est bien cela, c'est tout simple ... dans la première bouche ( j ) ... tu compares toutes les lignes avec la ligne du bas ...

Mais quand la boucle arrives à la ligne du bas, en la comparant à elle-même, le compteur = 1 ...

Il faut donc exclure la ligne du bas de la comparaison avec elle-même ... et là, ça fonctionne ...

For j = 2 To DerLig - 1    ' << ici le -1 empêche la comparaison de la ligne du bas avec elle-même
If Sheets("F1").Range("B" & DerLig) = Sheets("F1").Range("B" & j) Then compteur = 1
Next j

Mais si tu veux avoir un Combobox sans doublons et qu'il y a plusieurs dates semblables ... ce n'est pas la bonne solution ...

ric

Bon en fain de compte c'est ton code proposé qui marche.

J'ai essayé celui que tu m'as demandé de corriger (j=2 To DerLig-1) mais en vain.

Finalement c'est ça le code qui permet d'avoir une combobox sans doublons ni vides :

Private Sub AlimenterEtPositionnerDerligCombobox1()
Dim DerLig As Integer, i As Integer
Dim C As Range, Paspresent As Boolean

    DerLig = Sheets("F1").Range("A" & Rows.Count).End(xlUp).row

    For Each C In Sheets("F1").Range("B2:B" & DerLig)
        If C.Value <> "" Then
            'on cherche s'il existe dans la combobox
            If ComboBox1.ListCount > 0 Then  'Deja des items dans la liste
                Paspresent = True
                For i = 0 To ComboBox1.ListCount - 1
                    If CDate(ComboBox1.List(i)) = CDate(C.Value) Then
                        Paspresent = False
                    End If
                Next
            Else 'pas encore d'item dans la liste
                Paspresent = True
            End If
            If Paspresent = True Then ComboBox1.AddItem C.Value
        End If
    Next C
    ComboBox1.ListIndex = ComboBox1.ListCount - 1
End Sub

Les mercis ne suffisent plus l'ami :)

Bonjour,

C'est toujours un plaisir d'apprendre via vos codes ...

C'est une mine d'apprentissage et de révision pour moi ...

ric

c'est vrai ça l'est pour moi aussi, qui suis adepte d'apprentissage par la pratique/exemples :)

Bah c'et devenue une obsession et ça m'occupe l'esprit toute la journée !!!!

J'ai essayé de ramasser tout ce qu'on a vu ensemble dans ce fichier mis à jour :)

Il y un dysfonctionnement : lorsque je clique sur une date du combobox, la ligne correspobdante s'affiche seule dans la listBox OK. Lorsque je clique sur cette ligne OK les données se mettent dans textbox1, 2, et 4.

Mais lorsque je veux modifier ces valeurs et les voir s'actualiser dans la listbox là c'est pas régulier. Parfois ça passe et parfois non. Et notamment avec textBox2 qui est la date (surement car elle est liée à la combobox et à la listeBox)

S'il te plait Ric quand tu trouve du temps dépanne moi :)

Me

Et je parie que tu t'attendais à ce que je revienne te consulter :))))

Bonjour cameleon1881,

Ouula! Ouula! ... tu as brassé la soupe ...

Listbox1.clear ou Combobox.clear ... le .clear ne fait que vider la liste ... nul besoin de redéfinir le nombre de colonnes ni leurs largeurs ...

J'ai mis les lignes inutiles ou au contenu erroné en commentaire au lieu de les supprimer afin que tu voies bien mes changements ...

Il y a 2 enregistrements avec la même date ... je ne sais pas si sur le fichier de travail il y aura aussi des doublons de date ... en changeant la sélection dans le combobox1, c'est la 1re occurrence de cette date qui est sélectionnée dans la liste box ...

Attention : row et rows sont des propriétés et ne peuvent pas être utiliser en variable ... Utilise iRow ou LRow ... mais pas row ni rows ...

Dis-moi si le déroulement te convient ...

ric

Note : Éventuellement, l'on pourrait ajouter 2 boutons < et > pour naviguer sur les dates identiques ...
Mais là, il est minuit passé ...

Bonjour Cameleon1881,

Je n'aurais pas dû parler des "SpinButton" ... je n'ai pu m'empêcher de regarder et, en fin de compte, je l'ai fait ... il passe 2h du matin ...

Pour tester, dans le "Combobox1", sélectionne "08/08/2022", il y a 3 enregistrements à cette date ... test "SpinbuttonUp" et "SpinbuttonDown" ...

ric

C'est fabuleux Ric

Là à cette étape-là il faudra que j'aprenne tout ce qu tu m'as balancé via des cours sur internet : listindex, listcount pourquoi les -1 etc etc ... je suis qlq1 qui ne fais pas de marche arrière dans la vie en général :))))

Merci beaucoup et j'aimerais vraiment te connaitre de plus et devenir des amis tellement tu est quelqu'un de généreux, sympathique et de grand coeur :)

Tout le succès mon ami et à bientôt sûrement.

je ne sais pas si c'est permis d'échanger les psoeudo FB ici !

Me

Bonjour cameleon1881,

Merci pour tes appréciations ...

Ne me recherche pas sur les réseaux sociaux ... la recherche va être vaine ... je n'utilise que quelques forums tout au plus ...

ric

Bonjour cameleon1881,

Je te retourne le même fichier dans lequel j'ai ajouté des commentaires explicatifs.

Désolé de ne pas l'avoir fait dès le départ ... j'oublie tout le temps ...

En fait, je suis paresseux ...

ric

Rechercher des sujets similaires à "manoeuvre listbox modification enregistrement"