OVH Cloud OVH Cloud

Sélection d'une colonne

10 réponses
Avatar
danielrv
Bonjour,
J'utilise cette petite macro pour supprimer une ligne, je n'arrive pas à
sélectionner la colonne A pour la recopie vers le bas de la formule qui s'y
trouve.


Private Sub CommandButton5_Click()
Selection.EntireRow.Delete
ActiveCell.Offset(-1, 0).Range("A1").Select '<----c'est ici que ça
bloque
Range(Selection, Selection.End(xlDown)).Select
Selection.FillDown
End Sub

Bien sûr, je ne suis pas contre une modif complète si c'est plus clair et
plus efficace.
Merci de vos bons conseils.
danielH

10 réponses

Avatar
Pascal ETIENNE
Bonjour Daniel
j'ai eu le meme problème, et je l'ai résolu comme ça:
excel refuse de sélectionner des ranges ou cellules dans le code lié a un
bouton.
il faut que le code lié au bouton appelle simplement une procédure qui se
trouve dans un module standard et ça marche.

dans un module standard:
sub mamacro()
ton code
End Sub


et dans le code du bouton:
Private Sub CommandButton5_Click()
call mamacro
End Sub
A+
Pascal



"danielrv" a écrit dans le message de
news:
Bonjour,
J'utilise cette petite macro pour supprimer une ligne, je n'arrive pas à
sélectionner la colonne A pour la recopie vers le bas de la formule qui
s'y

trouve.


Private Sub CommandButton5_Click()
Selection.EntireRow.Delete
ActiveCell.Offset(-1, 0).Range("A1").Select '<----c'est ici que ça
bloque
Range(Selection, Selection.End(xlDown)).Select
Selection.FillDown
End Sub

Bien sûr, je ne suis pas contre une modif complète si c'est plus clair et
plus efficace.
Merci de vos bons conseils.
danielH




Avatar
Jacky
Bonjour,

Si la sélection en cours n'est pas en ligne 1, cette macro fonctionne
correctement chez moi.

Salutations
JJ

"danielrv" a écrit dans le message de
news:
Bonjour,
J'utilise cette petite macro pour supprimer une ligne, je n'arrive pas à
sélectionner la colonne A pour la recopie vers le bas de la formule qui
s'y

trouve.


Private Sub CommandButton5_Click()
Selection.EntireRow.Delete
ActiveCell.Offset(-1, 0).Range("A1").Select '<----c'est ici que ça
bloque
Range(Selection, Selection.End(xlDown)).Select
Selection.FillDown
End Sub

Bien sûr, je ne suis pas contre une modif complète si c'est plus clair et
plus efficace.
Merci de vos bons conseils.
danielH




Avatar
danielrv
Bonjour et merci pour vos réponses,
Je m'aperçois que je n'ai pas été précis dans ma question.
Cette macro fonctionne, mais s'il y a une cellule vide entre la colonne de
la cellule active quand on clicque sur le bouton, colonne H par exemple et
la colonne A, la sélection s'arrête à la cellule vide, ce qui est normal. Ce
que je cherche c'est de forcer la colonne A de la ligne active.

ActiveCell.Offset(-1, 0).Range("A1").Select 's'arrête à la première cellule
vide et non en colonne A

danielH
Avatar
AV
| ActiveCell.Offset(-1, 0).Range("A1").Select 's'arrête à la première cellule
| vide et non en colonne A

Cells(ActiveCell.Row, "A").Select

AV
Avatar
JLuc
*Bonjour danielrv*,
Avec ce code, ca marche :

Range(ActiveCell.Offset(-1, 0), Cells(1, 1)).Select

Bonjour et merci pour vos réponses,
Je m'aperçois que je n'ai pas été précis dans ma question.
Cette macro fonctionne, mais s'il y a une cellule vide entre la colonne de la
cellule active quand on clicque sur le bouton, colonne H par exemple et la
colonne A, la sélection s'arrête à la cellule vide, ce qui est normal. Ce que
je cherche c'est de forcer la colonne A de la ligne active.

ActiveCell.Offset(-1, 0).Range("A1").Select 's'arrête à la première cellule
vide et non en colonne A

danielH



--
JLuc

Pensez a regarder ces sites très bien fait, ce sont des mines de trucs
et astuces !
http://www.excelabo.net
http://jacxl.free.fr/
http://dj.joss.free.fr/
C:Program FilesMicrosoft OfficeOffice1036VBALIST.XLS

Avatar
LSteph
Bonjour Daniel,
Attention la macro que tu indiques supprime la ligne entière d'accord mais
aussi ensuite elle prend la cellule juste supérieure à la cellule de
départ et la recopie sur les cellules vides de la colonne situées en
dessous. Pour faire idem mais en ce décalant depuis lla sélection vers
lacolonne a et
prendre comme point de départ la cellule juste au dessus, voici:

'***
Private Sub CommandButton5_Click()
If ActiveCell.Row <> 1 Then
Selection.EntireRow.Delete
Cells(ActiveCell.Row - 1, 1).Select
Range(Selection, Selection.End(xlDown)).FillDown
Else
MsgBox "Il n'y a plus de ligne audessus de celle-ci"
End If

End Sub

'*****

Explication:
A1 désigne habituellement la première cellule en haut à gauche de la
feuille. Or, lorsque tu écris ActiveCell.Offset(-1, 0).Range("A1").Select
cla désigne la première cellule en haut à gauche de ActiveCell.Offset(-1,
0)
donc si tu démarre ta macro en c2 cela désigne la première cellule en haut à
gauche de c1 soit ainsi c1.

'lSteph

"danielrv" a écrit dans le message de news:

Bonjour,
J'utilise cette petite macro pour supprimer une ligne, je n'arrive pas à
sélectionner la colonne A pour la recopie vers le bas de la formule qui
s'y trouve.


Private Sub CommandButton5_Click()
Selection.EntireRow.Delete
ActiveCell.Offset(-1, 0).Range("A1").Select '<----c'est ici que ça
bloque
Range(Selection, Selection.End(xlDown)).Select
Selection.FillDown
End Sub

Bien sûr, je ne suis pas contre une modif complète si c'est plus clair et
plus efficace.
Merci de vos bons conseils.
danielH



Avatar
danielrv
Merci à vous pour vos réponses,

C'est le code de AV (encore merci) que je rajoute,
Cells(ActiveCell.Row, "A").Select
J'aurais préféré en une ligne pour le fun ;-)))

Pour JLuc,
Range(ActiveCell.Offset(-1, 0), Cells(1, 1)).Select
cela sélectionne de la cellule active à la cellule A1 réelle, ça va servir
pour plus tard, merci.

danielH
A+

JLuc
Pensez a regarder ces sites très bien fait, ce sont des mines de trucs et
astuces !
http://www.excelabo.net
http://jacxl.free.fr/
http://dj.joss.free.fr/


Avatar
danielrv
Bonjour et merci "LSteph"
La macro (grâce aux précédents renseignements reçus) recopiait bien la
cellule au-dessus de la cellule active, et bien pour la colonne A.
La macro que tu as créée résume en 1 ligne

Cells(ActiveCell.Row, "A").Select 'sélectionne colonne A ligne cellule
active
ActiveCell.Offset(-1, 0).Range("A1").Select 'sélectionne ligne-1 cellule
active

en plus, tu ajoutes une alerte sur la ligne concernée, chose à laquelle je
n'avais pas pensé.
Encore merci pour toutes les infos.
Bonne continuation.

(j'en rajoute pour expliquer ce que j'ai réussi à comprendre, ça peut servir
à ceux qui découvrent comme moi)

danielH
Avatar
LSteph
Non tu n'a pas tout compris:
ActiveCell.Offset(-1, 0).Range("A1").Select
range(a1) ici est inutile.

a+

"danielrv" a écrit dans le message de news:

Bonjour et merci "LSteph"
La macro (grâce aux précédents renseignements reçus) recopiait bien la
cellule au-dessus de la cellule active, et bien pour la colonne A.
La macro que tu as créée résume en 1 ligne

Cells(ActiveCell.Row, "A").Select 'sélectionne colonne A ligne cellule
active
ActiveCell.Offset(-1, 0).Range("A1").Select 'sélectionne ligne-1 cellule
active

en plus, tu ajoutes une alerte sur la ligne concernée, chose à laquelle je
n'avais pas pensé.
Encore merci pour toutes les infos.
Bonne continuation.

(j'en rajoute pour expliquer ce que j'ai réussi à comprendre, ça peut
servir à ceux qui découvrent comme moi)

danielH




Avatar
danielrv
Ah d'accord, mais c'est ce qui est retranscrit par vba lorsque l'on
enregistre une macro.
Merci pour le renseignement.

danielH