Selection de plusieurs cellules

Bonjour,

Je souhaiterai sélectionner plusieurs cellules à partir de la cellule active

la ligne de commande ci-après permet de sélectionner toutes les cellules contiguës non vide situées à droite de la cellule active

ActiveCell.Offset(0, 0).Select

Range(Selection, Selection.End(xlToRight)).Select

Selection.Copy

L’inconvénient de cette commande, c'est qu'il faut insérer une cellule vide ou colonne vide pour définir la zone de copie.

je souhaiterai pouvoir sélectionner que 4 cellules à droite de la cellule active .

S'il est possible de faire la même chose sur 2 cellules situé en bas ou en haut ou à gauche

Je pense que l'on doit pouvoir également saisir une plage de cellules.

Merci pour les réponses

Antoine

Bonjour Antoine.

Il faut utiliser le redimensionnement de ta plage.

Range(...).Resize(nligne, ncolonne)

Bonjour, j'ai essayé le code Resize, ça ne fonctionne pas.

Peut-être que la fonction est mal exprimé

ActiveCell.Offset(0, 0).Select

Range(Selection.Resize(0, 6)).Select

Je souhaite sélectionner les 6 cellules à droite de la cellule active sur la même ligne

Ces 6 cellules sont destinées à être copié vers un cellule nommée

Merci pour votre réponse ou la correction de la formule

Antoine

Bonsoir,

Je souhaiterai sélectionner plusieurs cellules à partir de la cellule active

C'est à éviter ! Cela ne mène à rien sauf perdre du temps !

Tu cibles la cellule ou la plage voulue et tu fais ce que tu as à faire, sans sélectionner. VBA fera ! Et plus rapidement !

ActiveCell.Offset(0, 0).Select

Tu as le sens du pléonasme ! Pourquoi pas : ActiveCell.Offset(0, 0).Cells(1, 1)... tant que tu y es !

Range(Selection.Resize(0, 6)).Select

Si tu redimensionnes sur 0 lignes, les 6 colonnes n'auront guère de ligne où se placer !

Cordialement.


Voilà qui fera ce que tu souhaites, sans fioritures inutiles, sans sélection, et même sans copier-coller !

Sub Test()
    Dim csix
    csix = ActiveCell.Resize(, 6).Value
    CellNommée.Resize(, 6).Value = csix
End Sub

Je ne suis pas un expert en VBA, je voudrai simplement pouvoir sélection les 6 cellules à droite de mon curseur

Actuellement ma macro écrite par le générateur de macro excel est ainsi.

ActiveCell.Offset(0, 0).Select

Range(Selection, Selection.End(xlToRight)).Select

With Selection.Interior

.Pattern = xlSolid

.PatternColorIndex = xlAutomatic

.ThemeColor = xlThemeColorAccent1

.TintAndShade = 0.599993896298105

.PatternTintAndShade = 0

End With

Selection.Copy

Actuellement cela marche très bien .

J'ai du mettre une colonne vide pour délimiter la Selection.End(xlToRight), sinon la sélection prend des valeurs non souhaitées

Je voudrai ne prendre que 6 colonnes à droite du curseur

Merci pour l'aide

Antoine

Bonjour Antoine01,

Tu a écrit :

Je voudrai ne prendre que 6 colonnes à droite du curseur

Tu a écrit :

J'ai du mettre une colonne vide pour délimiter la Selection.End(xlToRight),

sinon la sélection prend des valeurs non souhaitées

Je te propose le code VBA ci-dessous, et tu peux supprimer la colonne vide que tu as ajoutée :

Sub Essai()
  With ActiveCell.Offset(, 1).Resize(, 6).Interior
    .Pattern = xlSolid
    .PatternColorIndex = xlAutomatic
    .ThemeColor = xlThemeColorAccent1
    .TintAndShade = 0.599993896298105
    .PatternTintAndShade = 0
  End With
End Sub

De plus, et ça dépend de ce que tu as déjà comme mise en forme sur ta feuille,

il se pourrait même que cet autre code VBA simplifié puisse aller :

Sub Essai()
  With ActiveCell.Offset(, 1).Resize(, 6).Interior
    .ThemeColor = xlThemeColorAccent1
    .TintAndShade = 0.599993896298105
  End With
End Sub

J'ai enlevé les 3 lignes concernant le motif (= pattern en anglais) car c'est normalement

les valeurs par défaut, donc déjà correctes : inutile de faire ce qui est déjà fait !


La seule instruction de ton code que je n'ai pas reprise est : Selection.Copy

Note que mon code VBA fait ce qu'il faut sans avoir besoin de sélection ; peut-être alors

n'as-tu plus besoin de faire de sélection ? mais si tu en as besoin, alors à toi de l'ajouter ;

attention : puisque je n'ai pas utilisé de sélection, ce qui était déjà sélectionné avant

l'est resté : une sélection manuelle ou par VBA, ou la cellule active par exemple.


Merci de me donner ton avis, et de me dire si ça te convient.

Cordialement

il se pourrait même que cet autre code VBA simplifié puisse aller :

On peut encore simplifier un peu...

Sub Essai()
    ActiveCell.Offset(, 1).Resize(, 6).Interior.Color = RGB(184, 204, 228)
End Sub

Mais encore un sujet abandonné en chemin... !

MFerrand, tu as sans doute raison ; si je ne l'ai pas fait moi-même, c'est seulement car je ne connais pas bien ce qui concerne les Thèmes (couleurs et autres) ; alors j'ai préféré éviter le risque d'enlever par inadvertance un attribut de thème.

Le demandeur Antoine01 retrouvera-t-il son chemin pour revenir ici ? a-t-il semé des petits cailloux blancs ou seulement des miettes de pain que des oiseaux voraces ont englouties ? la suite de ce passionnant thriller au prochain épisode...

Salut ! Ça fait plusieurs sujets qui bougent, pour lequel je n'ai pas eu de message ! Ce n'est qu'un retard j'espère car j'aurais du mal à m'y retrouver sinon...

Ce que je voulais faire apparaître, sur ce sujet, c'est que les couleurs disponibles qui peuvent être utilisées, le sont dans l'espace de couleurs rgb et que la totalité en est définissable à partir des valeurs des composantes (RGB).

Le système des Thèmes de couleurs ne crée pas de nouvelles couleurs mais en constitue des regroupements selon des gradations... (dont je ne pourrai dire grand chose de plus, car je ne sais pas l'utiliser).

Je n'aurais évidemment pas proposé de modification d'un code utilisant les thèmes de couleurs de façon intentionnelle ! Mais s'agissant d'un code enregistré, l'enregistreur se borne à enregistrer en fonction des touches pressées par l'utilisateur, s'il a appuyé sur une couleur faisant partie d'un thème, l'enregistreur renvoie le thème et les propriétés afférentes, s'il a défini la même couleur autrement, l'enregistreur l'enregistrera aussi autrement...

Il paraît donc rationnel dans la mesure où le choix concerne une couleur et non un thème en tant que tel de la définir en tant que couleur dans le code... J'ai une préférence pour la fonction RGB (par habitude et parce qu'il est plus facile de mémoriser les valeurs des composantes élémentaires, et aussi de les identifier pour une couleur donnée), mais la fonction renvoie d'ailleurs une valeur de type Long qui peut être utilisée (que certains utilisent) et qui est aussi renvoyée par la propriété Color. La valeur hexadécimale de la couleur peut également être utilisée...

Cordialement. (A suivre )

J'ai une série de message avec 24h de décalage ! Rien n'était perdu !

Bonjour à tous!

Eh non je ne me suis pas perdu et avec une certaine éducation car j'ai pour habitude de répondre et de remercier ceux qui participent à ce forum et je vous remercie pour vos réponses car j'ai réussi à résoudre ma petite application grâce à vos réponses.

Mais avec une vie professionnelle et privé intense je ne suis pas toujours sur mon PC.

Merci à vous tous..problème résolu

Antoine

Bonjour Antoine,

Comme tu as indiqué avoir une vie professionnelle et privée très intenses, je comprends tout à fait que tu ne sois pas toujours sur ton PC : la vraie vie avant tout ! (et j'espère que tu sauras éviter le surmenage et les risques d'infarctus !)

Je suis bien content que tu sois revenu sur ce sujet, et encore plus que tu as indiqué avoir réussi à résoudre ton application grâce à nos réponses ; tu peux donc passer le sujet en résolu en cliquant sur la coche verte V qui est à droite du bouton EDIT, ce qui permet aussi de clôturer le fil ; merci d'avance si tu le fais, et merci ... pour tes remerciements.

Cordialement

Rechercher des sujets similaires à "selection"