OVH Cloud OVH Cloud

définir un nom

2 réponses
Avatar
Bruno RCSC
Bonsoir,

Win XP, Excel 97, pas un pro de la macro.

J'ai un tableau, je veux le sélectionner, lui donner un nom, le trier et
faire des sous totaux.
Mon problème est que j'ai plusieurs fichiers différents en nombre de lignes
et je veux utiliser la même macro.
J'utilise le code suivant :
Range("A1").Select
Range("A1:" & [A1].SpecialCells(xlCellTypeLastCell).Address).Select
ActiveWorkbook.Names.Add Name:="Database", RefersToR1C1:= _
"='3CMCD'!R1C1:R185C10"
Columns("B:B").Select
Selection.Insert Shift:=xlToRight
Range("B1").Select
ActiveCell.FormulaR1C1 = "RACINE"
Range("B2").Select
ActiveCell.FormulaR1C1 = "=IF(ISBLANK(RC[-1]),"""",LEFT(RC[-1],3))"
Range("A1").Select
Application.Goto Reference:="Database"
Selection.Sort Key1:=Range("A2"), Order1:=xlAscending, Header:=xlGuess,
_
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
Si le tableau suivant fait par exemple 220 lignes, le nom "base de données"
ne se réfère qu'à la ligne 185.
Comment rendre la définition de mon nom variable en fonction du nombre de
lignes ?

Merci de votre aide.

2 réponses

Avatar
Elliac
Bonjour,

Il faut utiliser la méthode "Currentregion".
ActiveWorkbook.Names.Add Name:="Database", RefersToR1C1:= _
Range("a1").CurrentRegion

Si ce n'est que pour le tri pour la peine d'avoir un champ nommé.
Pour déterminer la dernière ligne du tableau, en admettant que la colonne A
est toujours remplie :
der=Range("A65000").End(Xlup).Row

Pour avoir le calcul sur toute la colonne B :
Range("B2:b" & der) "=IF(ISBLANK(RC[-1]),"""",LEFT(RC[-1],3))"

Camille

"Bruno RCSC" wrote:

Bonsoir,

Win XP, Excel 97, pas un pro de la macro.

J'ai un tableau, je veux le sélectionner, lui donner un nom, le trier et
faire des sous totaux.
Mon problème est que j'ai plusieurs fichiers différents en nombre de lignes
et je veux utiliser la même macro.
J'utilise le code suivant :
Range("A1").Select
Range("A1:" & [A1].SpecialCells(xlCellTypeLastCell).Address).Select
ActiveWorkbook.Names.Add Name:="Database", RefersToR1C1:= _
"='3CMCD'!R1C1:R185C10"
Columns("B:B").Select
Selection.Insert Shift:=xlToRight
Range("B1").Select
ActiveCell.FormulaR1C1 = "RACINE"
Range("B2").Select
ActiveCell.FormulaR1C1 = "=IF(ISBLANK(RC[-1]),"""",LEFT(RC[-1],3))"
Range("A1").Select
Application.Goto Reference:="Database"
Selection.Sort Key1:=Range("A2"), Order1:=xlAscending, Header:=xlGuess,
_
OrderCustom:=1, MatchCase:úlse, Orientation:=xlTopToBottom
Si le tableau suivant fait par exemple 220 lignes, le nom "base de données"
ne se réfère qu'à la ligne 185.
Comment rendre la définition de mon nom variable en fonction du nombre de
lignes ?

Merci de votre aide.







Avatar
Bruno RCSC
Bonjour,

Merci Camille, cela répond à mon besoin du jour.

A priori, ll manquait un signe égal dans cette ligne.
Range("B2:b" & der) = "=IF(ISBLANK(RC[-1]),"""",LEFT(RC[-1],3))"