Nommer une plage par VBA

Résolu
hbe -  
 hbe -
Bonjour,

Je souhaiterais nommer une plage de cellules qui varient en fonction des données extraites. Pour sélectionner les cellules documentées j'écris Range ("A1").CurrentRegion.Select, mais il m'est difficile de nommer cette plage car la macro exige les références des lignes et colonnes, ce qui ne me convient pas car elles sont variables.
Pease help.

3 réponses

michel_m Messages postés 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 314
 
Bonjour

essaies
Dim fin As String
fin = Cells.Find("*", , , , , xlPrevious).Address
Sheets(1).Names.Add Name:="lazone", RefersTo:=" =$A$1:" & fin
0
hbe
 
Bonjour, j'ai essayé votre proposition, mais sans succès. Aucun message d'erreur, la plage n'est cependant pas nommé.
Merci de m'aider svp.
0
michel_m Messages postés 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 314
 
Désolé, mais comme d'habitude,j'avais testé avant d'envoyer une proposition et la zone était bien nommée
0
hbe
 
Merci pour votre aide, je pense que c'est moi qui n'ai rien compris, pourriez-vous m'aider comment remplir la syntaxe fin = Cells.Find("*", , , , , xlPrevious).Address, la plage de cellules qui m'intéresse étant déjà sélectionnée préalablement par current.region.
Cordialement
0
michel_m Messages postés 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 314
 
il n(y a pas besoin de sélectionner au préalable par current;region d'autant plus qu'une règle de base de VBA déconseille formellement d'utiliser "select"
d'autre part "current.region " est assez piègée(colonne vide par ex) s'il y a des trous dans la zone à baptiser
"fin" donne l'adresse de la dernière cellule de la feuille ayant une donnée

si tu peux ou veux utiliser "current.region"
Sub xxx() 
Dim plage As String 
plage = Range("A1").CurrentRegion.Address 
Sheets(1).Names.Add Name:="coucou", RefersTo:=" =plage" 
End Sub



je viens de re-tester les 2 manières et c'est OK partout
0
hbe
 
bonjour Michel,
Merci c'est génial, tout est Ok.
A+
0