Je coince...

Résolu
jen_peplu Messages postés 33 Date d'inscription   Statut Membre Dernière intervention   -  
jen_peplu Messages postés 33 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

Comment dois-je faire pour insérer à partir d'un combobox sur un userform, le numéro contenu dans ce combobox dans une colonne d'une feuille excel à son emplacement classé par ordre croissant (vous suivez ) ?

Le combobox reçoit sa listindex de la ("feuil1").
Je souhaiterai coller cette valeur dans la ("colonneA") de la ("feuil2") à son emplacement classé si celui-ci a été supprimé.

exemple :

combobox.listindex = 1 2 3 4 5 6 7 8 9 10 ,etc
("feuil2").("colonneA") = 1 2 3 7 8 10,...

Si je sélectionne le 4 dans la combo, est-il possible de remettre ce 4 dans la ("feuil2") entre le 3 et le 7 en sélectionnant le 7, puis en décalant la ligne avec "Selection.EntireRow.Insert" et en mettant la valeur dans la ligne vide ainsi créé ?
Je ne sais pas comment faire pour sélectionner la valeur supérieure à celle recherchée. Je sais le faire en collant dans la dernière cellule vide de la colonne puis en triant, mais je souhaiterai avancer un peu dans mon apprentissage.

J'espère être assez clair

Cordialement

2 réponses

  1. pilas31 Messages postés 1878 Statut Contributeur 648
     
    Bonjour,

    Deux syntaxes possibles :

    une boucle for :
    maxlig = Sheets("Feuil2").Range("A65535").End(xlUp).Row
    For lig = 1 To maxlig
        If CInt(ComboBox1.Value) < Cells(lig, 1) Then
            Sheets("Feuil2").Rows(lig).Insert Shift:=xlDown
            Sheets("Feuil2").Cells(lig, 1) = ComboBox1.Value
            Exit For
        End If
    Next lig
    


    Une boucle While plus simple :

    lig = 1
    While CInt(ComboBox1.Value) > Cells(lig, 1)
        lig = lig + 1
    Wend
    Sheets("Feuil2").Rows(lig).Insert Shift:=xlDown
    Sheets("Feuil2").Cells(lig, 1) = ComboBox1.Value
    


    Plusieurs remarques :
    Attention car ComboBox.Value renvoie un string et pour comparer avec un entier il faut convertir (d'ou le CInt).
    Penser aussi au traitement si le chiffre existe déjà
    Penser aussi au cas ou c'est le plus grand. Le while l'ajoute à la fin, le for ne fait rien...

    Voila à adapter

    A+
    0
  2. jen_peplu Messages postés 33 Date d'inscription   Statut Membre Dernière intervention  
     
    Bonjour,

    Merci pilas31 pour ta réponse, mais aussi tes explications qui permettent d'en apprendre un peu plus.
    Je vais mettre ça en application et si j'ai un souci je reviendrai...

    Merci à toi.
    0