Nommer un champ de cellules non adjacentes.

kioups

XLDnaute Occasionnel
Bonjour,

je cherche à nommer différents champs de cellules non adjacentes.

J'en ai 380 à réaliser avec à chaque fois 50 cellules.
(enfin, 380... ça serait plutôt 380x3...).

J'ai donc voulu réaliser une macro.

Code:
Sub Remplissage()
Dim i As Integer, j As Integer, k As Integer

For i = 1 To 38
    For j = 1 To 10
        For k = 1 To 50
            ActiveWorkbook.Names.Add Name:="PronoDom"&i&"-"&j Refersto:=Cells(6+j-1+18*(i-1),15+3*(k-1))
        Next k
    Next j
Next i
End Sub

Mon but est pour que i = 1 et j = 1, les cellules prennent le nom PronoDom1-1
ainsi de suite jusqu'à PronoDom38-10

J'ai un souci ici : "PronoDom"&i&"-"&j

Par ailleurs, je me demande si ça prend beaucoup de place de rajouter des tonnes comme ça...

Merci beaucoup !

Kioups
 

ROGER2327

XLDnaute Barbatruc
Re : Nommer un champ de cellules non adjacentes.

Bonjour
"-" ne peut être utilisé dans la définition d'un nom. Essayez avec
Code:
ActiveWorkbook.Names.Add Name:="PronoDom" & i & "[COLOR="Red"][B]_[/B][/COLOR]" & j, RefersTo:=Cells(6 + j - 1 + 18 * (i - 1), 15 + 3 * (k - 1))
ROGER2327
 

kioups

XLDnaute Occasionnel
Re : Nommer un champ de cellules non adjacentes.

Merci Roger !

Bon, par contre, j'ai un souci...

Ca ne nomme que la dernière cellule (pour la dernière valeur de k)... mais pas l'ensemble des cellules (pour toutes les valeurs de k).

Il y a un truc qui va pas dans ma macro...
 

JeanMarie

XLDnaute Barbatruc
Re : Nommer un champ de cellules non adjacentes.

Bonjour tout le monde

Tu boucles 50 fois l'écriture du même nom en ne changeant que l'adresse, Excel écrase donc la plage que tu venais de référencer. Rajoutes l'indice K dans le champ Name.

Si tu arrives à un plantage, ne cherche pas la cause, tu auras définis trop de plages nommées.

PS: je n'ai pas chercher à comprendre ce que la formule retournait comme plage.

@+Jean-Marie
 

kioups

XLDnaute Occasionnel
Re : Nommer un champ de cellules non adjacentes.

Bonsoir Jeanmarie

Je me doute bien qu'avec 1140 plages nommées, ça peut poser un souci.

Là, avec 380, ça va... à part que je n'arrive pas à sélectionner mes 50 cellules, mais que la dernière...

Si ça peut fonctionner, ça m'allégerait énormément la tâche pour la suite !

Pour tout sélectionner, j'ai pensé à la fonction décaler, mais je ne la maitrise absolument pas....
 

eriiic

XLDnaute Barbatruc
Re : Nommer un champ de cellules non adjacentes.

Bonjour,

Oui tu peux, en la redéfinissant... Donc ça ne t'avance pas.
Si tu pense que decaler() peut résoudre ton problème regarde l'aide excel, elle n'est pas si compliquée cette fonction.
DECALER(réf;lignes;colonnes;hauteur;largeur) : je veux décaler telle ref (qui peut être un nom), de tant de lignes (qui peut être une formule) et de tant de colonnes, et que ma plage soit de telle hauteur et telle largeur (optionnel, sinon c'est la taille de ref)...
En vba c'est :
[ma_ref].offset(lignes,colonnes) avec en option derrière .resize(hauteur,largeur)
Tu pars d'un seul nom et tu calcules ton offset...

eric
 

kioups

XLDnaute Occasionnel
Re : Nommer un champ de cellules non adjacentes.

Ptete une autre piste avec la fonction décaler.

J'ai voulu définir un champ en entrant la formule
Code:
=decaler($O$6;;3;50)
qui pour moi va sélectionner la cellule $O$6 puis la cellule située 3 colonnes à droite, et ainsi de suite, jusqu'à sélectionner 50 cellules !

Bon, apparemment, ça ne fonctionne pas...

Une petite aide ??

Merci d'avance !

EDIT : désolé Eric, on s'est croisé !
 
Dernière édition:

kiki29

XLDnaute Barbatruc
Re : Nommer un champ de cellules non adjacentes.

Salut, je crois avoir trouvé ce que tu cherches à faire
Code:
Sub Remplissage_02()
Dim i As Integer, j As Integer, k As Integer
Dim s As String
    For i = 1 To 38
        For j = 1 To 10
            s = ""
            For k = 1 To 50
                s = s & ",Feuil1!R" & (6 + j - 1 + 18 * (i - 1)) & "C" & (15 + 3 * (k - 1))
            Next k
            s = Mid(s, 2, Len(s) - 1)
            ActiveWorkbook.Names.Add Name:="PronoDom" & i & "_" & j, _
                                     RefersToR1C1:="=" & s

        Next j
    Next i
End Sub

Private Sub DeleteNames()
Dim i As Long, NbNoms As Long
    NbNoms = ActiveWorkbook.Names.Count
    For i = NbNoms To 1 Step -1
        ActiveWorkbook.Names(i).Delete
    Next i
End Sub

Par contre cela ne marchera que sous Excel 2007 car il existe une limite de longueur de chaine ( nommée ici s ) qui se situe entre 230/240 jusqu'à excel 2002, peut-être également sous 2003 ( ne l'ayant pas je n'ai pas testé )

ce fichier généré sous 2007 s'ouvre sans probleme sous 2002 et la sélection de plages nommées s'y effectue sans probleme
 
Dernière édition:

kioups

XLDnaute Occasionnel
Re : Nommer un champ de cellules non adjacentes.

Je tourne dans tous les sens, pas moyen de tirer quoi que ce soit de cette fonction décaler...

J'ai un fichier joint.

Dans ce fichier, j'aimerai, en utilisant la fonction décaler avoir le résultat de la case O6 dans la case O13, le résultat de la case R6 dans la case P13, le résultat de la case U6 dans la case Q13.

Merci si vous pouvez me tirer de ce mauvais pas...
 

kioups

XLDnaute Occasionnel
Re : Nommer un champ de cellules non adjacentes.

Avec le fichier joint, c'est mieux
 

Pièces jointes

  • Nbrecellulesmodulo.xls
    28 KB · Affichages: 68
  • Nbrecellulesmodulo.xls
    28 KB · Affichages: 65
  • Nbrecellulesmodulo.xls
    28 KB · Affichages: 73

kioups

XLDnaute Occasionnel
Re : Nommer un champ de cellules non adjacentes.

Merci Kiki29.

Mais je compte l'utiliser uniquement sur 2007.

Par contre, j'essaie de l'utiliser avec un sommeprod et j'ai un souci.

J'ai donc créé les PronoDom et j'ai fait pareil avec les PronoExt.

j'ai voulu calculer le nombre de victoire à domicile en utilisant :

Code:
=SOMMEPROD((PronoDom1_1>PronoExt1_1)*1)

Et là, j'ai une erreur de valeur.

Mes deux "matrices" ont le même nombre de valeurs pourtant. Ou alors, c'est parce que ce ne sont pas des matrices ? Et là, ça voudrait dire que tout ça ne pourrait pas servir...
 

kioups

XLDnaute Occasionnel
Re : Nommer un champ de cellules non adjacentes.

Ou une autre solution, c'est d'utiliser une petite macro du style :

Fonction Nb1 (PronoDom,PronoExt) où PronoDom et PronoExt seraient l'ensemble de mes cellules du champ PronoDom1_1 et PronoExt1_1 (par exemple)

Pour i = 1 à NbVal(PronoDom) (c'est "théoriquement" le même pour Dom et Ext)
on teste sur la i-ième cellule de chaque champ
Next i

Fin Fonction

Le souci, c'est que mes "champs" ne sont pas des lignes ou des matrices...

Une piste pour remplir la ligne entre mon pour et mon next ?

merci d'avance !
 

Discussions similaires

Réponses
29
Affichages
1 K

Membres actuellement en ligne

Statistiques des forums

Discussions
312 493
Messages
2 088 956
Membres
103 990
dernier inscrit
lamiadebz