Macro Excel début de ligne

Résolu/Fermé
Signaler
Messages postés
81
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
24265
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
19 janvier 2022
7 027
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
Messages postés
81
Date d'inscription
vendredi 9 novembre 2007
Statut
Membre
Dernière intervention
13 décembre 2009
51
Merci Eriiic,
J'ai trouvé la solution en bidouillant mais cependant je te remercie. Je vais analyser ce que tu me dis et comparer avec ce que j'ai fait pour voir si ce que tu proposes ne serait pas mieux.
Par contre comme je suis débutante, je comprends mieux si on me donne un exemple tout fait que je puisse analyser (je crois que j'ai eu un peu de mal a saisir la totalité de ce que tu m'as dit).
Merci quand même.
Eve
0
Messages postés
24265
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
19 janvier 2022
7 027 >
Messages postés
81
Date d'inscription
vendredi 9 novembre 2007
Statut
Membre
Dernière intervention
13 décembre 2009

C'est vrai que je t'ai mis un peu en vrac les éléments qui pouvaient te servir...
Si tu veux un exemple pour certaines fonctions ou methodes pas de soucis.
Et bien vu le coup de "j'ai trouvé toute seule avant" pour ne pas payer !!! pfffff ;-)
Bonne découverte et amuses-toi bien
eric
0
Messages postés
81
Date d'inscription
vendredi 9 novembre 2007
Statut
Membre
Dernière intervention
13 décembre 2009
51 >
Messages postés
24265
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
19 janvier 2022

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
0
Messages postés
24265
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
19 janvier 2022
7 027 >
Messages postés
81
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
0
Messages postés
81
Date d'inscription
vendredi 9 novembre 2007
Statut
Membre
Dernière intervention
13 décembre 2009
51 >
Messages postés
24265
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
19 janvier 2022

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
0
Messages postés
64
Date d'inscription
mercredi 17 octobre 2007
Statut
Membre
Dernière intervention
29 juillet 2008
64
lol excellent Eriiic!
0
Messages postés
24265
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
19 janvier 2022
7 027
;-)
0
Messages postés
24265
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
19 janvier 2022
7 027
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
0
Messages postés
81
Date d'inscription
vendredi 9 novembre 2007
Statut
Membre
Dernière intervention
13 décembre 2009
51
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
0
Messages postés
24265
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
19 janvier 2022
7 027 >
Messages postés
81
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
0

((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...
0