Bjour à toutes et à tous ,
Marre de chercher vainement sur le site une solution à un problème sans doute simple (sauf pour moi):
Dans une macro j'ai cette ligne qui plante:
derlig = Range("D" & A5).End(xlUp).Row
"A5" est une cellule qui contient le nombre 300 représentant le nombre de lignes maximum d'une feuille de calcul.
Si j'écris
derlig = Range("D300").End(xlUp).Row
cela fonctionne et la variable "derlig" est bien initialisée avec le numéro de la dernière ligne écrite de la colonne D
Mais le nombre 300 (cellule A5) peut être augmenté par l'utilisateur.
Où est mon erreur de syntaxe ????
Merci de me dépanner
merci Pierrot93 mais ta réponse n'est pas tout à fait ce que j'espère.
Ta proposition:
Dim derlig As Long
derlig = Range("D65536").End(xlUp).Row
renvoie bien la dernière ligne écrite mais pourquoi parcourir 65536 lignes quand la feuille ne travaille que sur 300 lignes.
D'où mon désir de pointer la cellule A5 et le nombre 300 qu'elle contient.
Quant à ta 2° proposition elle renvoie "300" (nombre contenu dans A5) ce qui n'est pas la dernière ligne servie de la colonne D.
regarde le post de 17h17... A noter que le code proposé ne "parcourt" pas les 65536 lignes... et cette syntaxe est couramment employé pour déterminer la dernière ligne d'une colonne...
A Pierrot93, ton post de 17h17 ne me fournit que la valeur contenue dans A5 (300) et non la dernière ligne écrite en colonne D.
Je comprends bien que 65536 lignes ça va vite mais j'ai de toute façon besoin d'inclure dans un RANGE(...) une construction de variable à partir d'une lettre de colonne (D dans mon cas) et d'un nombre aléatoire contenu dans une cellule déterminée.
Désolé d'insister et merci de ton malaxage de cerveau
Je précise : j'ai besoin de sélectionner une plage de cellules par exemple de D108 à E123 mais 108 et 123 changent en fonction du nombre de lignes écrites en colonne D.
C'est à dire que cette plage sélectionnée doit toujours se situer après la dernière ligne écrite en D.
Je ne peux même pas joindre un fichier puisque rien ne fonctionne comme je le souhaite.
A vous lire !!!
"A5" est une cellule qui contient le nombre 300 représentant le nombre de lignes maximum d'une feuille de calcul mais qui est susceptible de varier selon le désir de l'utilisateur.
Range("D" & derlig).Select
oui mais je n'ai pas calculé "derlig" !!!
Cela fonctionne bien sûr mais A6 n'est pas renseigné: sa valeur est justement celle que je cherche avec "derlig".
"Derlig" doit contenir le numéro de la dernière ligne écrite en colonne D, d'où l'utilisation de la formule
Range("D" & A5).End(xlUp).Row
mais qui plante ("D" & A5) n'étant pas la bonne syntaxe
Petite question technique hors de notre sujet: comment fait-on pour afficher "en temps réel" le fil de la discussion. Je suis toujours obligé de passer par "recherche" pour suivre
Grand merci à Pierrot93 et à Si...
En combinant vos réponses j'ai compris comment construire sans truelle (RAL équivalent de l'ignoble LOL pour Rire Aux Larmes)
J'ignorais qu'il fallait encadrer de [ ] le nom de la cellule pour en faire une variable et non un contenu.
Encore merci et un petit air iodé de Bretagne où, comme d'habitude ,il fait grand soleil (vérité aussi absolue que les crochets)
Sujet clos