IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

gestionnaire de nom avec plage variable


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Femme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Avril 2014
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Contrôleur de Gestion
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Avril 2014
    Messages : 45
    Points : 39
    Points
    39
    Par défaut gestionnaire de nom avec plage variable
    Bonjour

    J'ai une feuille nommée BASE DONNEE TDB que je transfert d'un fichier (A) à un autre (B) tout les mois.
    Les données de cette feuille sont variables. Càd il peut y avoir 500 lignes une fois, 550 l'autre fois...

    Une fois intégrée dans le fichier B, je souhaite nommer via le gestionnaire des noms l'ensemble de ma feuille BASE DONNEE TDB (importée) par le nom base_tdb

    avec l'enregistreur automatique de macro j'ai :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ActiveWorkbook.Names.Add Name:="base_tdb", RefersToR1C1:= _
            "='BASE DONNEE TDB'!R1C1:R11656C9"
    le ic, je voudrais remplacer le ='BASE DONNEE TDB'!R1C1:R11656C9" par MaPlage

    J'ai fait (MaPlage est déclarée As Range, MaZone as String) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sheets("BASE DONNEE TDB").Activate
    i = Range("A" & Rows.Count).End(xlUp).Row 'i est la dernière ligne de la feuille
    Set MaPlage = Range("A1:I" & i)
    MaZone = "'BASE DONNEE TDB'!" & MaPlage
    ActiveWorkbook.Names.Add Name:="base_tdb", RefersToR1C1:=   "=MaZone"
    et là : buuug ! cela ne fonctionne pas. qqn à une idée de la solution ?

  2. #2
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2014
    Messages : 69
    Points : 134
    Points
    134
    Par défaut
    Bonjour, je ne sais pas si c'est la source du problème mais dans ton RefersToR1C1:= tu donnes une référence à une plage avec une notation de type A1 alors que le paramètre attend une notation de type R1C1.
    Essaye donc de changer le RefersToR1C1:= par un RefersTo:=

  3. #3
    Nouveau membre du Club
    Femme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Avril 2014
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Contrôleur de Gestion
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Avril 2014
    Messages : 45
    Points : 39
    Points
    39
    Par défaut
    j'y ai pensé, j'ai testé... en vain.
    en fait, quoique je mette vba transforme en type R1C1 ...

  4. #4
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2014
    Messages : 69
    Points : 134
    Points
    134
    Par défaut
    En testant ton code j'ai eu une incompatibilité type qui vient du fait que tu essayes de concaténer un String avec un Range.
    Voila donc un code qui marche :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub Test()
     
        Dim i As Long, MaPlage As Range
        i = Range("A" & Rows.Count).End(xlUp).Row
        Set MaPlage = Sheets("BASE DONNEE TDB").Range("A1:I" & i)
        ActiveWorkbook.Names.Add Name:="base_tdb", RefersTo:=MaPlage
     
    End Sub
    Tu pourrais même te passer de la variable MaPlage en notant tout directement dans le RefersTo :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Sub Test()
     
        Dim i As Long
        i = Range("A" & Rows.Count).End(xlUp).Row
        ActiveWorkbook.Names.Add Name:="base_tdb", RefersTo:=Sheets("BASE DONNEE TDB").Range("A1:I" & i)
     
    End Sub

  5. #5
    Nouveau membre du Club
    Femme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Avril 2014
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Contrôleur de Gestion
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Avril 2014
    Messages : 45
    Points : 39
    Points
    39
    Par défaut
    cela marche ...

    ... presque !
    en effet, peut être pas besoin de passer par une variable.

    une fois la macro terminée, je suis allée voir dans le gestionnaire du nom ce que cela donne. la référence de mon base_tdb est alors :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ='BASE DONNEE TDB'!'L1C1':'L3781C9'
    (i était bien = 3781 donc c'est super !)

    ce qui ne renvoie à rien.
    y a-t-il une solution pour que vba ne renvoie pas L1C1 ?

    le souci est le :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    'ActiveWorkbook.Names("base_tdb").comment = "base_tdb est la référence à la base de donnée utilisée dans le fichier tableau de bord (tableaux croisés dynamiques)"
    MERCI DE TON AIDE !

Discussions similaires

  1. [XL-2003] Comment parcourir plage de cellule avec plage variable ?
    Par ivanG dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 09/07/2014, 11h28
  2. VBA - Graphique avec plage variable
    Par virstyle dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 06/06/2010, 12h48
  3. comparaison de 2 feuille avec plage variable
    Par oscar.cesar dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 02/04/2009, 22h49
  4. Création de validation de donnée avec plage variable
    Par Krovax dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 26/02/2009, 14h14
  5. Fonction "SOMME.SI" avec plage variable
    Par marc56 dans le forum Excel
    Réponses: 3
    Dernier message: 26/11/2008, 16h52

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo