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 SubJe 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 SubDe 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 SubJ'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 SubMais encore un sujet abandonné en chemin... !
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 ?
Salut ! Ça fait plusieurs sujets qui bougent, pour lequel je n'ai pas eu de message !
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