Nommer une plage par VBA

Résolu/Fermé
hbe - 28 mars 2012 à 16:01
 hbe - 31 mars 2012 à 05:28
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 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
28 mars 2012 à 17:29
Bonjour

essaies
Dim fin As String
fin = Cells.Find("*", , , , , xlPrevious).Address
Sheets(1).Names.Add Name:="lazone", RefersTo:=" =$A$1:" & fin
0
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 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
29 mars 2012 à 06:01
Désolé, mais comme d'habitude,j'avais testé avant d'envoyer une proposition et la zone était bien nommée
0
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 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
Modifié par michel_m le 29/03/2012 à 06:45
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
bonjour Michel,
Merci c'est génial, tout est Ok.
A+
0