Nommer des plages de cellule variable

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Lorenzomike

XLDnaute Nouveau
Bonjour,

Je cherche à nommer des plages de cellule variable tant en nombre de lignes qu'en nombre de colonnes.
En cherchant sur le forum, j'ai trouvé ceci :

Sub Bricoplop()
Dim Cell As Range
Dim Pass As String

Pass = Range("B1")
For Each Cell In Range(Range("B65536").End(xlUp), Range("B1"))
If Cell = Pass Then
Range(Cell, Cell.Offset(1, 1)).Name = Cell.Offset(0, -1)
End If
Next Cell

Pass = Range("F1")
For Each Cell In Range(Range("F65536").End(xlUp), Range("F1"))
If Cell = Pass Then
Range(Cell, Cell.Offset(1, 1)).Name = Cell.Offset(0, -1)
End If
Next Cell

Pass = Range("K1")
For Each Cell In Range(Range("K65536").End(xlUp), Range("K1"))
If Cell = Pass Then
Range(Cell, Cell.Offset(1, 1)).Name = Cell.Offset(0, -1)
End If
Next Cell

Pass = Range("O1")
For Each Cell In Range(Range("O65536").End(xlUp), Range("O1"))
If Cell = Pass Then
Range(Cell, Cell.Offset(1, 1)).Name = Cell.Offset(0, -1)
End If
Next Cell

Pass = Range("S1")
For Each Cell In Range(Range("s65536").End(xlUp), Range("S1"))
If Cell = Pass Then
Range(Cell, Cell.Offset(1, 3)).Name = Cell.Offset(0, -1)
End If
Next Cell
End Sub

Sauf que ça ne s'applique pas précisement dans mon cas.

Dans le fichier joint, je cherche à nommer la plage C2:G9 avec le nom de la cellule A2
Puis le nom de la cellule A11 pour la plage C11:G14
Ainsi de suite

Sachant que je peux avoir plus de colonnes dans certains cas et que les lignes sont variables aussi.

Si c'est possible, peut-on le faire pour plusieurs feuilles en même temps?

Merci de votre aide
 

Pièces jointes

Re : Nommer des plages de cellule variable

bonjour lorenzomike

A tester:

Code:
Sub nomme()
For n = 1 To ActiveSheet.Range("A65536").End(xlUp).Row
 If ActiveSheet.Range("A" & n) <> "" Then
  finl = ActiveSheet.Range("B" & n).End(xlDown).Row
  nom = Range("A" & n)
  ad = "=" & ActiveSheet.Name & "!" & Range("C" & n & ":G" & finl).Address(1, 1, xlR1C1)
  ActiveWorkbook.Names.Add Name:=nom, RefersToR1C1:=ad
 End If
Next n
End Sub

Ps: Ce code est adapté a la feuille presentée
Pour un code plus general priere de donner un peu plus de precisions
 

Pièces jointes

Dernière édition:
Re : Nommer des plages de cellule variable

Bonjour lorenzomike, pierrejean,

Comme je terminais ... ben, je dépose quand même.
Ceci dit la prose de pierrejean me semble plus fouillée et plus pointue. Dans le fichier, j'ai dû ajouter une ligne vide (en vert en-haut)

Mêmes remarques que pierrejean: ça fonctionne, dans le fichier fourni et sans autres indications, difficile de savoir ce qu'il y aurait lieu de prévoir en plus.

Modeste

Edit: en plus, je n'ai pas vu "Si c'est possible, peut-on le faire pour plusieurs feuilles en même temps?"
 

Pièces jointes

Re : Nommer des plages de cellule variable

Bonjour Pierrejean,

Merci tout d'abord.
Ca correspond bien à ce que je recherche.
Cependant est-ce possible de "délimiter" aussi les colonnes sans changer le code car actuellement ça va jusqu'à la colonne G mais ça peut aussi être variable ?

Merci encore
 
Re : Nommer des plages de cellule variable

Bonjour et merci Modeste,

C'est vrai que ça m'arrange de ne pas ajouter de lignes car c'est dans une extraction copiée sur Excel que je veux nommer des plages. Donc plutôt la suggestion de Pierrejean.

Ceci dit, peut-on attribuer ce code à plusieurs feuilles du même fichier en même temps sans que cela soit toutes les feuilles du fichier (je sais pas si je suis bien clair là) sans avoir à passer sur les feuilles concernées une par une?

Merci
 
Re : Nommer des plages de cellule variable

re-bonjour,

Difficile de te répondre, sans précisions supplémentaires, comme nous le mentionnions pierrejean et moi:
- Est-ce que la structure des données, dans toutes les feuilles serait exactement la même (le nom sur la première ligne de la plage, une ligne vide pour séparer les plages)?
- Si tu as plusieurs feuilles est-on certain de ne pas rencontrer plusieurs fois le même nom (ex.: sc221 en Feuil1 et en Feuil5)?
- Si le nombre de colonnes est variable, qu'est-ce qui va permettre de déterminer la "largeur" de la plage (est-ce qu'à chaque fois, la première ligne de la plage sera forcément exempte de cellules vides)?
- etc...

Modeste
 
Re : Nommer des plages de cellule variable

Re-bonjour,

Effectivement, j'ai plusieurs feuilles et les noms sont toujours les mêmes sc221, sc290...
J'ai résolu ce problème en modifiant mon extraction, qui me donne maintenant un nom unique comme dans le fichier joint pour chaque feuille.

Pour les colonnes, les plages de cellule seront quasiment identiques, je devrai avoir au minimum 5 colonnes comme dans le premier fichier et au maximum 7 colonnes donc en remplacement le G par le I dans le code (même si ce sont des colonnes vides) ça fonctionne) mais c'est pas très excel-lent!!

Je mets en pièce jointe, un fichier avec 2 feuilles et le code de pierrejean.

Merci pour votre aide
 

Pièces jointes

Re : Nommer des plages de cellule variable

re-re-bonjour,

Lorenzomike à dit:
Pour les colonnes, les plages de cellule seront quasiment identiques, je devrai avoir au minimum 5 colonnes comme dans le premier fichier et au maximum 7 colonnes donc en remplacement le G par le I dans le code (même si ce sont des colonnes vides) ça fonctionne) mais c'est pas très excel-lent!!
A voir ton fichier, est-ce qu'on peut considérer que le nombre de colonne sera déterminé par le nombre d'en-têtes dans chaque feuille? Si oui, je pense que ce sera un des repères qui manquaient.
D'autre part, à quel moment envisages-tu l'exécution de la macro? Doit-elle s'exécuter une seule fois, quand tu as importé tes données, doit-elle s'actualiser à la demande, lors de la survenance de certains événements. Les plages nommées le sont-elles définitivement ou -une fois nommées- leur taille risque-t-elle d'évoluer (je précise tout de suite que, si c'est le cas, je n'ai pas la moindre idée de la façon de faire 😛)

A ton prochain post, j'aurai peut-être encore des questions ... ou pierrejean ou quelqu'un d'autre aura des solutions

Modeste

Edit qu'est-ce que je disais: pierrejean est déjà là !
 
Dernière édition:
Re : Nommer des plages de cellule variable

Re,

Merci tout d'abord Pierrejean,
C'est le résultat que je recherchais.

Cependant est-ce que toutes les feuilles vont être affectées par la macro?
Car je vais avoir certaines feuilles dans le classeur qui ne devront pas l'être!
Désolé si je suis pas clair.

Modeste, effectivement le nombre de colonnes sera déterminé par le nombre d'en-têtes de chaque feuille.
Je devrai actualiser cette feuille tous les mois avec des copies d'extraction et donc cela vachanger les plages aussi bien en nombre de lignes qu'en nombre de colonnes mais là je pense que le code de Pierrejean fonctionnera parfaitement.

Merci encore de votre aide précieuse
 
Re : Nommer des plages de cellule variable

Re

Il serait judicieux d'exposer le probleme dans son integralité des le debut !!!
La macro devient

Code:
Sub nomme()
Feuilles_non_concernees = "F1,F2,F3,F4" ' remplacer F1 F2 etc...par les noms des feuilles
For Each s In Sheets
If InStr(Feuilles_non_concernees, s.Name) = 0 Then
 For n = 1 To s.Range("A65536").End(xlUp).Row
  If s.Range("A" & n) <> "" Then
   finl = s.Range("B" & n).End(xlDown).Row
   finc = s.Range("IV1").End(xlToLeft).Column
   nom = s.Range("A" & n)
   ad = "=" & s.Name & "!" & s.Range(Cells(n, 3).Address & ":" & Cells(finl, finc).Address).Address(1, 1, xlR1C1)
   ActiveWorkbook.Names.Add Name:=nom, RefersToR1C1:=ad
  End If
 Next n
End If
Next s
End Sub
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

  • Question Question
Microsoft 365 Probléme VBA
Réponses
8
Affichages
318
  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
481
Réponses
4
Affichages
179
Retour