Macro Excel début de ligne

Résolu/Fermé
evevdll Messages postés 81 Date d'inscription vendredi 9 novembre 2007 Statut Membre Dernière intervention 13 décembre 2009 - 10 nov. 2007 à 16:39
 movieplayer68 - 9 juin 2008 à 11:47
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
A voir également:

4 réponses

eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 7 209
10 nov. 2007 à 20:43
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
evevdll Messages postés 81 Date d'inscription vendredi 9 novembre 2007 Statut Membre Dernière intervention 13 décembre 2009 51
10 nov. 2007 à 23:47
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
eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 7 209 > evevdll Messages postés 81 Date d'inscription vendredi 9 novembre 2007 Statut Membre Dernière intervention 13 décembre 2009
11 nov. 2007 à 00:52
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
evevdll Messages postés 81 Date d'inscription vendredi 9 novembre 2007 Statut Membre Dernière intervention 13 décembre 2009 51 > eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023
11 nov. 2007 à 19:57
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
eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 7 209 > evevdll Messages postés 81 Date d'inscription vendredi 9 novembre 2007 Statut Membre Dernière intervention 13 décembre 2009
11 nov. 2007 à 21:10
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
evevdll Messages postés 81 Date d'inscription vendredi 9 novembre 2007 Statut Membre Dernière intervention 13 décembre 2009 51 > eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023
11 nov. 2007 à 22:11
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
PBGunner Messages postés 64 Date d'inscription mercredi 17 octobre 2007 Statut Membre Dernière intervention 29 juillet 2008 64
10 nov. 2007 à 23:43
lol excellent Eriiic!
0
eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 7 209
11 nov. 2007 à 00:47
;-)
0
eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 7 209
12 nov. 2007 à 23:01
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
evevdll Messages postés 81 Date d'inscription vendredi 9 novembre 2007 Statut Membre Dernière intervention 13 décembre 2009 51
12 nov. 2007 à 23:30
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
eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 7 209 > evevdll Messages postés 81 Date d'inscription vendredi 9 novembre 2007 Statut Membre Dernière intervention 13 décembre 2009
13 nov. 2007 à 00:06
Et bien tu vois... ;-)
Bonne nuit à toi aussi
eric
0
movieplayer68
9 juin 2008 à 11:47
((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