Je coince...

Résolu/Fermé
jen_peplu Messages postés 33 Date d'inscription samedi 4 décembre 2010 Statut Membre Dernière intervention 25 mars 2012 - 1 juin 2011 à 20:32
jen_peplu Messages postés 33 Date d'inscription samedi 4 décembre 2010 Statut Membre Dernière intervention 25 mars 2012 - 2 juin 2011 à 07:07
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

pilas31 Messages postés 1825 Date d'inscription vendredi 5 septembre 2008 Statut Contributeur Dernière intervention 24 avril 2020 643
2 juin 2011 à 01:25
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
jen_peplu Messages postés 33 Date d'inscription samedi 4 décembre 2010 Statut Membre Dernière intervention 25 mars 2012
2 juin 2011 à 07:07
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