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

Excel Discussion :

Connaitre dans quels onglets se trouve une chaine


Sujet :

Excel

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mars 2013
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2013
    Messages : 4
    Points : 1
    Points
    1
    Par défaut Connaitre dans quels onglets se trouve une chaine
    Bonjour,

    En préambule, c'est la 1ère fois que je poste mais je vous lis régulièrement plus spécifiquement sur la section VBA.
    J'apprécie particulièrement la qualité du site et le foisonnement d'idées qui y circule.

    Ma demande d'assistance concerne une formule (hors VBA) qui me permettrait d'identifier l'onglet (pour simplifier le 1er trouvé) dans lequel se trouve une chaîne de caractères.
    Cela me servira à intégrer le nom de l'onglet (ou le rang) dans un ensemble de formules qui sont déjà prêtes.
    Tout ceci dans un même fichier excel.

    Voici le détail :
    Dans un onglet "param" se trouve notamment un tableau avec une colonne "Critère" et la colonne suivante "Nom de l'onglet" issu de la recherche.....
    je peux avoir différents onglets (peu ou beaucoup) dans lesquels les chaines à trouver sont en théorie présentes dans l'entête habituellement.
    Je ne sais pas par avance combien d'onglets sont utilisés, cela varie selon le dossier à traiter.

    je joins une image en exemple très théorique (montage dans une seule feuille).

    Nom : Rech NOM_Onglet.png
Affichages : 284
Taille : 34,0 Ko

    je vous remercie de vos conseils et reste disponible pour toute clarification.

    Cdt

  2. #2
    Expert éminent sénior 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
    Points : 32 866
    Points
    32 866
    Par défaut
    Je peux me tromper mais je ne pense pas que ce que tu demandes soit possible car aucune fonction Excel ne permet de faire de recherche sur une zone incluant plusieurs onglets.

    Ou alors, il faudrait mettre bout à bout plusieurs fonction de recherche (une par onglet) avec pour chacune une fonction SI renvoyant le nom de l'onglet si la recherche ne renvoie pas une erreur.
    Mais s'il y a beaucoup d'onglets, ça risque d'être assez fastidieux, surtout si te ne connais pas le nombre d'onglets.

    Par contre, il est assez simple de faire une fonction VBA qui fasse ça, avec un Find dans une boucle For Each sur la collection Worksheets (attention de retirer du test la feuille dans laquelle se trouve la formule elle-même).
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  3. #3
    Membre éprouvé
    Homme Profil pro
    Contrôleur de gestion en activité
    Inscrit en
    Juillet 2012
    Messages
    544
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Contrôleur de gestion en activité
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2012
    Messages : 544
    Points : 935
    Points
    935
    Par défaut
    Bonjour,

    Il faudrait nommer les plages, ensuite essayez de taper la touche "F3" et "coller une liste".

    ou alors, passez par le gestionnaire de noms, mais je n'ai pas trouvé comment exporter les données.

    Cdlt,

    SM

  4. #4
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mars 2013
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2013
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    merci @Menhir et @Supermichou d'avoir pris le temps de me lire et de me répondre.

    j'imaginais bien que ça ne serait pas simple avec des formules excel et que Vba est la solution.

    Mais j'essaie pour ma part d'approcher la solution bien que je coince, je vais sans doute changer de point de vue.
    je ne me manquerais pas de vous informer si toutefois je trouve la lumière.

    Bien Cordialement

    Ipa

  5. #5
    Expert éminent sénior

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 414
    Points : 16 256
    Points
    16 256
    Par défaut
    Bonjour

    Manuellement on peut sélectionner tout ou partie des onglets et utiliser la recherche (CTRL F)) : Exxel se positionnera sur la 1ère occurence trouvée dans un des onglets.
    Ceci est reproductible en VBA...
    Chris
    PowerQuery existe depuis plus de 13 ans, est totalement intégré à Excel 2016 &+. Utilisez-le !

    Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson.
    Confucius

    ----------------------------------------------------------------------------------------------
    En cas de résolution, n'hésitez pas cliquer sur c'est toujours apprécié...

  6. #6
    Membre chevronné
    Avatar de NVCfrm
    Homme Profil pro
    Administrateur Système/Réseaux - Developpeur - Consultant
    Inscrit en
    Décembre 2012
    Messages
    1 036
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Administrateur Système/Réseaux - Developpeur - Consultant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Décembre 2012
    Messages : 1 036
    Points : 1 917
    Points
    1 917
    Billets dans le blog
    5
    Par défaut
    Bonjour,
    je ne suis pas sûr d'avoir bien compris :

    D'après l'image tu cherches une formule qui réalise les noms de feuille correspondant à une liste de motifs.

    Le mots cherché peut se trouver dans la première ligne de chaque feuille.

    Sans une liste des noms de feuille quelque part comme paramètre, ce n'est pas possible.
    Ousmane


    Quand on tombe dans l'eau, la pluie ne fait plus peur.

  7. #7
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mars 2013
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2013
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par NVCfrm Voir le message
    Bonjour,
    je ne suis pas sûr d'avoir bien compris :

    D'après l'image tu cherches une formule qui réalise les noms de feuille correspondant à une liste de motifs.

    Le mots cherché peut se trouver dans la première ligne de chaque feuille.

    Sans une liste des noms de feuille quelque part comme paramètre, ce n'est pas possible.
    Bonjour,

    je reformule ...
    je cherche à analyser les entêtes (Ligne 1) des feuilles du classeur pour pouvoir ensuite les répertorier. Ce n'est pas limitatif, je pourrais aussi avoir besoin d'analyser d'autres lignes ou colonnes.

    j'obtiendrais ainsi un tableau à 2 colonnes : Libellé_entête/nom_feuille.

    je pourrais notamment ensuite connaitre l'adresse de chaque Libelle_entete ( ex L1).... et puis après je me débrouille.

    j'ai déjà répertorié les feuilles du classeur, ça c'est simple.

    tout cela sans VBA...

    merci de votre intêret

    Cdt

    Ipa

  8. #8
    Expert éminent sénior

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 414
    Points : 16 256
    Points
    16 256
    Par défaut
    Bonjour

    Si les feuilles contiennent des tableaux structurés ce doit être possible par formule sinon VBA
    Chris
    PowerQuery existe depuis plus de 13 ans, est totalement intégré à Excel 2016 &+. Utilisez-le !

    Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson.
    Confucius

    ----------------------------------------------------------------------------------------------
    En cas de résolution, n'hésitez pas cliquer sur c'est toujours apprécié...

  9. #9
    Membre chevronné
    Avatar de NVCfrm
    Homme Profil pro
    Administrateur Système/Réseaux - Developpeur - Consultant
    Inscrit en
    Décembre 2012
    Messages
    1 036
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Administrateur Système/Réseaux - Developpeur - Consultant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Décembre 2012
    Messages : 1 036
    Points : 1 917
    Points
    1 917
    Billets dans le blog
    5
    Par défaut
    Bonjour a tous.


    Mais si dans ta conception, tu connais déjà la ligne et le nombre de colonnes à matcher, en ayant déjà la liste des feuilles à disposition, c'est un jeu d'enfant même avec une formule.

    Pour te guider, cette formule utilise un argument liste_tab supposée renvoyée la liste des noms de feuille connue.
    Elle ne tient pas compte des contraintes que tu as. Juste pour une base. C'est à toi de te débrouiller pour les exigences suivantes.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =EQUIV("Target";INDEX(INDIRECT(ADRESSE(1;1;;;liste_tab)&":"&ADRESSE(1;4));1;;{1.2.3.4});0)
    Ici tu obtiens la liste des positions de Target dans la première ligne de 4 colonnes de chaque feuille dont le nom se trouve dans list_tab.
    Tu pourras l'adapter et lui donner un un nom dans le gestionnaire de noms. Ce nom pourra être un argument pour le reste de tes formules.
    Ousmane


    Quand on tombe dans l'eau, la pluie ne fait plus peur.

  10. #10
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mars 2013
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2013
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par NVCfrm Voir le message
    Bonjour a tous.


    Mais si dans ta conception, tu connais déjà la ligne et le nombre de colonnes à matcher, en ayant déjà la liste des feuilles à disposition, c'est un jeu d'enfant même avec une formule.

    Pour te guider, cette formule utilise un argument liste_tab supposée renvoyée la liste des noms de feuille connue.
    Elle ne tient pas compte des contraintes que tu as. Juste pour une base. C'est à toi de te débrouiller pour les exigences suivantes.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =EQUIV("Target";INDEX(INDIRECT(ADRESSE(1;1;;;liste_tab)&":"&ADRESSE(1;4));1;;{1.2.3.4});0)
    Ici tu obtiens la liste des positions de Target dans la première ligne de 4 colonnes de chaque feuille dont le nom se trouve dans list_tab.
    Tu pourras l'adapter et lui donner un un nom dans le gestionnaire de noms. Ce nom pourra être un argument pour le reste de tes formules.
    Bnojour,

    merci @NVCfrm
    Je vais creuser cette formule.

    En revanche le nombre de colonnes n'est pas connu d'avance, 4 je sais pas d'où ça vient, mais si en plus j'ai une formule qui me permet de savoir où m'arrêter ça serait mieux.
    Bref je dois être capable parmi une liste d'arguments (connus) de matcher la feuille dans laquelle ils se trouvent.

    Ensuite c'est un jeu d'enfant, mais j'y suis pas.

    Cdt

    Ipa

  11. #11
    Membre chevronné
    Avatar de NVCfrm
    Homme Profil pro
    Administrateur Système/Réseaux - Developpeur - Consultant
    Inscrit en
    Décembre 2012
    Messages
    1 036
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Administrateur Système/Réseaux - Developpeur - Consultant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Décembre 2012
    Messages : 1 036
    Points : 1 917
    Points
    1 917
    Billets dans le blog
    5
    Par défaut
    Retrouver la position de la première cellule vide de ta ligne d'en tête ne doit pas être difficile avec un < MAX SI TabCells = non vide ; numéro colonne > imbriqué au bon endroit. Le reste est une question d'arithmétique.
    Et puis zut, les paramètres, c'est à toi de te les fournir en les créant par quel n'importe moyen.
    Ousmane


    Quand on tombe dans l'eau, la pluie ne fait plus peur.

Discussions similaires

  1. le nombre de fois que l'on trouve une chaine dans le formulaire
    Par mioke dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 06/08/2009, 17h05
  2. [2.1.1] Dans quel jar se trouve FORenderOption
    Par oneigloo dans le forum BIRT
    Réponses: 10
    Dernier message: 17/07/2007, 17h45
  3. comment connaitre dans quel fichier .py est définie une fonction
    Par moon93 dans le forum Général Python
    Réponses: 4
    Dernier message: 18/06/2007, 22h21
  4. Dans quel package se trouve les fonctions C ??
    Par red210 dans le forum Linux
    Réponses: 9
    Dernier message: 18/12/2005, 20h16
  5. [TStringField] inserer dans un champs NOT NULL une chaine vi
    Par kase74 dans le forum Bases de données
    Réponses: 2
    Dernier message: 16/09/2005, 14h48

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