Multiselection

Damoiselle

XLDnaute Nouveau
Bonjour

Je souhaite selectionner un ensemble de lignes via une liste d'index qui ne sont pas forcement consecutifs

For i = 1 To dim
indexLigne = ListeLignes(i)
ActiveSheet.Selection.AddRange (Rows(indexLigne))
Next i

J'ai testé, indexLigne prend les bonnes valeurs, mais à l'écran, les lignes ne sont pas sélectionnées. Que manquerait-il ?
Merci bien
 

RENAUDER

Nous a quitté
Repose en paix
Re : Multiselection

Bonjour,
En adaptant à ton problème et en considérant que je fais une sélection sur 3 colonnes ...
Code:
Sub MultiSelect()
    Dim MonAdresse As String
    NbLgn = 4
    For i = 1 To NbLgn
        MonAdresse = IIf(MonAdresse = "", Cells(i, 1).Address, MonAdresse & "," & Cells(i, 1).Address)
        MonAdresse = MonAdresse & ":" & Cells(i, 3).Address
    Next
    Range(MonAdresse).Select
End Sub
 

myDearFriend!

XLDnaute Barbatruc
Re : Multiselection

Bonsoir Damoiselle, RENAUDER,

Content de te croiser dans un fil Eric :)
Je n'ai cependant pas interprété la question de Damoiselle comme toi... Je crois qu'il s'agit de lignes entières et que ces lignes ne sont pas forcément contigües (liste des lignes non contigües mémorisées dans un tableau).
Code:
[COLOR=NAVY]Dim[/COLOR] Plage [COLOR=NAVY]As[/COLOR] Range
[COLOR=NAVY]Dim[/COLOR] ListeLignes() [COLOR=NAVY]As Long
Dim[/COLOR] i [COLOR=NAVY]As Long[/COLOR]
    [COLOR=GREEN]'...[/COLOR]
    [COLOR=GREEN]'...[/COLOR]
    [COLOR=GREEN]'...[/COLOR]
    [COLOR=NAVY]Set[/COLOR] Plage = Rows(ListeLignes(1))
    [COLOR=NAVY]For[/COLOR] i = 2 [COLOR=NAVY]To UBound[/COLOR](ListeLignes)
        [COLOR=NAVY]Set[/COLOR] Plage = Union(Plage, Rows(ListeLignes(i)))
    [COLOR=NAVY]Next[/COLOR] i
    Plage.[COLOR=NAVY]Select[/COLOR]
    [COLOR=GREEN]'...[/COLOR]
    [COLOR=GREEN]'...[/COLOR]
    [COLOR=GREEN]'...[/COLOR]
Damoiselle, si je puis me permettre : nommer une variable "dim" n'est pas vraiment une bonne idée et risque fort de te causer quelques soucis...

Cordialement,
 

Damoiselle

XLDnaute Nouveau
Re : Multiselection

Merci beaucoup,
Effectivement il s'agit de lignes entières et non forcement consecutives

J'ai teste et melangé un peu toutes ce que j'ai trouvé. Voilà ce qui a fini par marché :


Dim maPlage As Range
maPlage.Clear
For i = 1 To dimListeLigne
Indexligne = ListeLigne(i)
If maPlage Is Nothing Then
Set maPlage = Cells(Indexligne, 1).EntireRow
Else
Set maPlage = Union(maPlage, Cells(Indexligne, 1).EntireRow)
End If
Next i
maPlage.Select

Ca marche
 

Discussions similaires

Réponses
7
Affichages
404

Statistiques des forums

Discussions
312 485
Messages
2 088 805
Membres
103 971
dernier inscrit
abdazee