Sélectionner des lignes en fonction de la valeur dans la colonne A

Bonjour à tous,

J'aimerai créer un code qui me permette de sélectionner toute les lignes dont la colonne A contient une valeur que je détermine via une inputbox

Je pense que cela n'est pas compliqué mais après quelques recherches et essais, je n'y arrive pas !

Merci à vous !!!

Bonjour

Un essai à tester. Te convient-il ?

Bye !

165essai-v1.xlsm (22.15 Ko)

Salut,

Merci pour ton retour rapide !

c'est presque parfait !

Il est possible de sélectionner la ligne entière et non la zone non vide?

Nouvelle version.

Bye !

93essai-v2.xlsm (22.28 Ko)

La macro ne fonctionne pas quand je l'applique à mon fichier

Je te le met en PJ, est ce parce qu'il y a des lignes vides?

11test.xlsm (26.55 Ko)

Nouvelle version.

Bye !

107test-v3.xlsm (33.44 Ko)

Salut,

Merci à toi,

Dernière demande, est -il possible de ne pas sélectionner la cellule A10 lors de l'exécution de la macro?

Bonjour

Nouvelle version.

Bye !

93test-v4.xlsm (33.42 Ko)

Merci beaucoup, c'est exactement ça !

Cette macro est la base d'autres macros de tri

J'aimerai en fait trier la sélection par la colonne G (du plus grand au plus petit par exemple)

Une autre macro pourrait faire une tri par date du plus ancien au plus récent

Une autre macro pourrait faire un tri par date du plus récent au plus ancien,

Le top serait d'avoir un bouton,

Une input box qui demande le compte à trier

Une listbox qui demande le type de tri à choisir

Je pensais que ce serait simple, mais pas du tout en fait

Saurais tu m'aider?

Bonjour

Nouvelle version.

Bye !

29test-v5.xlsm (39.21 Ko)

Salut gmb,

Serait il possible de développer la macro stp? L'idée serait de rajouter de nouvelles options de tri à savoir (en plus des 2 que tu as déjà faite)

- Tri sur la colonne B (Ordre alphabétique)

- Tri sur la colonne Solde (Du plus grand au plus petit)

- Tri sur la colonne Solde (Du plus petit au plus grand)

- Tri sur la colonne H (Ordre alphabétique)

Aussi, serait il possible de rajouter un message d'erreur lorsque l'on rentre un numéro de compte qui n'existe pas du style "Compte inexistant"?

Merci beaucoup pour ton aide ! C'est vraiment top !

Bonjour

Nouvelle version.

47test-v6.xlsm (41.74 Ko)

Bye !

Salut Gmb,

Merci bcp pour ta macro qui m'a fortement aidé ! :)

Est-il possible de rattacher le code à la feuille ? De cette facon, je pourrai déplacer la feuille excel et continuer à pouvoir utiliser cette macro !

Il est peut etre plus simple de passer par plusieurs boutons ? Par exemple:

- Le bouton date me demanderai de choisir le compte à trier et dans quel sens le faire (récent au plus ancien ou l'inverse)

- Le bouton solde me demander de choisir le compte à trier et dans quel sens le faire (Du plus grand au plus petit, ou l'inverse)

- ...

Merci à toi !

Salut Boyoo,
Salut gmb,

petite variante que je vous propose parce que récemment développée pour mon propre usage.
- un clic en [A10] ouvre une liste de validation reprenant les comptes existants : la liste scrolle sur le compte choisi ;
- la suite se passe toujours sur la ligne d'en-tête bleue ;
- un clic sur le compte lui-même met le compte en italique rouge = tri descendant ;
- nouveau clic remet le compte en noir normal = tri ascendant ;
- la macro calcule les lignes de ce compte et les inscrit en [A1:B1] : pas effacer, évidemment !

3 tris

1. simple sélection trie le tableau sur base de cette colonne ;
2. - sélectionner plusieurs cellules trie le tableau sur base Key1:= colonne correspondant à la 1ère cellule de la sélection - Key2:= la colonne correspondant à la dernière cellule ;
- la même sélection mais en intégrant cette fois la première ligne sous la bleue dans la sélection inverse les Key1 et Key2
3. en utilisant CTRL, sélectionner 3 cellules simples trie Key1 - Key2 - Key3 selon l'ordre dans lequel vous avez exécuter votre triple sélection.

If Target.Interior.Color <> RGB(255, 255, 255) And Target.Row > 10 And Target.Column > 1 Then
    If Selection.Cells(1, 1).Row = CInt([A1]) Then
        iIdx = IIf(Range("A" & [A1]).Font.Italic = False, 1, 2)
        Application.ScreenUpdating = False
        Select Case Selection.Areas.Count
            Case 1
                iCol = Target.Column
                    If Selection.Columns.Count = 1 Then
                        If Selection.Rows.Count = 1 Then _
                            sCol1 = fctCol(iCol): _
                            Range("A" & [A1]).Resize([B1] - [A1] + 1, Cells(10, Columns.Count).End(xlToLeft).Column).Sort _
                                key1:=Range(sCol1 & [A1] + 1), order1:=Choose(iIdx, xlAscending, xlDescending), Orientation:=xlTopToBottom, Header:=xlYes
                    Else
                        sCol1 = IIf(Selection.Rows.Count = 1, fctCol(iCol), fctCol(iCol + Selection.Columns.Count - 1))
                        sCol2 = IIf(Selection.Rows.Count = 1, fctCol(iCol + Selection.Columns.Count - 1), fctCol(iCol))
                        Range("A" & [A1]).Resize([B1] - [A1] + 1, Cells(10, Columns.Count).End(xlToLeft).Column).Sort _
                            key1:=Range(sCol1 & [A1] + 1), order1:=Choose(iIdx, xlAscending, xlDescending), _
                            key2:=Range(sCol2 & [A1] + 1), order2:=Choose(iIdx, xlAscending, xlDescending), _
                            Orientation:=xlTopToBottom, Header:=xlYes
                    End If
            Case 3
                sCol1 = fctCol(Selection.Areas(1).Cells(1, 1).Column)
                sCol2 = fctCol(Selection.Areas(2).Cells(1, 1).Column)
                sCol3 = fctCol(Selection.Areas(3).Cells(1, 1).Column)
                Range("A" & [A1]).Resize([B1] - [A1] + 1, Cells(10, Columns.Count).End(xlToLeft).Column).Sort _
                    key1:=Range(sCol1 & [A1] + 1), order1:=Choose(iIdx, xlAscending, xlDescending), _
                    key2:=Range(sCol2 & [A1] + 1), order2:=Choose(iIdx, xlAscending, xlDescending), _
                    key3:=Range(sCol3 & [A1] + 1), order3:=Choose(iIdx, xlAscending, xlDescending), _
                    Orientation:=xlTopToBottom, Header:=xlYes
                Range("B" & [A1]).Select
        End Select
        Application.ScreenUpdating = True
    End If
End If

Á tester, comme on dit...

16boyoo.xlsm (38.64 Ko)


A+

Salut curulis57,

Ta variante est j'avoue encore plus adaptée a mes besoins !

C'est vraiment top !

En revanche, je ne comprend pas à quoi sert le clic sur la cellule A10 si ce n'est d'aller sur le compte choisis? Puisque le code fonctionne très bien sans passer au préalable par la cellule A10

Aussi, est il possible de rajouter une validation de la commande avant de l'exécuter? (pour éviter toute fausse manip)

Merci à toi en tout cas !

Salut Boyoo,
Salut gmb,

voici, la validation de données en [A10] ne se crée que sur un double-clic.
Si cette option est inutile pour toi, il te suffit de supprimer carrément cette sub !

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
'
Dim sFormula$
'
If Not Intersect(Target, [A10]) Is Nothing Then
    Cancel = True
    Target = ""
    ActiveWindow.ScrollRow = 11
    For x = 11 To Range("A" & Rows.Count).End(xlUp).Row
        sFormula = sFormula & IIf(sFormula = "", "", ",") & Range("A" & x).Value
        x = Columns(1).Find(what:=Range("A" & x).Value, lookat:=xlWhole, LookIn:=xlValues, searchdirection:=xlPrevious).Row
    Next
    Target.Validation.Add Type:=xlValidateList, Formula1:=sFormula
End If
'
End Sub
16boyoo.xlsm (38.85 Ko)


A+

Curulis,

Merci pour ta réponse rapide,

Quand je parlais de validation, je voulais dire confirmation d’exécution du code, je ne pense qu'on parlait de la même chose ^^. Est-il possible d'avoir cette demande de confirmation via une fenêtre ?

Je n'ai pas compris comment faire un tri multicritère, pourrez tu m'expliquer stp?

Enfin, lorsque je sélectionne un compte dans la colonne A qui est en bleu, si je tire la sélection sur d'autres cellules, ces dernières deviennent rouges, est il possible de ne pas le faire?

Merci encore !

Rechercher des sujets similaires à "selectionner lignes fonction valeur colonne"