Insérer une ligne à la suite d'une variable

Bonjour tout le monde,

Je suis toujours en pleine découverte de VBA et là, je suis entrain de faire une Macro ou je bute, car avec tout ce que j'ai put acquérir pour le moment, je n'arrive pas à me dépatouiller.

Ma macro liste plusieurs types d'éléments dans un tableau. Les types sont listés dans la colnne C et à partir de la ligne 4.

Par exemple: les éléments "ALPHA" occupent 3 lignes dans le tableau (donc de la ligne 5 à la ligne 7)

les éléments "BETA" occupent 4 lignes dans le même tableau ( donc de 9 à 12)

les éléments "CHARLIE" occupent 6 lignes dans ce même tableau ( donc 14 à 19)

Ce que je souhaite faire, c'est que dans une combobox, le type de l'élément est indiqué (donc soit ALPHA, BETA,CHARLIE).

Si par exple je choisis BETA, il faut que la macro recherche dans le tableau BETA (dans la colonne C) et que quand il trouve BETA, qu'il insere une ligne après la dernière cellule ou BETA est inscrit, Idem si je choisirait ALPHA ou CHARLIE.

Jspr que mon explication est assez claire, sinon n'hésitez pas à me poser des questions.

Est-ce que quelqu'un peut m'aider ?

Merci.

Bonjour,

Teste ceci :

Private Sub ComboBox1_Click()

    Dim Plage As Range
    Dim Cel As Range
    Dim Critere As String

    With ActiveSheet

        Set Plage = .Range(.Cells(1, 1), .Cells(.Rows.Count, 1).End(xlUp))

    End With

    With ComboBox1

        'recherche le mot qui suit celui choisi afin d'insérer la ligne juste au dessus
        If .ListIndex <> .ListCount - 1 Then

            Critere = .List(.ListIndex + 1)

            Set Cel = Plage.Find(Critere, , xlValues, xlWhole)

            If Not Cel Is Nothing Then

                Cel.Rows.Insert xlShiftDown
                Cel.Offset(-1, 0).Value = "Valeur à entrée"

            End If

        Else

            'dans ce cas, on est en fin de plage donc...
            Plage(Plage.Count).Offset(1, 0).Value = "Valeur à entrée"

        End If

    End With

End Sub

Hervé.

Bonjour Eddy, Bonjour Hervé,

Comme je me suis également penché sur le problème, voici ma solution dans le fichier ci-joint.

Private Sub ComboBox1_Change()
Dim i As Integer

Application.ScreenUpdating = False

i = Application.WorksheetFunction.Match(ComboBox1, Range("C:C"), 1)
    Rows(i + 1).Insert Shift:=xlDown
    Range("C" & i + 1) = ComboBox1
    Range("B" & i + 1) = Range("B" & i) + 1
Unload Me
End Sub

Eddy, la prochaine fois pense de joindre un fichier exemple

Cordialement.

52eddy.zip (9.90 Ko)

Merci à vous 2.

J'essaie tout ça et je vous tiens au courant.

Oki pour l'exemple. La prochaine fois j'essais de faire ça.

Rechercher des sujets similaires à "inserer ligne suite variable"