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 :

création d'une plage de données avec nom de feuille variable


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Homme Profil pro
    retraité
    Inscrit en
    Juin 2014
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 76
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juin 2014
    Messages : 9
    Points : 8
    Points
    8
    Par défaut création d'une plage de données avec nom de feuille variable
    J'ai créé une macro qui identifie le nom de la feuille sous onglet; à l'intérieur de la macro, je désire créer une plage de données valable sur cette feuille iniquement. La plage se crée sur la feuille active et la plage réfère à la feuille active ('71'!$B$7:$B$10), ce qui est OK. Mais si j'exécute la macro sur la feuille 72, une plage de données est créée sous le nom de la feuille active (72) mais avec la référence ('71'!$B$7:$B$10); je voudrais, comme résultat une référence à ('72'!$B$7:$B$10), c'est-à-dire que la référence utilise la variable de la page active. Besoin d'aide SVP.

  2. #2
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 203
    Points : 14 354
    Points
    14 354
    Par défaut
    Bonjour,

    Crée un nom avec la ligne suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveWorkbook.Names.Add Name:="Plage", RefersToR1C1:="=!R7C2:R10C2"
    Tu peux ensuite utiliser ce nom sur la feuille active.
    Cordialement.

    Daniel

    La plus perdue de toutes les journées est celle où l'on n'a pas ri. Chamfort

  3. #3
    Futur Membre du Club
    Homme Profil pro
    retraité
    Inscrit en
    Juin 2014
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 76
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juin 2014
    Messages : 9
    Points : 8
    Points
    8
    Par défaut
    Voici ce que cela me donne en incluant la ligne:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Range("B61:B64").Select
        ActiveWorkbook.Names.Add Name:="Plage", RefersToR1C1:="=!R61C2:R64C2"
        ActiveWorkbook.Worksheets(onglet).Names.Add Name:="datepret21", RefersToR1C1:="=plage!R61C2:R64C2"
        ActiveWorkbook.Worksheets(onglet).Names("datepret21").Comment = ""
    Ca ne fonctionne pas; quelle est la bonne syntaxe? (note: onglet = 71, la feuille active). En vérifiant le nom de plage (Name Manager, ma version est en anglais), j'obtiens le bon nom de plage datepret21 et la bonne feuille, soit 71 (dans Scope) mais la référence est: plage!$B61:$B$64 et je n'obtiens aucune valeur, seulement #REF.

    Merci d'aider un débutant

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    161
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 161
    Points : 155
    Points
    155
    Par défaut
    Bonjour ,
    je ne comprend pas tout de ton problème mais pour identifier la feuille active essai" Activesheet"

  5. #5
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 203
    Points : 14 354
    Points
    14 354
    Par défaut
    Ce que je t'ai donné s'applique sur la feuille active, quelle qu'elle soit. Si j'ai mal compris, dis-le.
    Cordialement.

    Daniel

    La plus perdue de toutes les journées est celle où l'on n'a pas ri. Chamfort

  6. #6
    Futur Membre du Club
    Homme Profil pro
    retraité
    Inscrit en
    Juin 2014
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 76
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juin 2014
    Messages : 9
    Points : 8
    Points
    8
    Par défaut
    Je reprends l'explication de mon problème. Sur la feuille N° 71, j'active la macro qui crée une deuxième page à mon rapport: je dois définir des plages de données pour obtenir des soldes sur cette deuxième page. Une fois la macro activée et la page créée, j'obtiens dans le Name Manager la ligne suivante:
    Name: datepret21
    Value: "11/12/2013";"11/20/2013"...
    Refers to: ='71'!$B61:$b$64
    Scope: 71
    Voici les lignes de la macro: (noter que la variable (onglet) est la feuille active, soit 71

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Range("B61:B64").Select
        ActiveWorkbook.Worksheets(onglet).Names.Add Name:="datepret21", RefersToR1C1 _
            :="='71'!R61C2:R64C2"
        ActiveWorkbook.Worksheets(onglet).Names("datepret21").Comment = ""
    Jusqu'ici, tout est bon. Si je vais à la feuille 72 et j'active la macro, la variable (onglet)devient 72 (je la fais imprimer dans une cellule test), dans le Range Manager, le Scope est bien 72 mais le Refers to est toujours ='71'!$B$61:$B$64, soit les données de la page précédente. Comment puis-je avoir les données de la page active, soit ='72'!$B$61:$B64. J'espère que c'est plus clair comme ça. Merci pour les solutions

  7. #7
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 203
    Points : 14 354
    Points
    14 354
    Par défaut
    Je suis en attente de mon message #5 (13:59). Qu'est-ce qui cloche ?
    Cordialement.

    Daniel

    La plus perdue de toutes les journées est celle où l'on n'a pas ri. Chamfort

  8. #8
    Futur Membre du Club
    Homme Profil pro
    retraité
    Inscrit en
    Juin 2014
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 76
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juin 2014
    Messages : 9
    Points : 8
    Points
    8
    Par défaut
    Merci pour ton aide. J'ai essayé, comme tu peux le voir en 3 mais je n'obtiens pas la réponse désirée; peut-être que je n'emploie pas la bonne syntaxe. Lorsque tu lis mon dernier message, tu comprendras ce que j'essaie d'obtenir. Si tu as une autre manière d'obtenir le résultat escompté, je veux bien essayer. Encore une fois, merci pour ta patience. Michel

    NB: Si ceela peux t'aider à comprendre mon problème, je pourrais t'envoyer le fichier en entier

  9. #9
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 203
    Points : 14 354
    Points
    14 354
    Par défaut
    Regarde le classeur : vesuve321.xls. Exécute la macro "Test". Elle active chaque chaque feuille et affiche la somme de la plage A1:A10 de la feuille active. Cette plage est définie par le nom "Plage" :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub test()
        ActiveWorkbook.Names.Add Name:="Plage", RefersToR1C1:="=!R1C1:R10C1"
        Sheets("Feuil1").Select
        MsgBox Application.Sum(Range("Plage"))
        Sheets("Feuil2").Select
        MsgBox Application.Sum(Range("Plage"))
        Sheets("Feuil3").Select
        MsgBox Application.Sum(Range("Plage"))
    End Sub
    Cordialement.

    Daniel

    La plus perdue de toutes les journées est celle où l'on n'a pas ri. Chamfort

  10. #10
    Futur Membre du Club
    Homme Profil pro
    retraité
    Inscrit en
    Juin 2014
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 76
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juin 2014
    Messages : 9
    Points : 8
    Points
    8
    Par défaut
    Eureka! Enfin, j'ai fini par comprendre. Ton exemple m'a fait réaliser que le nom de la plage de données se trouvant sur la feuille 71, la plage de données se trouvait nécessairement sur cette même feuille. Je n'avais pas besoin de m'acharner à faire apparaître le numéro de feuille dans le "refers to". J'ai donc enlevé toutes les références au numéro de feuille dans le "refer to" étant donné que la macro inscrivait correctement ce numéro dans "scope". Et tout fonctionne proprement. Merci encore une fois pour tes conseils et surtout pour ta patience. Michel

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. création d'une base de données avec dreamweaver
    Par eolia dans le forum Dreamweaver
    Réponses: 23
    Dernier message: 22/12/2013, 21h55
  2. Création d'une base de données avec les composants " BDE "
    Par Y013S dans le forum Bases de données
    Réponses: 4
    Dernier message: 22/12/2010, 23h43
  3. recherche dans une plage de données avec filtre
    Par depi67 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 07/10/2008, 14h17
  4. Réponses: 5
    Dernier message: 06/12/2007, 22h16
  5. Création d'une base de données avec wxWidgets
    Par solp dans le forum wxWidgets
    Réponses: 2
    Dernier message: 23/08/2006, 09h25

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