Nommer un ensemble de cellules (excel)

Résolu
fanjomtl Messages postés 20 Date d'inscription jeudi 11 novembre 2004 Statut Membre Dernière intervention 27 janvier 2008 - 13 juin 2007 à 22:43
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 - 15 juin 2007 à 07:05
Bonjour à tous chers amis,

Dans excel, j'aimerais pouvoir gérer des "blocs" de cellules.

Par exemple, j'aimerais que les cases A1 A2 A3 et A4 soit appelés "MesCasesA"

et ensuite dans mon code vba, si je veux effacer le contenu de ces cellules, je voudrais pouvoir faire  en une seule fois :

  Range("MesCasesA").ClearContents

Question:  À quel endroit et comment je fais pour grouper les cases A1 A2 A3 et A4 et les appeler "MesCasesA" ?

Merci beaucoup !

14 réponses

mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
14 juin 2007 à 15:39
Re,

 Beh pour ton 1/ :
Quand toi tu lances ton programme (admettons tu lances un UserForm, tu peux le mettre à l'évènement Initialize de ta Form)
Par contre, pense à la supprimer au Unload de ton UserForm :
ActiveWorkbook.Names("MesCasesA").Delete

Pour ton 2/ :
Tu veux donc définir la plage B1:C2.
La première cellule est B1, donc c'est la première ligne, et la deuxième colonne.--> Row 1 & Column 2

La première cellule est C2, donc c'est la deuxième ligne, et la troisième colonne.

--> Row 2 & Column 3

Conclusion, ActiveWorkbook.Names.Add Name:="MesCasesBetC", RefersToR1C1:="=NomFeuille!R1C2:R2C3"

J'espère que ça répond à tes attentes

@++

<hr size ="2" width="100%" />( Nouveau forum : Exclusivement Office & VBA
3
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
14 juin 2007 à 20:57
Oui, j'ai ma petite idée dans

Private Sub Workbook_Open()
ActiveWorkbook.Names.Add Name:= "EnsembleA", RefersToR1C1:="=NomFeuille!R10C2:R30C3"
End Sub

Je suppose que ta feuille ne s'appelle pas NomFeuille . Remplace ça par le bon nom

@++

<hr size ="2" width="100%" />( Nouveau forum : Exclusivement Office & VBA
3
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
14 juin 2007 à 06:20
Salut,

ActiveWorkbook.Names.Add Name:="MesCasesA", RefersToR1C1:="=NomFeuille!R1C1:R4C1"

Pense à remplacer NomFeuille.
R1C1:R4C1 veut dire : Row1 Column1 : Row4 Column1 ( bref, A1:A4)

@++

<hr size="2" width="100%" />( Nouveau forum : Exclusivement Office & VBA
0
fanjomtl Messages postés 20 Date d'inscription jeudi 11 novembre 2004 Statut Membre Dernière intervention 27 janvier 2008
14 juin 2007 à 15:28
Salut et merci

1) A quel endroit dois-je écrire le ActiveWorkbook.etc.... ? Dans une fonction initialize ? (J'aimerais que le groupement soit effectivement pendant toute la durée de mon programme)

2) Ok et si je veux grouper les cases  B1,B2,C1 et C2  comment écrire ce genre de combinaison ?

Merci
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
14 juin 2007 à 15:40
Lire :

La première cellule est B1, donc c'est la première ligne, et la deuxième colonne.--> Row 1 & Column 2

La <strike>première</strike> dernière cellule est C2, donc c'est la deuxième ligne, et la troisième colonne. --> Row 2 & Column 3

(mauvais copier / coller, désolé)

@++

<hr size="2" width="100%" />( Nouveau forum : Exclusivement Office & VBA
0
fanjomtl Messages postés 20 Date d'inscription jeudi 11 novembre 2004 Statut Membre Dernière intervention 27 janvier 2008
14 juin 2007 à 19:20
Merci pour la zone multiple.

Désolé pour ma persistance mais je débute avec excel donc je ne comprend pas tout...

Je n'utilise pas de useform (donc pas de initialize)

Par contre, j'ai deux boutons dans mon fichier :

J'ai des cases que l'utilisateur peut cliquer dès qu'il ouvre le fichier excel. 
Quand il en sélectionne 3, le bouton  OK devient cliquable et je fais  un traitement avec les cases qu'il a cliqué.
A tout moment, il peut cliquer sur le bouton RESET qui annule la sélection des cases.

Du coup, il faudrait que je mette
 ActiveWorkbook.Names.Add Name:="MesCasesBetC", RefersToR1C1:="=NomFeuille!R1C2:R2C3"
de façon à ce qu'il soit éxécuté à l'ouverture du fichier excel (et qu'il "reste en mémoire" jusqu'à ce qu'on ferme le fichier)

(je ne peux donc pas juste le mettre dans les événement de type Boutons_Click() )

merci
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
14 juin 2007 à 20:31
Alors met les codes dans les évènements Open et Close de ton WorkBook.
Tiens, c'est cadeau (faut bien se faire un peu de pub) :

http://www.vbfrance.com/tutoriaux/DEBUTANTS-DECOUVRIR-
ENVIRONNEMENT-VISUAL-BASIC-SOUS-MICROSOFT-EXCEL_646.aspx

Double click sur ThisWorkbook :

Et choisi les évènements Open et Close :

@++

<hr size="2" width="100%" />( Nouveau forum : Exclusivement Office & VBA
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
14 juin 2007 à 20:32
Oups, pas Close mais BeforeClose

@++

<hr size="2" width="100%" />( Nouveau forum : Exclusivement Office & VBA
0
fanjomtl Messages postés 20 Date d'inscription jeudi 11 novembre 2004 Statut Membre Dernière intervention 27 janvier 2008
14 juin 2007 à 20:53
Alors j'ai une erreur de nom ... Je te donne ce que j'ai.

Dans mon "ThisWorkbook", j'ai :

Private Sub Workbook_Open()
ActiveWorkbook.Names.Add Name:= "EnsembleA", RefersToR1C1:="=NomFeuille!R10C2:R30C3"
End Sub
-------------------------
Private Sub Workbook_BeforeClose(Cancel As Boolean)
ActiveWorkbook.Names("EnsembleA").Delete
End Sub
-------------------------

Dans mon "Feuil1(MonProg)" j'ai :

Private Sub BoutonInitialiser_Click()
     Dim ensemble As Range
      Sheets("MonProg").Activate
     Set ensemble = Range("EnsembleA") 
....
End Sub

Quand je clique sur le bouton Initialiser j'obtiens le message d'erreur :

Erreur d'exécution '1004':
La méthode 'Range' de l'objet '_Worksheet' a échoué

En cliquant sur Déboguage je tombe sur ma ligne
     Set ensemble = Range("EnsembleA")

C'est comme si il ne reconnaissait pas le nom EnsembleA ...
Une idée

Merci
0
fanjomtl Messages postés 20 Date d'inscription jeudi 11 novembre 2004 Statut Membre Dernière intervention 27 janvier 2008
14 juin 2007 à 21:04
ok ça ne plante plus....

Un grand grand grand merci pour cet apprentissage !
0
fanjomtl Messages postés 20 Date d'inscription jeudi 11 novembre 2004 Statut Membre Dernière intervention 27 janvier 2008
14 juin 2007 à 23:45
Salut mortalino

Tu te souviens, j'avais l'erreur 1004
La méthode 'Range' de l'objet '_Worksheet' a échoué

Et il avait fallu que je mette le nom de ma feuille au lieu de NomFeuille dans

Private Sub Workbook_Open()
ActiveWorkbook.Names.Add Name:="EnsembleA", RefersToR1C1:="=NomFeuille!R10C2:R30C3"
End Sub

Cela avait bien arrangé le problème dans mon Sub :
Public Sub initialisation() qui se trouve dans Feuil1.

Maintenant, je fais exactement la même chose, dans la même Feuil1 mais dans une fonction au lieu d'un Sub.

Function Memoire(ByVal NumeroTire As Integer) As Boolean

Et là, j'obtiens l'erreur...
une idée ?

Merci !!!
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
15 juin 2007 à 06:27
Ok, mais peux tu me mettre tes codes et me dire où ils se trouvent ?
Comment appelles-tu la fonction et sur quelle ligne ça plante ?

merci

@++

<hr size="2" width="100%" />( Nouveau forum : Exclusivement Office & VBA
0
fanjomtl Messages postés 20 Date d'inscription jeudi 11 novembre 2004 Statut Membre Dernière intervention 27 janvier 2008
15 juin 2007 à 06:58
Salut...

bon c'est à n'y rien comprendre (ça arrive souvent en info).... j'ai fermé excel pendant quelques heures et au moment de retravailler, tout fonctionne comme voulu...

Tant mieux ! Étant donné que le Sub et la Function étaient dans la même Feuil1, je comprend vraiment pas pourquoi tout à l'heure il ne voulait pas reconnaitre les noms donnés aux groupes de cellules dans la Function alors qu'il les reconaissait dans le Sub....

Bref sans rien changer, c'est résolu :)

@+
merci encore 
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
15 juin 2007 à 07:05
Tant mieux.
Pour infos, si tu as mis ta function dans le module de code de ta Feuil1, et que tu appelles cette fonction depuis un autre module (par exemple, le module de code ThisWorkbook, là où se trouvent WorkBook_Open et BeforeClose), ça ne fonctionnera pas.
Il faut de ce cas précis placer ta fonction dans un Module supplémentaire (menu Insertion, Module) pour que celle -ci soit accessible partout dans ton projet.

@++

<hr size="2" width="100%" />( Nouveau forum : Exclusivement Office & VBA
0
Rejoignez-nous