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 :

Changer le numéro de ligne dans une formule via VBA pour recup données dans un classeur fermé


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Homme Profil pro
    Régisseur Spectacle
    Inscrit en
    Février 2021
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Régisseur Spectacle
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Février 2021
    Messages : 4
    Points : 2
    Points
    2
    Par défaut Changer le numéro de ligne dans une formule via VBA pour recup données dans un classeur fermé
    Bonjour à tous et merci d'avance à ce qui répondront à ma requête.

    J'explique sommairement la chose :
    Je dois allez récupérer dans un classeur fermé plusieurs valeurs dans un tableau pour les mettre dans mon classeur ouvert dans des cellules fixes (adresse sans variable). Dans le tableau ou je dois récupérer mes données la seule variable que j'ai est celle de la ligne que j'arrive à récupérer grâce à un RECHERCHEV qui fonctionne (lui !).

    J'ai tenté avec un INDEX EQUIV et lorsque le classeur source est ouvert ça marche nickel
    Code formule : Sélectionner tout - Visualiser dans une fenêtre à part
    =INDEX('H:\MonDossierPapa\MonDossierMaman\MonDossierFrangin\Programmation_Trimestrielle.xlsm'!ProgGenerale[Discipline]; EQUIV(K4;'H:\MonDossierPapa\MonDossierMaman\MonDossierFrangin\Programmation_Trimestrielle.xlsm'!ProgGenerale[Dossier];0))
    Malheureusement des que le classeur source est fermé ça me renvoi un #HREF!

    J'ai ensuite tenté d'écrire l'adresse en dur histoire de vérifier et là lorsque le classeur source est fermé ça marche :
    Code formule : Sélectionner tout - Visualiser dans une fenêtre à part
    ='H:\MonDossierPapa\MonDossierMaman\MonDossierFrangin\[Programmation_Trimestrielle.xlsm]Infos'!$B$6
    J'ai essayé moultes bidouilles pour changer le 6 à la fin de ma chaine par la variable de ligne que je stock en K16 (mon fameux RECHERCHEV qui fonctionne) mais rien n'y a fait.

    J'ai alors tenté la formule ADRESSE avec ma variable (en K16)...
    Code formule : Sélectionner tout - Visualiser dans une fenêtre à part
    =ADRESSE(K16;2;1;1;"H:\MonDossierPapa\MonDossierMaman\MonDossierFrangin\[Programmation_Trimestrielle.xlsm]Infos!")
    et ça me sort bien la chaine qui est sensée fonctionner, sauf que ça me l'imprime dans la cellule, forcément, ça ne me renvoie pas la valeur :
    Code formule : Sélectionner tout - Visualiser dans une fenêtre à part
    'H:\MonDossierPapa\MonDossierMaman\MonDossierFrangin\[Programmation_Trimestrielle.xlsm]Infos'!$B$6
    Sachant pourtant que l'INDIRECT est en général pas très copain copain avec les classeurs fermés j'ai quand même tenté et ça me sort bien le redouté #HREF!
    Code formule : Sélectionner tout - Visualiser dans une fenêtre à part
    =INDIRECT(ADRESSE(K16;2;1;1;"H:\MonDossierPapa\MonDossierMaman\MonDossierFrangin\[Programmation_Trimestrielle.xlsm]Infos!"))
    Bref y aurait-il une bidouille quelconque qui puisse me permettre de remplacer ce fichu $6 à la fin de ma formule par ma variable contenue en K16.
    Une bidouille en direct ou un vba qui va bien sachant que je dois récupérer sur mon classeur une 15aine de données différentes.
    Sachant bien entendu que je ne suis pas un exceliste professionnel mais que j'arrive malgré tout à me dépatouiller avec certaines fonctions.

    Pour finir j'ai bien regardé les tutos concernant les classeurs fermés et la gestion des indirects, ce fichier étant voué à travailler sur le serveur bien cadenassé d'une municipalité donc toute forme de connexion à du SQL, quelconque BDD ou des librairies me semble à éviter.
    Je sens qu'il y a une manip simple et logique mais là je n'y arrive plus :s
    En vous remerciant d'avance

    Romain

  2. #2
    Candidat au Club
    Homme Profil pro
    Régisseur Spectacle
    Inscrit en
    Février 2021
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Régisseur Spectacle
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Février 2021
    Messages : 4
    Points : 2
    Points
    2
    Par défaut Prems !
    Bon bah j'ai fini par trouver tout seul comme un grand !
    Tout bêtement avec Formula

    Bien que je sois pas excel programmer, pour ceux que ça intéresserait :

    Dans le module ThisWorkBook

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private Sub Workbook_Open()
     
    Dim ML As String, SCnom AS String
     
    ML = Range("K16")
    SCnom = "B" & ML
    Range("B2").Formula ="='C:MOnChemin/[MonFichier.xlsm]MaFeuille'!" & SCnom
     
    End Sub
    Je vais m'auto-payer un canon pour m'auto-remercier ce soir !!

Discussions similaires

  1. [XL-2013] VBA: Etirer une formule via VBA
    Par Judel1993 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 07/09/2017, 17h59
  2. [XL-2010] Insérer une formule via VBA
    Par pitchito dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 12/08/2016, 12h47
  3. Copier une ligne dans un classeur fermé et enregistrer sous
    Par PPN83 dans le forum Macros et VBA Excel
    Réponses: 23
    Dernier message: 18/11/2010, 00h54
  4. Rajouter les numéros de ligne dans une colone d'une requete
    Par AntiSAL dans le forum MS SQL Server
    Réponses: 7
    Dernier message: 02/11/2005, 19h07
  5. Afficher le numéro de ligne dans une requete SELECT
    Par tilb dans le forum Langage SQL
    Réponses: 4
    Dernier message: 01/09/2004, 10h20

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