Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
Vieux 04/02/2010, 16h02   #1
Invité de passage
 
Inscription : octobre 2009
Messages : 9
Détails du profil
Informations forums :
Inscription : octobre 2009
Messages : 9
Points : 1
Points : 1
Par défaut nommer une plage de cellule variable en auto

Bonjour,

N'ayant pas trouvé de réponse pertinnente dans le FAQ, je me permets de poster ce message.

Mon but est de pouvoir via une macro nommer une plage de cellule, qui par la suite peut évoluer en taille. Par exemple passer de a1:z3000 à a1:z5000. Pour l'instant j'arrive à faire la sélection de la zone par macro en fonction du nombre de donner mais je n'arrive pas à modifier la plage du nom.

merci d'avance
brice86190 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/02/2010, 17h18   #2
Rédacteur/Modérateur
 
Avatar de jpcheck
 
Jean-Philippe ANDRÉ
Inscription : juillet 2007
Messages : 6 724
Détails du profil
Informations personnelles :
Nom : Jean-Philippe ANDRÉ
Âge : 28
Localisation : France

Informations forums :
Inscription : juillet 2007
Messages : 6 724
Points : 8 616
Points : 8 616
Envoyer un message via MSN à jpcheck
salut,
si tu utilises la fonction decaler dans Excel, lors de l'ajout d'une ligne en fin de colonne, elle est automatiquement incorporee a ta zone nommee.
__________________
Pas de question technique par MP, je ne réponds pas

Mon perso ? Une vraie brute

Tutos Access, Tâches planifiées et Batch,Tables de Paramètres sous Access, Excel et Batch, Tâches planifiées et Access
jpcheck est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/02/2010, 17h26   #3
Membre confirmé
 
Inscription : juillet 2006
Messages : 343
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 343
Points : 285
Points : 285
Bonjour,

Sinon avec du code vba quelque chose dans ce style :

Code :
1
2
3
 
 
Sheets("lafeuille").Range("a1:z5000").Names.Add Name:="taPlageNommée", RefersTo:="=lafeuille!R1C26:R5000C26"
Enregistre une macro et modifie le code ensuite.
Access Newbie est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/02/2010, 17h41   #4
Membre Expert
 
Inscription : juillet 2007
Messages : 2 134
Détails du profil
Informations forums :
Inscription : juillet 2007
Messages : 2 134
Points : 2 154
Points : 2 154
Salut brice86190 et le forum
Citation:
Mon but est de pouvoir via une macro nommer une plage de cellule, qui par la suite peut évoluer en taille. Par exemple passer de a1:z3000 à a1:z5000.
Un tas de solutions, mais il faut plus d'infos. Une proposition (honnête):
Code :
1
2
3
4
5
6
7
8
Sub test()
Dim X As Long
X = 5
ActiveWorkbook.Names.Add Name:="AA", RefersToR1C1:="=Feuil1!R1C1:R1C26"
'Définit le nom pour la plage A1Z1 ou redéfinit la plage
ActiveWorkbook.Names("AA").RefersToR1C1 = "=Feuil1!R1C1:R" & X & "C26"
'Redéfinit la plage de référence
End Sub
A+
Gorfael est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/02/2010, 09h48   #5
Invité de passage
 
Inscription : octobre 2009
Messages : 9
Détails du profil
Informations forums :
Inscription : octobre 2009
Messages : 9
Points : 1
Points : 1
Bonjour,

Si j'ai bien compris, Access Newbie, avec ta proposition la plage de cellule n'est pas une variable et ne se modifiera pas automatiquement lors d'ajout d'autre données à la base?

Il faudrait que dans le "range", à la place de "a1;z5000" je puisse mettre la variable decaler() par exemple mais cela ne fonctionne pas.

Bonjour Gorfael,

Je ne suis pas un as en vba, je voulais savoir si à base du code que tu me propose, il est possible de définir une plage qui contient des données. Car avec ton code il sélectionne les 5 1ère ligne de toutes les colonnes qu'il y est des données ou pas dedans, ou puis-je insérer une variable dans ce code, par exemple la fonction "decaler" peut elle être insérer dans ce code.

Merci

Dernière modification par AlainTech ; 23/04/2010 à 20h50. Motif: Fusion de 2 messages
brice86190 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/02/2010, 09h48   #6
Membre Expert
 
Inscription : juillet 2007
Messages : 2 134
Détails du profil
Informations forums :
Inscription : juillet 2007
Messages : 2 134
Points : 2 154
Points : 2 154
Salut brice86190 et le forum
Citation:
puis-je insérer une variable dans ce code
Plus tu nous donnes moins d'informations, moins on peut plus t'aider. Si tu es débutant, expliques-le dès le départ, sinon, les réponses ne te fournissent que des pistes.
Si tu n'exposes pas complêtement le problème, même punition.

jpcheck te propose d'utiliser la fonction DECALER() pour créer une plage dynamique, qui recalculera les adresses, directement dans la feuille de calcul, sans passer par VBA : c'est une autre méthode.

Dans les instructions VBA que je t'ai données, j'ai fourni une piste :
"=Feuil1!R1C1:R1C26"
de R1C1 (A1) à R1C26 (Z1)
Citation:
Par exemple passer de a1:z3000 à a1:z5000.
Quand je lis une telle phrase, j'en déduis que tu veux pouvoir modifier le nombre de ligne (passer de 3000 à 5000). Donc je fournis une idée de la modification de ligne :
Dim X As Long Définir la variable X en entier long
X = 5 alimenter la variable avec une valeur => ici 5
ActiveWorkbook.Names("AA").RefersToR1C1 = "=Feuil1!R1C1:R" & X & "C26" redéfinir la plage nommée AA avec la valeur de la variable => ici R1C1:RxC26 <=> R1C1:R5C26 : A1:Z5
Ça ne correspond pas exactement à ta demande, mais ça te donne une idée de ce que tu dois chercher, comme toi tu nous as donné une idée de ton problème.

"=Feuil1!R1C1:R1C26" peut se transformer en
"=Feuil1!R" & L_1 & "C" & C_1 & ":R" & L_2 & "C" & C_2 & """" avec
C_1 et C_2 des variables définissant les numéros de colonnes de départ et de fin de la plage
L_1 et L_2 des variables définissant les numéros de lignes de départ et de fin de la plage

Donc, si je définis C_1=2, C_2=27, L_1=3000, L_2=5000, la plage nommée AA sera redéfinie en B3000:AA5000

Mais ce n'est qu'une idée, pour pouvoir travailler, pas la résolution de ton problème, puisque la seule info fournie est que tu veux renommer une "plage de données", et qu'on n'en sait pas plus.
Une instruction dans la définition du nom dans la feuille excel du style :
=DECALER(Feuil1!A1;0;0;NBVAL(A:A);26)
serait peut-être plus adaptée, mais comment savoir ????

Et ne te fais pas d'illusion, les dépanneurs recherchent à écrire le moins possible. Perso, un sujet simple qui dépasse les 5 postes ne m'intéresse plus : soit il faut torturer le créateur pour lui arracher des infos, soit celles qu'il donne ne permettent pas de comprendre le problème. Et passer mon temps en écrivain ou en bourreau ne m'apporte que peu de satisfaction

A+

Dernière modification par Gorfael ; 06/02/2010 à 10h01.
Gorfael est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +1. Il est actuellement 14h18.


 
 
 
 
Partenaires

Hébergement Web