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 :

VBA pour modifier les références du gestionnaire de noms


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Homme Profil pro
    retraité
    Inscrit en
    Avril 2018
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Avril 2018
    Messages : 5
    Par défaut VBA pour modifier les références du gestionnaire de noms
    Bonjour et merci par avance de votre aide.

    J'ai essayé dans un premier temps de trouver au fil du forum une aide similaire, mais en vain, donc je me formule directement cette demande :

    Situation actuelle :

    J'ai un classeur Excel comportant une douzaine de feuille, j'ai été amené à faire une copie de l'une d'entre elle
    La première feuille a pour nom : Base de données
    La nouvelle feuille a pour nom : BDD

    Il s'avère que dans le gestionnaire de noms toutes mes définitions de noms ont été enregistrées sous la forme par exemple de :
    'Base de données'! suivi des références des cellules. A l'exeption d'une vingtaine qui font références à autre feuille du classeur que je désire conservées en l'état.

    De ce fait les macros et surtout tous les liens hypertexte affectés à ces dénominations ne fonctionnent pas dans la nouvelle feuille et je dois donc modifier la dénomination par BDD. Vu que j'ai un nombre très important de noms définis (plus de mille) je souhaiterai que l'on puisse me communiquer un code VBA qui va pouvoir faire cette modification en une seule fois.

    Après un essai manuel qui fonctionne bien sur, j'ai remarqué que l'ancienne référence était précédée et terminait par un petit apostrophe tel que :
    'Base de données'!$B97:B107 ; après modification j'avais la nouvelle dénomination sous la forme : BDD!$B97:B107 (les petits apostrophes ayant disparus à l'enregistrement par Excel ?

    Je précise qu'en matière de VBA je reste assez "ignare" en la matière, d'où ma demande

    Je réitère mes remerciements pour l'aide et toutes explications
    Cordialement

  2. #2
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par Kaligula31 Voir le message
    Après un essai manuel qui fonctionne bien sur, j'ai remarqué que l'ancienne référence était précédée et terminait par un petit apostrophe tel que :
    'Base de données'!$B97:B107 ; après modification j'avais la nouvelle dénomination sous la forme : BDD!$B97:B107 (les petits apostrophes ayant disparus à l'enregistrement par Excel ?
    Les apostrophes ne sont utiles que si le nom d'onglet comporte des espaces (comme dans ton premier nom).
    BDD n'en ayant pas, ils sont inutiles (mais rien n'interdit de les mettre si tu le souhaites).

    De ce fait les macros et surtout tous les liens hypertexte affectés à ces dénominations ne fonctionnent pas dans la nouvelle feuille et je dois donc modifier la dénomination par BDD. Vu que j'ai un nombre très important de noms définis (plus de mille) je souhaiterai que l'on puisse me communiquer un code VBA qui va pouvoir faire cette modification en une seule fois.
    Faire une boucle For Each sur tous les noms de la Worksheet.
    https://msdn.microsoft.com/fr-fr/VBA...next-statement
    https://msdn.microsoft.com/fr-fr/lib.../ff197993.aspx

    Avec un test If vérifier que la partie de gauche (fonction Left() ) de l'adresse du nom de zone correspond à ton ancien nom d'onglet (Base de données).
    https://msdn.microsoft.com/fr-fr/VBA...e-object-excel
    https://msdn.microsoft.com/fr-fr/VBA...property-excel
    https://msdn.microsoft.com/fr-fr/VBA.../left-function

    Si c'est le cas, concaténer ( avec un opérateur & ) le nouveau nom d'onglet avec le reste de l'adresse du nom de zone (fonction Mid() ) et le replacer dans l'adresse du nom de zone.
    https://msdn.microsoft.com/fr-fr/VBA...s/mid-function

  3. #3
    Membre à l'essai
    Homme Profil pro
    retraité
    Inscrit en
    Avril 2018
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Avril 2018
    Messages : 5
    Par défaut Merci pour cette rapide réponse...
    1- Je me doutais un peu que c'était "l'histoire" des espaces qui affectait les apostrophes, mais j'en était loin d'être sur. Merci pour cette précision.

    2- Pour le reste je suis vraiment désolé, mais là ne maîtrisant absolument pas le langage VBA, encore moins la moindre conception dans l'ordonnance des actions à mettre en oeuvre pour arriver au résultat désiré, j'avoue être totalement perdu par rapport aux explications données.
    Juste un petit exemple comment définir que l'action "For Each" s'adresse aux éléments contenus dans le répertoire du "Gestionnaire de noms" ?
    Suis vraiment incapable de pouvoir créer un code
    Vraiment désolé mais merci encore de votre implication
    Cordialement

  4. #4
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par Kaligula31 Voir le message
    ne maîtrisant absolument pas le langage VBA, encore moins la moindre conception dans l'ordonnance des actions à mettre en oeuvre pour arriver au résultat désiré, j'avoue être totalement perdu par rapport aux explications données.
    Il ne tient qu'à toi d'y remédier.
    http://bidou.developpez.com/article/VBA/

    Juste un petit exemple comment définir que l'action "For Each" s'adresse aux éléments contenus dans le répertoire du "Gestionnaire de noms" ?
    Il y a un exemple dans le lien que je t'ai donné.
    Il faut remplacer la collection de cet exemple par la collection des noms de zones de ta feuille (le lien suivant).

    Suis vraiment incapable de pouvoir créer un code
    C'est un handicap génétique ou une simple répulsion à étudier ?

  5. #5
    Expert confirmé Avatar de BENNASR
    Homme Profil pro
    Responsable comptable & financier
    Inscrit en
    Décembre 2013
    Messages
    2 974
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Responsable comptable & financier
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 2 974
    Par défaut
    bonjour
    Aussi débutant VBA et je propose ce qui suit :
    * ouvrir ton fichier
    * démarre l'enregistreur de macro
    * allez formule / gestionnaire des noms
    * modifier l'un des référence
    * arrêter l'enregistreur
    * allez voir le code fourni
    * essayer de l'adapter et l'intégrer dans un boucle
    et en cas de difficulté revenir avec un bout de code certain les grand Monsieur de ce super site te donne un coup de pousse

    BONNE CONTINUATION

  6. #6
    Membre à l'essai
    Homme Profil pro
    retraité
    Inscrit en
    Avril 2018
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Avril 2018
    Messages : 5
    Par défaut MEHNIR !...
    Monsieur, l'Éminent Expert Sénior

    "C'est un handicap génétique ou une simple répulsion à étudier ?"

    En venant demander de l'aide je ne pensais trouver une personne aussi désobligeante quand à ma génétique et mes facultés intellectuelles !

    Toutefois étant, comme on dit, une personne de "vieille école", je vous remercie pour le temps passé mais surtout que vous avez perdu.

    Je préciserai toutefois, Monsieur l'Éminent Expert Sénior, que dans mon premier message "Je remerciais par avance pour "TOUTE EXPLICATION" et non juste des liens hypertexte qui revenaient à dire "Débrouille toi" (je reste poli je tiens à le préciser).

    J'ai, au moins en ce qui me concerne, la prétention d'avouer que je n'ai pas la "science infuse", et non pas de faire fi d'un minimum de pédagogie.

  7. #7
    Membre à l'essai
    Homme Profil pro
    retraité
    Inscrit en
    Avril 2018
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Avril 2018
    Messages : 5
    Par défaut BENNASR
    Bonjour et mille fois merci pour une réponse "Constructive", qui sans donner la solution, donne au moins un fils conducteur.

    Comme quoi, quelquefois il n'y a pas besoin d'être "Expert Éminent Sénior", pour venir en aide de façon claire et compréhensible pour l'ignare et fainéant génétique que je suis.

    Merci de votre implication
    Cordialement

  8. #8
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par Kaligula31 Voir le message
    dans mon premier message "Je remerciais par avance pour "TOUTE EXPLICATION" et non juste des liens hypertexte qui revenaient à dire "Débrouille toi" (je reste poli je tiens à le préciser).
    Ma première réponse décrit précisément le processus à suivre et je transmets des liens d'aide vers chaque éléments composant ce processus avec, pour chaque, les syntaxes, les descriptions et des exemples.
    Je ne sais pas si tu as conscience du temps que ça prend d'aller chercher des liens vers l'aide de chaque élément pour te les transmettre.
    Si tu n'appelles pas ça des "explications", je ne vois pas de quoi il peut s'agir.

    Maintenant, si, pour toi, des "explications" c'est te pondre l'intégralité du code, perso je n'appelle pas ça une "explication", j'appelle ça faire ton boulot à ta place.
    Ce forum a pour vocation de permettre d'apprendre et de progresser, pas de fournir une main d'oeuvre gratuite pour ceux qui ne souhaitent pas se former.

    Bonne chance

Discussions similaires

  1. Réponses: 8
    Dernier message: 29/06/2006, 15h37
  2. Réponses: 4
    Dernier message: 05/01/2006, 09h01
  3. [MySQL] Script pour modifier les caracteres speciaux dans la bdd
    Par isa150183 dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 15/09/2005, 13h07
  4. Je ne trouve pas la requete pour modifier les entrées...
    Par guttts dans le forum Langage SQL
    Réponses: 7
    Dernier message: 24/08/2005, 19h17
  5. [VBA-E]modifier les attributs d'un commentaire dans une cellule
    Par Olivier vb dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 15/03/2004, 10h26

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