Macro Excel début de ligne [Résolu/Fermé]

Signaler
Messages postés
82
Date d'inscription
vendredi 9 novembre 2007
Statut
Membre
Dernière intervention
13 décembre 2009
-
 movieplayer68 -
Bonjour,
Débutante en macro, j'aimerai connaitre les lignes de code pour déplacer ma cellule active en :
début de ligne
fin de ligne
début de colonne
fin de colonne
début de feuille
fin de feuille
Cela me permettrai d'avancer un peu dans le domaine.
Merci de votre aide
Eve

4 réponses

Messages postés
23420
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
8 août 2020
6 284
Bonsoir,

Après ton range (qui peut être ActiveCell, [B1], ..) tu ajoutes .End(xlUp) ou xlLeft ou xlRight ou xlDown (suivi de .Select si tu veux la sélectionner). Ca te donne la reference de la dernière cellule remplie dans la direction désirée (en fait équivalent à Ctrl+fleche bas etc donc ça dépend si tu pars d'une cellule vide ou remplie).
Dans le même type tu as .offset(y,x) qui te décale ta référence de y lignes et x colonnes. x et y peuvent être négatifs mais il ne faut pas sortir des limites de la feuilles.
Cells(y,x) te permet de pointer une cellule directement ex: Cells(3,2) => 3ème ligne, 2nde colonne => $B$3
Tu peux aussi utiliser un nom défini dans le classeur. Ex: Range("Taux").value = 0.125
.Resize peut te servir aussi: Cells(3,2).Resize(2,4).ClearContents vide la plage $B$3:$E$4

Le mieux quand tu cherches un déplacement ou une sélection en macro est de te mettre en enregistrement macro (en relatif de préférence mais ça dépend de ce que tu veux) et de lire et récupérer les portions qui t'interessent dans le code généré.
Excel est prolixe dans le code généré, fais bien le tri. Par exemple pour lire ou remplir une cellule il n'est pas nécessaire de la sélectionner, fait directement [C5].value = 8.

Je l'ai fait de tete il y a pe qcq erreurs, le mieux est de saisir la méthode dans ton code et de faire F1 pour avoir toute la (les) syntaxe(s).
Maintenant parlons peu mais parlons bien !
((1+4+(6*0.5)*2)+4 = 20 ce qui nous fait 20 euros tout rond
Merci

eric
1
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 57358 internautes nous ont dit merci ce mois-ci

Messages postés
82
Date d'inscription
vendredi 9 novembre 2007
Statut
Membre
Dernière intervention
13 décembre 2009
50 >
Messages postés
23420
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
8 août 2020

Salut Eriic,
Je vois que ça t'a fais sourire "j'ai trouvé toute seule avant". Je tiens quans même à signaler que c'est vrai ! j'y tiens !
Pour être honnête, je préfère ne pas payer quand même car vu mes connaissances légères dans le domaine, ça me reviendrait assez cher.
Ce que j'ai trouvé n'est peut être pas tout à fait la réponse à ma question mais elle convient à mes besoins actuels :
Je devais sélectionner certaines données d'une ligne, les copier et les transférer dans une autre feuille. Mais si ma cellule active n'était pas en début de ligne, la sélection n'était pas bonne. Il fallait donc que j'aille impérativement en début de ligne.
J'ai trouvé : ActiveCell.EntireRow.Select qui sélectionne la ligne entière mais comme de ce fait la cellule active passe en début de ligne, ça marche pour la suite de ma macro (j'espère me faire comprendre).
J'avais essayé l'enregistreur de macro qui ne m'a pas aidé cette fois ci car la ligne à sélectionner n'est pas toujours la même et l'utiliser avec l'adresse relative ne va pas non plus car je n'ai pas toujours le même déplacement vers la gauche.
Enfin bref je n'ai pas vraiment la réponse à ma question mais j'ai trouvé une solution.
Heureuse de t'avoir fait sourire.
A+
Eve
Messages postés
23420
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
8 août 2020
6 284 >
Messages postés
82
Date d'inscription
vendredi 9 novembre 2007
Statut
Membre
Dernière intervention
13 décembre 2009

Bonsoir eve,

Mais je n'ai jamais douté de toi, c'était juste un joke ;-)
Ce que l'on apprend par soi même est toujours enrichissant et valorisant.
Et je préfère ceux qui s'investissent, qui ont la curiosité même s'ils avancent plus doucement.

Ce que tu aurais pu utiliser dans ton cas c'est cells(ligne,colonne) où tu désignes ta cellule.
cells(activecell.row,1).select (1 si tu veux la colonne A)
L'avantage c'est que ligne et colonne peuvent être le résultat d'un calcul.
Ca te servira peut-être une autre fois... :-)

Bonne soirée
eric
Messages postés
82
Date d'inscription
vendredi 9 novembre 2007
Statut
Membre
Dernière intervention
13 décembre 2009
50 >
Messages postés
23420
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
8 août 2020

Merci Eric,

Oui je viens de tester. Je récupère la ligne pour mes prochains essais.
Donc pour les colonnes ça doit être le même type de phrase : cells(activecell.column,1).select
Cool
Au fait t'inquiète je sais rire aussi
a+
Eve
Messages postés
23420
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
8 août 2020
6 284 >
Messages postés
82
Date d'inscription
vendredi 9 novembre 2007
Statut
Membre
Dernière intervention
13 décembre 2009

Oui, sauf que la colonne est sur le 2ème argument, pas le 1er
eric
Messages postés
82
Date d'inscription
vendredi 9 novembre 2007
Statut
Membre
Dernière intervention
13 décembre 2009
50 >
Messages postés
23420
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
8 août 2020

Bonsoir Eric,
Je suis désolée mais là je me trouve vraiment nulle car je n'arrive pas à comprendre ce que tu veux dire (le 2ème argument) et c'est vrai que j'ai essayé de modifier la ligne : Cells(ActiveCell.Row, 1).Select pour obtenir la même chose pour la colonne mais pas moyen.
Cells(ActiveCell.Column, 1).Select ne fonctionne pas. Je vois que j'ai beaucoup de boulot devant moi avant de me sentir à l'aise. Je dois m'accrocher.
A tantôt
Eve
Messages postés
64
Date d'inscription
mercredi 17 octobre 2007
Statut
Membre
Dernière intervention
29 juillet 2008
61
lol excellent Eriiic!
Messages postés
23420
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
8 août 2020
6 284
;-)
Messages postés
23420
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
8 août 2020
6 284
Bonsoir eve,

Mais tu vas y arriver, tu es tenace ;-)
Ou 2nd parametre si tu préfères...
Cells(ligne,colonne)
Donc 5ème ligne , x ième colonne => Cells(5,x)

Bon courage
eric
Messages postés
82
Date d'inscription
vendredi 9 novembre 2007
Statut
Membre
Dernière intervention
13 décembre 2009
50
Yes, j'ai compris

C'est ça, entre les parenthèses on parle de la ligne (argument 1) et de la colonne (argument 2) donc en décripté version Eve :
je sélectionne la cellule en colonne 1 sur la ligne active pour : Cells(ActiveCell.Row, 1).Select
et je sélectionne la cellule en ligne 1 sur la colonne active pour C: ells(1, ActiveCell.Column).Select
Je vais pouvoir dormir sur mes 2 oreilles, je me sents moins bête (qu'est ce que j'ai ramé pour un truc si simple).
Merci beaucoup
Bonne nuit
Eve
Messages postés
23420
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
8 août 2020
6 284 >
Messages postés
82
Date d'inscription
vendredi 9 novembre 2007
Statut
Membre
Dernière intervention
13 décembre 2009

Et bien tu vois... ;-)
Bonne nuit à toi aussi
eric

((1+4+(6*0.5)*2)+4) = 15.....

mais ce n'est que mon avis

par contre : ((1+4+6*0.5)*2)+4 = 20....

Multiplication/ division prioritaire sur les opérations d'addition/soustraction...