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 :

Fonction INDEX + EQUIV sous VBA [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Octobre 2014
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2014
    Messages : 32
    Points : 11
    Points
    11
    Par défaut Fonction INDEX + EQUIV sous VBA
    Bonjour à tous,

    J'ai besoin d'utiliser les formules excel INDEX et EQUIV dans une macro, simplement je ne sais pas comment m'y prendre. Ma base de travail se présente comme suit : j'ai un dossier nommé "Suivi des temps Maintenance" dans lequel j'ai un classeur "Base de Données", un classeur "ClasseurSaisie", et un classeur "Matrice Frais (Km+MO)". Le classeur de saisie est munie d'une macro qui a été développée par des membres du forum CCM et des membres de ce forum Développez (que je remercie grandement). J'ai besoin de rajouter un code qui permette de faire des calculs en récupérant des données dans le classeur "Matrice Frais (Km+MO). Dans les colonnes R - S - T - U - V - W du classeur saisie, j'ai écrit les formules excel qu'il faudrait pouvoir retranscrire sous VBA.

    Je vous met l'ensemble du dossier à disposition (avec les 3 classeurs inclus), ça sera surement plus simple à comprendre qu'une longue explication.

    Merci pour votre aide
    Fichiers attachés Fichiers attachés

  2. #2
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 617
    Points : 5 912
    Points
    5 912
    Par défaut
    Bonjour,

    Sélectionne la cellule avec une formule et mets une petite macro avec seulement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MsgBox Activecell.Formula
    Ça te retournera la formule que tu pourras utiliser avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("mon range").Formula = "......"
    Le range peut être une plage si nécessaire.
    Il suffit de faire attention aux signes de $ à placer aux bons endroits lorsque nécessaire.
    MPi²

  3. #3
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Octobre 2014
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2014
    Messages : 32
    Points : 11
    Points
    11
    Par défaut
    Merci pour cette astuce Parmi.

    J'ai cependant une petite question supplémentaire : y a-t-il un moyen de copier/coller le contenu du MsgBox (la formule est très longue ...) ?

  4. #4
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 677
    Points
    18 677
    Par défaut




    Bonjour,

    utiliser alors Debug.Print et copier la formule depuis la fenêtre Exécution



    _____________________________________________________________________________________________________
    Je suis Charlie, Bardo, Sousse
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

  5. #5
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Octobre 2014
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2014
    Messages : 32
    Points : 11
    Points
    11
    Par défaut
    Bonjour Marc-L,

    J'ai remplacé MsgBox par Debug.Print comme vous me le suggérez, par contre je ne comprend pas la deuxième étape (je ne suis pas très callée en VBA). Je suis allée dans la fenetre Execution mais que dois je faire ensuite ?

  6. #6
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 617
    Points : 5 912
    Points
    5 912
    Par défaut
    Tape Ctrl-G pour faire apparaître la fenêtre Exécution.
    MPi²

  7. #7
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 677
    Points
    18 677
    Par défaut





    Après avoir exécuté le code, la formule de la cellule active apparait dans cette fenêtre …

    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

  8. #8
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Octobre 2014
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2014
    Messages : 32
    Points : 11
    Points
    11
    Par défaut
    Génial Merci beaucoup !

    Grace à votre aide je sais maintenant comment récuperer la formule sous VBA, je voudrais maintenant pouvoir intégrer la formule à la macro de mon userform. La formule doit s'appliquer à la colonne R.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    Private Sub CommandButton1_Click()
    Dim DerLig As Integer
    If TextBox2 = "" Then
        MsgBox "Merci de remplir le champ Déscription"
        Exit Sub
    End If
    With Worksheets("Saisie")
        If Ligne_Modif = 0 Then
            DerLig = .Range("B" & Rows.Count).End(xlUp).Row + 1
        Else
            DerLig = Ligne_Modif
        End If
        .Range("C" & DerLig).Value = ComboBox1.Value
        .Range("D" & DerLig).Value = ComboBox2.Value
        .Range("E" & DerLig).Value = ComboBox3.Value
        .Range("F" & DerLig).Value = ComboBox4.Value
        .Range("B" & DerLig).Value = ComboBox5.Value
        .Range("G" & DerLig).Value = TextBox1
        .Range("G" & DerLig).NumberFormat = "dd/mm/yyyy"
        .Range("H" & DerLig).Value = TextBox2.Value
        .Range("I" & DerLig).Value = TextBox4.Value
        .Range("J" & DerLig).Value = TextBox5.Value
        .Range("K" & DerLig).Value = TextBox3.Value
        .Range("L" & DerLig) = semaine(CDate(TextBox1))
        .Range("M" & DerLig) = Format(CDate(TextBox1), "mmmm")
        .Range("N" & DerLig) = Year(CDate(TextBox1))
        .Range("O" & DerLig).Value = OptionButton1.Value
        .Range("P" & DerLig).Value = ComboBox6.Value
        .Range("Q" & DerLig).Value = ComboBox7.Value
        .Range("R" & DerLig).Formula = IF(O:O=TRUE,(INDEX('\\BRUTUS\Bureautique\AssistantGestion\BETON\CDG FVMB VMBS\Florence GASCON\Essai VBA MAppy\Suivi des temps Maintenance - Copie\[Matrice Frais (Km + MO).xlsm]Matrice Distance'!$A:$BZ,MATCH($C:$C,'\\BRUTUS\Bureautique\AssistantGestion\BETON\CDG FVMB VMBS\Florence GASCON\Essai VBA MAppy\Suivi des temps Maintenance - Copie\[Matrice Frais (Km + MO).xlsm]Matrice Distance'!$A:$A,0),MATCH($D:$D,'\\BRUTUS\Bureautique\AssistantGestion\BETON\CDG FVMB VMBS\Florence GASCON\Essai VBA MAppy\Suivi des temps Maintenance - Copie\[Matrice Frais (Km + MO).xlsm]Matrice Distance'!$1:$1,0)))*2,INDEX('\\BRUTUS\Bureautique\AssistantGestion\BETON\CDG FVMB VMBS\Florence GASCON\Essai VBA MAppy\Suivi des temps Maintenance - Copie\[Matrice Frais (Km + MO).xlsm]Matrice Distance'!$A:$BZ,MATCH($C:$C,'\\BRUTUS\Bureautique\AssistantGestion\BETON\CDG FVMB VMBS\Florence GASCON\Essai VBA MAppy\Suivi des temps Maintenance - Copie\[Matrice Frais (Km + MO).xlsm]Matrice Distance'!$A:$A,0),MATCH($D:$D,'\\BRUTUS\Bureautique\Assista
    ntGestion\BETON\CDG FVMB VMBS\Florence GASCON\Essai VBA MAppy\Suivi des temps Maintenance - Copie\[Matrice Frais (Km + MO).xlsm]Matrice Distance'!$1:$1,0)))
    End With
     
    Unload UserForm1
     
    End Sub
    Evidemment je ne suis pas très douée donc cela ne fonctionne pas ... De plus dans la formule, je voudrais que le chemin vers le fichier "Matrice Frais (Km + MO)" soit identifié comme Thisworkbookpath, car le dossier peut être amené changer d'emplacement.

    Quelqu'un saurait il m'aidé ?

    Merci

  9. #9
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 773
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 773
    Points : 28 634
    Points
    28 634
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    La lecture de ce billet Ecrire une formule dans Excel à l'aide d'une procédure VBA et la suite éventuellement pour les formules plus complexes Ecrire une formule dans Excel à l'aide d'une procédure VBA (Part 2), t'apportera peut-être une réponse.
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  10. #10
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Octobre 2014
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2014
    Messages : 32
    Points : 11
    Points
    11
    Par défaut
    Merci Philippe, cela m'éclaire un peu plus! Cependant je suis toujours bloquée pour transformer le chemin d'accès au classeur "Matrice Frais (Km + MO)" en Thiswoorkbook.Path et l'intégrer dans la formule ... Si quelqu'un a une solution ?

    Merci beauucoup

  11. #11
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 773
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 773
    Points : 28 634
    Points
    28 634
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Cependant je suis toujours bloquée pour transformer le chemin d'accès au classeur "Matrice Frais (Km + MO)" en Thiswoorkbook.Path et l'intégrer dans la formule ...
    Si tu as bien lu le deuxième billet, la technique à utiliser est expliquée. Prends le temps de faire des tests.
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  12. #12
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Octobre 2014
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2014
    Messages : 32
    Points : 11
    Points
    11
    Par défaut
    Je suis désolée mais je ne vois pas, les exemples qui sont développés dans le billet sont uniquement sur des formules intégrant des éléments qui se trouve dans le même workbook et non pas dans un autre classeur faisant parti du même dossier. Pouvez vous m'éclairer ?

  13. #13
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 773
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 773
    Points : 28 634
    Points
    28 634
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    La propriété FullName de l'objet Workbook te donne le nom et chemin complet du classeur. Que ce soit ThisWorkbook ou Workbooks("LeClsseur")
    Si c'est un objet Range que tu utilises la propriété Address avec True comme valeur de l'argument External te donnera le chemin complet du Range.
    Exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Sub Test()
     Dim rng As Range, wkb As Workbook
     Set wkb = Workbooks("FactDataBase.xls")
     Set rng = wkb.Worksheets("clients").Range("A1").CurrentRegion
     Debug.Print wkb.FullName
     Debug.Print rng.Address(external:=True)
    End Sub
    Ces deux propriétés renvoyant une chaîne de caractères, il te suffit de suivre les exemples que j'ai mis sur le billet pour faire un Replace de la balise prévue pour cette adresse par la chaîne de caractères.
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  14. #14
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Octobre 2014
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2014
    Messages : 32
    Points : 11
    Points
    11
    Par défaut
    Merci pour votre aide Philippe,

    J'ai essayé votre code mais un message d'erreur suivant survient : L'indice n'appartient pas à la sélection. Le débogage me surligne la ligne de code Set wkb = ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Sub Chemin()
     Dim rng As Range, wkb As Workbook
     Set wkb = Workbooks("Matrice Frais (Km + MO).xlsm")
     Set rng = wkb.Worksheets("Matrice Distance").Range("A:A").CurrentRegion
     Debug.Print wkb.FullName
     Debug.Print rng.Address(external:=True)
    End Sub
    je ne comprends pas pourquoi ... ?

  15. #15
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 773
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 773
    Points : 28 634
    Points
    28 634
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Pourquoi à la ligne 4 de ta procédure fais-tu référence à la colonne A et pas à la cellule A1 ?
    Le message d"erreur renvoyé signifie que le classeur ou la feuille n'existe pas (pour le classeur ne serait pas ouvert)
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  16. #16
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Octobre 2014
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2014
    Messages : 32
    Points : 11
    Points
    11
    Par défaut
    J'ai résolu le pb, j'avais fait une faute de frappe. J'arrive bien à récupérer le chemin du classeur. Simplement je n'arrive pas à intégrer ma formule dans le code de mon userform. Lorsque je copie/colle la formule qui s'affiche dans ma fenetre d'execution, tout s'affiche en rouge et je ne peux rien modifier.
    J'ai essayer de reprendre votre ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Const myFormula As String = "=...."
    mais je n'arrive pas à y intégrer ma formule suivante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    =IF(O:O=TRUE,(INDEX('\\BRUTUS\Bureautique\AssistantGestion\BETON\CDG FVMB VMBS\Florence GASCON\Essai VBA MAppy\Suivi des temps Maintenance - Copie\[Matrice Frais (Km + MO).xlsm]Matrice Distance'!$A:$BZ,MATCH($C:$C,'\\BRUTUS\Bureautique\AssistantGestion\BETON\CDG FVMB VMBS\Florence GASCON\Essai VBA MAppy\Suivi des temps Maintenance - Copie\[Matrice Frais (Km + MO).xlsm]Matrice Distance'!$A:$A,0),MATCH($D:$D,'\\BRUTUS\Bureautique\AssistantGestion\BETON\CDG FVMB VMBS\Florence GASCON\Essai VBA MAppy\Suivi des temps Maintenance - Copie\[Matrice Frais (Km + MO).xlsm]Matrice Distance'!$1:$1,0)))*2,INDEX('\\BRUTUS\Bureautique\AssistantGestion\BETON\CDG FVMB VMBS\Florence GASCON\Essai VBA MAppy\Suivi des temps Maintenance - Copie\[Matrice Frais (Km + MO).xlsm]Matrice Distance'!$A:$BZ,MATCH($C:$C,'\\BRUTUS\Bureautique\AssistantGestion\BETON\CDG FVMB VMBS\Florence GASCON\Essai VBA MAppy\Suivi des temps Maintenance - Copie\[Matrice Frais (Km + MO).xlsm]Matrice Distance'!$A:$A,0),MATCH($D:$D,'\\BRUTUS\Bureautique\Assista
    ntGestion\BETON\CDG FVMB VMBS\Florence GASCON\Essai VBA MAppy\Suivi des temps Maintenance - Copie\[Matrice Frais (Km + MO).xlsm]Matrice Distance'!$1:$1,0)))
    Je ne m'en sors pas...

  17. #17
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 617
    Points : 5 912
    Points
    5 912
    Par défaut
    La chaîne est trop longue pour VBA.

    Regarde comment tu pourrais faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
        Dim Chemin As String
        Dim MyFormula As String
     
        Chemin = "\\BRUTUS\Bureautique\AssistantGestion\BETON\CDG FVMB VMBS\Florence GASCON\Essai VBA MAppy\Suivi des temps Maintenance - Copie\[Matrice Frais (Km + MO).xlsm]Matrice Distance"
        MyFormula = "=IF(O:O=TRUE,(INDEX('" & Chemin & "'!$A:$BZ,MATCH($C:$C,'" & Chemin & "'!$A:$A,0),MATCH($D:$D,'" & Chemin & "'!$1:$1,0)))*2,INDEX('" & Chemin & "'!$A:$BZ,MATCH($C:$C,'" & Chemin & "'!$A:$A,0),MATCH($D:$D,'" & Chemin & "'!$1:$1,0)))"
    MPi²

  18. #18
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 773
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 773
    Points : 28 634
    Points
    28 634
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Comme expliqué dans mon deuxième billet, il faut prévoir des balises dans la chaîne de caractères de cette formule pour ensuite effectuer à l'aide de la fonction Replace un remplacement de cette balise par l'adresse de la plage avec ou sans le chemin.
    Pour bien comprendre, effectue des tests en dehors de ta procédure en utilisant le débogage au pas à pas (Touche F8).

    A titre de curiosité, que testes-tu dans IF(O:O=TRUE
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  19. #19
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Octobre 2014
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2014
    Messages : 32
    Points : 11
    Points
    11
    Par défaut
    Si le OptionButton1 de mon userform est coché, alors la valeur "VRAI" sera renseignée dans la colonne O, et si cette valeur VRAI est renseigné alors je lance un calcul.

  20. #20
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Octobre 2014
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2014
    Messages : 32
    Points : 11
    Points
    11
    Par défaut
    Citation Envoyé par parmi Voir le message
    La chaîne est trop longue pour VBA.

    Regarde comment tu pourrais faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
        Dim Chemin As String
        Dim MyFormula As String
     
        Chemin = "\\BRUTUS\Bureautique\AssistantGestion\BETON\CDG FVMB VMBS\Florence GASCON\Essai VBA MAppy\Suivi des temps Maintenance - Copie\[Matrice Frais (Km + MO).xlsm]Matrice Distance"
        MyFormula = "=IF(O:O=TRUE,(INDEX('" & Chemin & "'!$A:$BZ,MATCH($C:$C,'" & Chemin & "'!$A:$A,0),MATCH($D:$D,'" & Chemin & "'!$1:$1,0)))*2,INDEX('" & Chemin & "'!$A:$BZ,MATCH($C:$C,'" & Chemin & "'!$A:$A,0),MATCH($D:$D,'" & Chemin & "'!$1:$1,0)))"
    Bonjour Parmi,

    Merci pour ta réponse.
    J'ai repris ton code en rajoutant des éléments.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub Calcul1()
     
        Dim Chemin As String
        Dim MyFormula As String
        Dim Source As String
     
        Source = ThisWorkbook.Path
        Chemin = Source & "\[Matrice Frais (Km + MO).xlsm]Matrice Distance"
        MyFormula = "=IF(O:O=TRUE,(INDEX('" & Chemin & "'!$A:$BZ,MATCH($C:$C,'" & Chemin & "'!$A:$A,0),MATCH($D:$D,'" & Chemin & "'!$1:$1,0)))*2,INDEX('" & Chemin & "'!$A:$BZ,MATCH($C:$C,'" & Chemin & "'!$A:$A,0),MATCH($D:$D,'" & Chemin & "'!$1:$1,0)))"
        Range("R") = MyFormula
    End Sub
    Ce code fonctionne mais il a fini par faire planter excel... Je pense qu'il faudrait peut être modifier le code pour que la formule ne s'applique que lorsque la colonne O est non vide. De plus je voudrais que la formule ne s'applique qu'à partir de la cellule R2 puis sur toute la colonne R.

    Aurais tu une idée pour m'aider ? merci beaucoup

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Index - Equiv en VBA
    Par JudRos dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 18/10/2011, 08h53
  2. [XL-2003] Fonction Index Equiv
    Par jm6570 dans le forum Excel
    Réponses: 3
    Dernier message: 16/02/2011, 10h44
  3. [DeskI XiR2] Equivalent rechercheV ou index/equiv sous BO
    Par courti01 dans le forum Débuter
    Réponses: 2
    Dernier message: 25/01/2011, 16h23
  4. [XL-2003] Problème fonction recherche / remplacer sous VBA
    Par DVano dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 01/04/2010, 12h13
  5. fonction mois.decaler sous VBA
    Par franckh99 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 28/11/2007, 10h17

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