Références cellules

Résolu
debutantdumidi Messages postés 3 Date d'inscription   Statut Membre Dernière intervention   -  
debutantdumidi Messages postés 3 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

Je débute eb VBA et j'utilise beaucoup l'enregistreur de macro pour arriver à mes fins.
Dans un classeur Excel je récupère la dernière ligne écrite avec :
DerniereLigne = Sheets("Edition").Range("U1")

Je sélectionne la cellule A1 par :
Range("A1").Select

Maintenant je souhaiterais sélectionner la cellule A1 en remplaçant le 1 par la variable DerniereLigne mais je n'arrive pas à trouver la bonne syntaxe.

Quelqu'un peut-il m'aider ?
D'avance merci.


3 réponses

Lazarey Messages postés 3239 Date d'inscription   Statut Membre Dernière intervention   745
 
Salut,

En admétant que ta variable est déjà déclarée, tu peux utiliser la syntaxe suivante :

Range("A" & DerniereLigne ).Select 


Voila qui devrait fonctionner.
0
pijaku Messages postés 12263 Date d'inscription   Statut Modérateur Dernière intervention   2 762
 
Bonjour,
Tu peux utiliser :
Range("A" & DerniereLigne)

pas très pro...

Ou alors utiliser Cells(ligne, colonne) comme ceci :
Cells(DerniereLigne, 1).Select


Rappel : les .Select sont à éviter un maximum en VBA car ils ralentissent la macro
0
Lazarey Messages postés 3239 Date d'inscription   Statut Membre Dernière intervention   745
 
Salut

Pourquoi pas très pro ??
0
pijaku Messages postés 12263 Date d'inscription   Statut Modérateur Dernière intervention   2 762
 
Salut Lazarey,
C'est une remarque qui m'avais été faite par un très bon programmeur VBA sur ce forum. De fait, la syntaxe Cells est très explicite. Celle Range("Col" & variable) reste néanmoins à mes yeux de bidouilleur plus accessible à un novice...
Ceci doit constituer un débat pas très utile car pour moi l'essentiel est que ... ça fonctionne non?
0
Lazarey Messages postés 3239 Date d'inscription   Statut Membre Dernière intervention   745
 
Oui, c'est sur, ça fonctionne et c'est bien ;)
Je te demande parce que j'utilise toujours Range qui est plus "lisible" je trouve et qui permet à des personnes qui veulent aller voir ton code de comprendre plus facilement. Après niveau performances, c'est pareil non ??
0
eriiic Messages postés 24603 Date d'inscription   Statut Contributeur Dernière intervention   7 276
 
Bonjour,

Tant qu'on y est vu que tu débutes autant te donner aussi comment atteindre la dernière cellule de la colonne A :
[A65536].end(xlup).select

et pour le n° de ligne :
derlig=[A65536].end(xlup).row

Faire +1 pour avoir la 1ère ligne libre

En cas de besoin on peut compliquer un peu pour que la formule s'adapte automatiquement à excel 2003 et 2007

Et dernière colonne utilisée de la ligne 1 :
dercol=[IV1].end(xltoleft).column


eric
0
debutantdumidi Messages postés 3 Date d'inscription   Statut Membre Dernière intervention  
 
Merci à vous tous pour votre aide mais il me reste encore un problème.
J'ai testé :
Range("A" & DerniereLigne ).Select
Et ça fonctionne très bien et je me positionne sur la bonne cellule.

Par contre j'ai voulu appliquer vos propositions à :
Range("A54:K54").Select
En remplaçant par
Range("A" & DerniereLigne:"K" & DerniereLigne).Select
Et là j'ai un message « erreur de compilation »
Pourquoi ?
0
eriiic Messages postés 24603 Date d'inscription   Statut Contributeur Dernière intervention   7 276
 
Range("A" & DerniereLigne & ":K" & DerniereLigne).Select
0
debutantdumidi Messages postés 3 Date d'inscription   Statut Membre Dernière intervention  
 
Merci Eric, c'est tout bon...
0