XL 2013 Nommer un grand nombre de formules

Kay0ux

XLDnaute Nouveau
Bonjour à tous !!!

Après recherche, je n'ai pas trouver de réponse à ma question...

Est-il possible de créer rapidement un grand nombre de noms avec comme référence une formule ? (et non une cellule/plage)

(( En effet je souhaite créer 90 noms avec des formules différentes.
La référence de chaque nom est du type =DECALER(Pictos!A2;0;Foglio1!E5;1;1) pour faire référence à des images.
Le nom me sert alors à afficher l'image. ))

J'ai bien tenté d'utiliser "créer des noms depuis la sélection" mais la référence de chaque nom est une cellule (et non une formule), ce qui ne répond pas à mon besoin.
upload_2017-8-31_12-39-18.png


Merci par avance de vos réponses et du temps consacré à mon problème !!
Bonne journée !

Pierre
 

zebanx

XLDnaute Accro
Bonjour Kayoux,

Sur le dernier point, à savoir affecter un nom à une formule, il y a ce lien sur E.D. mais qui ne traite pas de boucles.
https://www.excel-downloads.com/threads/nommer-une-formule.45745/

Pour le faire en dynamique avec une macro, ça doit être possible, mais il faudrait déjà que vous donniez l’extension de "nom" que vous souhaitez.
Si vous pensez à 90 noms, il doit y avoir quelque chose comme cela de prévu pour retrouver le nom rapidement.

Au besoin, comme habituellement, prévoir peut-être de mettre une partie du fichier final en ligne.

Cdlt
thierry
 

Kay0ux

XLDnaute Nouveau
Thierry, XLDnautes,

Tout d'abord merci pour ta réactivité.
J'avais vu ce post, mais comme tu le constates, il ne répond pas à mes attentes.

Comme tu me l'as suggéré, voici le fichier en question :

Merci de porter un intérêt sur la feuille bilan et les colonnes C à K.
La plage C2:K3 fonctionne comme je le désire, mais je l'ai remplie manuellement.
En C5 c'est un essai avec le fameux "créer des noms depuis la sélection" (M4_P1)

Le gestionnaire de noms permet de voir rapidement mes difficultés .
(nomenclature : M pour mélange et P pour pictogramme)

Ce que je souhaite concrètement :
Renseigner le "Fait référence à" du gestionnaire des noms par le contenu de cellules (et non leur adresse).

upload_2017-8-31_14-22-1.png


(Dans la mesure du possible, je souhaite éviter le VBA)

Encore merci !
Cordialement,
Pierre
 

Pièces jointes

  • XLD MODOP.xlsx
    249.5 KB · Affichages: 33

zebanx

XLDnaute Accro
Bonjour Pierre,

Je bloque aussi pour créer la formule.
Créer tous les noms à partir d'une liste en VBA et leur coller une formule, c'est possible.
Mais je bloque sur l'utilisation d'une variable permettant de renvoyer la plage correspondante dans l'un des champs de la formule DECALER (pour chaque cellule (i,1) renvoie à l'indirect (i,2)).

Ci-joint un fichier. Si quelqu'un peut nous aider sur la correction du code, je vous en remercie par avance,
En A1 de la sh("liste") il y a une formule qui fonctionne avec un indirect sur la colonne B à utiliser dans la formule décaler.

cdlt
Thierry

-----------------------
Sub nom_formule()
Dim i As Integer
Dim j As Integer
Dim Formula1 As Variant
Dim derligne As Integer
Dim shref As Worksheet

Set shref = ActiveSheet
derligne = shref.Range("A2").End(xlDown).Row
shref.Activate

On Error Resume Next
For i = 2 To derligne
Cells(i, 1).Select
IName = Cells(i, 1).Value
j = Cells(i, 2).Value 'contient le champ variable dans chaque référence de "NOM"
Formula1 = "=OFFSET(Pictos!R2C1,0," & j & ",1,1)"
ActiveWorkbook.Names.Add Name:=IName, RefersTo:=Formula1
Next i

End Sub
 

Pièces jointes

  • test.xls
    1.2 MB · Affichages: 40

vgendron

XLDnaute Barbatruc
Hello
pas sur d'avoir tout compris mais..
déjà.. si J doit récupérer la chaine de caractère dans la colonne B..
donc. ne pas déclarer j comme un single mais comme une String
ensuite..
voir ci dessous

VB:
Sub nom_formule()
Dim i As Integer
Dim j As String
Dim Formula1 As Variant
Dim derligne As Integer
Dim dercol As Integer
Dim shref As Worksheet

Set shref = ActiveSheet

derligne = shref.Range("A2").End(xlDown).Row

For i = 2 To derligne
    Cells(i, 1).Select
    IName = Cells(i, 1)
    j = Range("B" & i)
    Formula1 = "=OFFSET(Pictos!$A$" & i & ",0," & j & ",1,1)"
    ActiveWorkbook.Names.Add Name:=IName, RefersTo:=Formula1
Next i

End Sub

sans doute que
Code:
Formula1 = "=OFFSET(Pictos!$A$" & i & ",0," & j & ",1,1)"
doit etre remplacé par
Code:
 Formula1 = "=OFFSET(Pictos!$A$2,0," & j & ",1,1)"
 
Dernière édition:

zebanx

XLDnaute Accro
Bonjour Vgendron.

Un grand merci pour le code et les précisions. :)
Je crois que c'est ça à une modification près (ie : $A$2 restant fixe en début de formule DECALER mais j'ai corrigé) et je vais refournir une plage plus remplie à Kayoux pour voir si cela correspond bien.

J'en profite du coup si tu connais la réponse STP :
Peut-on affecter une référence directement à partir d'une formule contenue dans une cellule ?

Par exemple, s'il existe :
A1 = NomChoisi et A2 "= Decaler(A2;1;1;0;0)" alors serait-il possible SVP quand on nomme la plage avec la valeur de A1 de préciser sa zone de référence au contenu de la cellule A2 ?
(Peut-être faudrait-il d'ailleurs retirer le "=" pour traiter la formule en A2 comme une variable STRING ?)

Je te remercie par avance pour tes précisions sur un tel sujet qui peut effectivement s'avérer utile quand on a beaucoup de noms / formules longues à rentrer sur chaque référence (et traiter rapidement cela par une boucle) ?

Cdlt
thierry
 
Dernière édition:

zebanx

XLDnaute Accro
@Kayoux

Ci-joint le même fichier avec l'ajout d'une sheets (liste) permettant d'affecter aux 81 noms une plage de référence avec le code modifié par VGENDRON.
Il faut lancer la macro "nom_formule2" depuis la wks ("liste") ce qui a déjà été fait sur le fichier joint.

Pour supprimer tous les noms, il y a également une macro qui va ne travailler sur le classeur actif.

J'espère avoir compris la référence de chaque nom, càd la partie "Foglio1!E3" pour chaque nom.

Et encore merci à Vgendron pour ses corrections.

Cdlt
thierry
 

Pièces jointes

  • fichier_test_MODOP.xls
    311 KB · Affichages: 41

zebanx

XLDnaute Accro
@gosselien

Bonsoir,
L'habitude de le mettre sur des plages "courtes" par habitude de voir l'exécution d'un code en pas à pas détaillé.
Mais c'est clair que tous les "select" ralentissent les codes, je te remercie de l'avoir regardé et souligné -)

Bonne soirée à toi
z.
 

vgendron

XLDnaute Barbatruc
Hello Gosselien
Exact pour les select. d'ailleurs. je l'avais pourtant enlevé... mais je vois que mon post le fait encore apparaitre.. j'ai du modifier après.. et comme Zebanx. ils me servent au débuggage..
du coup. merci pour le Ctrl G que je ne connaissais pas :)
F8. par contre.. pas de souci. la touche est la plus propre de mon clavier :)
 

Discussions similaires

Statistiques des forums

Discussions
312 109
Messages
2 085 381
Membres
102 876
dernier inscrit
BouteilleMan