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 (permalink)
Invité de passage
 
Date d'inscription: octobre 2009
Messages: 9
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
Vieux 04/02/2010, 17h18   #2 (permalink)
Rédacteur/Modérateur
 
Avatar de jpcheck
 
Date d'inscription: juillet 2007
Localisation: London
Âge: 26
Messages: 5 316
Envoyer un message via MSN à jpcheck
Par défaut

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 actuellement connecté   Envoyer un message privé Réponse avec citation
Vieux 04/02/2010, 17h26   #3 (permalink)
Membre Confirmé
 
Date d'inscription: juillet 2006
Messages: 276
Par défaut

Bonjour,

Sinon avec du code vba quelque chose dans ce style :

Code :
 
 
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
Vieux 04/02/2010, 17h41   #4 (permalink)
Expert Confirmé
 
Date d'inscription: juillet 2007
Localisation: Loire Atlantique (44)
Âge: 54
Messages: 1 852
Par défaut

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 :
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+
__________________
La qualité et la précision de la réponse sont proportionnelles à celles de la question.
Gorfael est actuellement connecté   Envoyer un message privé Réponse avec citation
Vieux 05/02/2010, 09h48   #5 (permalink)
Invité de passage
 
Date d'inscription: octobre 2009
Messages: 9
Par défaut

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.
brice86190 est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 05/02/2010, 09h56   #6 (permalink)
Invité de passage
 
Date d'inscription: octobre 2009
Messages: 9
Par défaut

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
brice86190 est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 06/02/2010, 09h48   #7 (permalink)
Expert Confirmé
 
Date d'inscription: juillet 2007
Localisation: Loire Atlantique (44)
Âge: 54
Messages: 1 852
Par défaut

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+
__________________
La qualité et la précision de la réponse sont proportionnelles à celles de la question.

Dernière modification par Gorfael ; 06/02/2010 à 10h01.
Gorfael est actuellement connecté   Envoyer un message privé Réponse avec citation
NEWS EXCELF.A.Q EXCELTUTORIELS EXCELSOURCES EXCELOUTILS EXCELLIVRES EXCELOFFICE 2010

Réponse Proposer ce sujet en actualité

Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel



Outils de la discussion

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are non
Pingbacks are non
Refbacks are non



Fuseau horaire GMT +1. Il est actuellement 11h10.


Vos questions techniques : forum d'entraide Excel - Publiez vos articles, tutoriels et cours
et rejoignez-nous dans l'équipe de rédaction du club d'entraide des développeurs francophones
Nous contacter - Hébergement - Participez - Copyright © 2000-2010 www.developpez.com - Legal informations.