Sélectionner plusieurs cellules en vba

Le
Versatile
Bonjour,
Imaginons que sur une ligne de vba ,j'ai cette sélection :
Range("D13").Select
et que je veuille continuer sur les lignes suivantes à poursuivre
cette sélection, la ligne suivante annulerait la sélection
précédente :
Range("D14").Select
Alors comment faire ? Le problème est que je ne peux savoir à
l'avance qu'elle partie doit être sélectionnée, cela dépend de
plusieurs facteurs au sein d'une boucle. Deuxième chose, le nombre de
cellules à sélectionner peut être assez important
Merci beaucoup !
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
michdenis
Le #21676721
Bonjour,

Tu peux utiliser ceci :

Sub test()
For a = 1 To 10
Range("D13").Resize(a).Select
Next
End Sub

Pour sélectionner les lignes entires

Sub test()
For a = 1 To 10
Range("A5").Resize(a).EntireRow.Select
Next
End Sub

Si tu connais déjà avant l'entrée en boucle le nombre
de ligne à sélectionner, tu peux utiliser seulement ceci,
nul besoin d'employer une boucle

A = 10
Range("A5").Resize(a).EntireRow.Select






"Versatile"
Bonjour,
Imaginons que sur une ligne de vba ,j'ai cette sélection :
Range("D13").Select
et que je veuille continuer sur les lignes suivantes à poursuivre
cette sélection, la ligne suivante annulerait la sélection
précédente :
Range("D14").Select
Alors comment faire ?... Le problème est que je ne peux savoir à
l'avance qu'elle partie doit être sélectionnée, cela dépend de
plusieurs facteurs au sein d'une boucle. Deuxième chose, le nombre de
cellules à sélectionner peut être assez important...
Merci beaucoup !
Versatile
Le #21677031
Merci beaucoup pour toutes ces infos.
J'ai retravaillé ma macro et maintenant je réussis à avoir la chaîn e
au format texte à sélectionner. Malheureusement, cela me donne parfois
des plages trop longues, exemple :

D13:D16,D18:D22,D24:D29,D32:D33,D35:D36,D38:D40,D42,D44:D45,D47:D49,D51:D58 ,D60:D61,D63:D65,D69:D72,D74:D77,D79:D82,D84:D87,D89:D90,D92:D95,D98:D100,D 103:D107,D111:D115,D117:D119,D121:D123,D125:D126,D129:D133,D135:D137,D139:D 140,D142:D143,D145:D147,D149,D151,D153:D154,D156:D158,D161:D166,D171:D174,D 176:D190,D192,D194

La méthose :
Range(LaPlage).Select
ne marche pas car elle semble trop longue... Comment faire ?
michdenis
Le #21677211
Tu peux toujours faire comme ceci :

Attention, chacune des lignes se termine par "_"
'------------------------------------
Sub test()
Dim Arr(), Elt As Variant

Arr = Array("D13:D16", "D18:D22", "D24:D29", "D32:D332", "D35:D362", _
"D38:D40", "D42", "D44:D45", "D47:D49", "D51:D58", _
"D60:D61", "D63:D65", "D69:D72", "D74:D77", "D79:D82", _
"D84:D87", "D89:D90", "D92:D95", "D98:D100", "D103:D107", _
"D111:D115", "D117:D119", "D121:D123", "D125:D126", _
"D129:D133", "D135:D137", "D139:D140", "D142:D143", _
"D145:D147", "D149,D151", "D153:D154", "D156:D158", _
"D161:D166", "D171:D174", "D176:D190", "D192,D194")

'Une boucle sur chacune des plages de cellules que tu as définis
'L'option "EntireRow" seulement si besoin

For Each elt In Arr
Range(elt).EntireRow.Select
'Le traitement avec la plage de cellules
Next

End Sub
'-------------------------------------



"Versatile"
Merci beaucoup pour toutes ces infos.
J'ai retravaillé ma macro et maintenant je réussis à avoir la chaîne
au format texte à sélectionner. Malheureusement, cela me donne parfois
des plages trop longues, exemple :

D13:D16,D18:D22,D24:D29,D32:D33,D35:D36,D38:D40,D42,D44:D45,D47:D49,D51:D58,D60:D61,D63:D65,D69:D72,D74:D77,D79:D82,D84:D87,D89:D90,D92:D95,D98:D100,D103:D107,D111:D115,D117:D119,D121:D123,D125:D126,D129:D133,D135:D137,D139:D140,D142:D143,D145:D147,D149,D151,D153:D154,D156:D158,D161:D166,D171:D174,D176:D190,D192,D194

La méthose :
Range(LaPlage).Select
ne marche pas car elle semble trop longue... Comment faire ?
Hervé
Le #21677521
Bonsoir,

Une possibilité, scinde ta chaîne en plusieurs ranges et fait une union :

Sub Selectionner()

Union(Range("D13:D16,D18:D22,D24:D29,D32:D33,D35:D36,D38:D40"), _
Range("D42,D44:D45,D47:D49,D51:D58,D60:D61,D63:D65,D69:D72"), _
Range("D74:D77,D79:D82,D84:D87,D89:D90,D92:D95,D98:D100,D103:D107"),
_
Range("D111:D115,D117:D119,D121:D123,D125:D126,D129:D133,D135:D137"),
_
Range("D139:D140,D142:D143,D145:D147,D149,D151,D153:D154,D156:D158"),
_
Range("D161:D166,D171:D174,D176:D190,D192,D194")).Select

End Sub


Hervé.


"Versatile" news:
Merci beaucoup pour toutes ces infos.
J'ai retravaillé ma macro et maintenant je réussis à avoir la chaîne
au format texte à sélectionner. Malheureusement, cela me donne parfois
des plages trop longues, exemple :

D13:D16,D18:D22,D24:D29,D32:D33,D35:D36,D38:D40,D42,D44:D45,D47:D49,D51:D58,D60:D61,D63:D65,D69:D72,D74:D77,D79:D82,D84:D87,D89:D90,D92:D95,D98:D100,D103:D107,D111:D115,D117:D119,D121:D123,D125:D126,D129:D133,D135:D137,D139:D140,D142:D143,D145:D147,D149,D151,D153:D154,D156:D158,D161:D166,D171:D174,D176:D190,D192,D194

La méthose :
Range(LaPlage).Select
ne marche pas car elle semble trop longue... Comment faire ?
LSteph
Le #21680431
Bonjour,

1-Si tes plages sont multiples et variées mais qu'il y a régulièremen t
des plages type
tu peux définir des noms.
comme pris dans ton exemple
ainsi
D13:D16,D18:D22,D24:D29,D32:D33,D35:D36,D38:D40,D42,D44:D45,D47:D49
pourrait aussi bien s'appeler "toto" ou "plagetruc"

[toto].select te permettra de l'atteindre mais en général
Select est tout à fait inutile surtout s'il est suivi de suite apres
d'une instruction Selection.copy ou tout autre
Selection.fairececi ou selection.fairecela

autant ecrire [maplage].faitledirect


2-S'il n'y a pas de plages type mais différents cas de figure qui font
que dans une même plage à considérer certaines cellules n'ont pas à
être traitées tantôt lesunes tantôt d'autres.

Alors il faut toujours désigner ta plage globale et être capable
d'identifier celles qui minoritairement ont cette fameuse bonne raison
d'être écartées.

exemple

for each c in [maplage].cells
if c>14 then
'...onfait ceci cela

ou encore

Select case c

Case "x","y", "z"
'on fait rien
Case "a","b"
'on fait ceci
Case else
'on fait cela
End select

ou même que ce soit par if ou select case choisir celles à écarter

.. D27,D25,D..

Bref tout dépend de l'objectif et de ce qui coute le moindre effort.

Cordialement.

--
LSteph






On 3 mai, 17:04, Versatile
Bonjour,
Imaginons que sur une ligne de vba ,j'ai cette sélection :
    Range("D13").Select
et que je veuille continuer sur les lignes suivantes à poursuivre
cette sélection, la ligne suivante annulerait la sélection
précédente :
    Range("D14").Select
Alors comment faire ?... Le problème est que je ne peux savoir à
l'avance qu'elle partie doit être sélectionnée, cela dépend de
plusieurs facteurs au sein d'une boucle. Deuxième chose, le nombre de
cellules à sélectionner peut être assez important...
Merci beaucoup !
Publicité
Poster une réponse
Anonyme