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 :

Erreur dans Code Index Equiv R1C1


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2021
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2021
    Messages : 9
    Par défaut Erreur dans Code Index Equiv R1C1
    Bonsoir,

    J'ai une erreur de syntaxe dans mon code et je n'arrive pas à la trouver.

    ----------------

    Initialement, si le tableau est statique, j'ai ça, et ça marche très bien :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "=INDEX('XXXX'!R2C2:R10C10,MATCH('YYYY'!RC2,'XXXX'!R2C1:R10C1,0),MATCH('YYYY'!RC3,'XXXX'!R1C2:R1C10,0))"
    Mais si je veux changer le 10 par un nombre dynamique, ça bloque.

    Ci-dessous le code.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Dim DerLig1, DerLig2 As Long
    
    DerLig1 = Worksheets("XXXX").Range("A" & Rows.Count).End(xlUp).Row
    DerLig2 = Worksheets("YYYY").Range("B" & Rows.Count).End(xlUp).Row
    
    
    With Sheets("YYYY").Range(Cells(2, 4), Cells(DerLig2, 4)) 'La formule s'applique de D2 à Dmax sur la feuille YYYY
    .FormulaR1C1 = "=INDEX('XXXX'!R2C2:R" & DerLig1 & "C"& DerLig1 ",MATCH('YYYY'!RC2,'XXXX'!R2C1:R"&Derlig1&"C1,0),MATCH('YYYY'!RC3,'XXXX'!R1C2:R1C"&DerLig1",0))"
    End With
    Sur XXXX le tableau est forcément carré d'où DerLig1 utilisé pour le nombre de lignes et de colonnes.

    Si nécessaire je mettrai un fichier, mais vu qu'il s'agit d'un problème de syntaxe...

    Merci beaucoup

  2. #2
    Expert confirmé
    Homme Profil pro
    Electrotechnicien
    Inscrit en
    Juillet 2016
    Messages
    3 241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Electrotechnicien

    Informations forums :
    Inscription : Juillet 2016
    Messages : 3 241
    Par défaut
    Bonjour,

    .FormulaR1C1 = "=INDEX('XXXX'!R2C2:R" & DerLig1 & "C"& DerLig1 ",MATCH('YYYY'!RC2,'XXXX'!R2C1:R"&Derlig1&"C1,0),MATCH('YYYY'!RC3,'XXXX'!R1C2:R1C"&DerLig1",0))"
    il manque des "&" après "Derlig1"

    Si la formule est sur la feuille "YYYY", on peut supprimer "YYYY" dans la formule.

    La formule corrigée, mais non testée:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .FormulaR1C1 = "=INDEX('XXXX'!R2C2:R" & DerLig1 & "C" & DerLig1 & ",MATCH(RC2,'XXXX'!R2C1:R" & DerLig1 & "C1,0),MATCH(RC3,'XXXX'!R1C2:R1C" & DerLig1 & ",0))"
    Cdlt

  3. #3
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2021
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2021
    Messages : 9
    Par défaut
    Arturo83, une fois de plus merci. A part vous, personne d'autre ne semble se prononcer en VBA ici on dirait. 2 sujets et à chaque fois c'est vous qui m'aidez! Merci

    Bref, après ajout des &, il s'avère que le problème était aussi lié aux espaces.

    Je l'avais écrit comme ça, et il y a avait un problème d'instruction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "=INDEX('XXXX'!R2C2:R" & DerLig1& "C" & DerLig1& ",MATCH(RC2,'XXXX'!R2C1:R" & DerLig1& "C1,0),MATCH(RC3,'XXXX'!R1C2:R1C" & DerLig1& ",0))"
    En fait, il fallait écrire (ce que vous aviez fait) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "=INDEX('XXXX'!R2C2:R" & DerLig1 & "C" & DerLig1 & ",MATCH(RC2,'XXXX'!R2C1:R" & DerLig1 & "C1,0),MATCH(RC3,'XXXX'!R1C2:R1C" & DerLig1 & ",0))"
    J'ignorais ce qui pouvait déranger le logiciel. En écrivant, la réflexion m'est venue... En écrivant DerLig1&, cela sous-entend que ma variable s'appelle DerLig1&, et non DerLig1... Bête, mais bon, ça ne m'a pas sauté directement aux yeux.


    Merci beaucoup.

  4. #4
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2021
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2021
    Messages : 9
    Par défaut
    Dernière petite question :

    J'ai une fonction IF qui va contenir cette fonction INDEX EQUIV.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .FormulaR1C1 = "=IF(INDEX('XXXX'!R2C2:R" & DerLig1 & "C" & DerLig1 & ",MATCH(RC2,'XXXX'!R2C1:R" & DerLig1 & "C1,0),MATCH(RC3,'XXXX'!R1C2:R1C" & DerLig1 & ",0))=0, ""Blablabla"", INDEX('XXXX'!R2C2:R" & DerLig1 & "C" & DerLig1 & ",MATCH(RC2,'XXXX'!R2C1:R" & DerLig1 & "C1,0),MATCH(RC3,'XXXX'!R1C2:R1C" & DerLig1 & ",0)))".
    Y a t il possibilité de renommer cet index equiv, en le définissant avant, de sorte à me retrouver avec qqch du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .FormulaR1C1 = "=IF(FORMULE=0, ""Blablabla"", FORMULE)"?
    C'est plus digeste en lecture même si ça ne change effectivement rien à l'exécution de la procédure.

    Merci

  5. #5
    Expert confirmé
    Homme Profil pro
    Electrotechnicien
    Inscrit en
    Juillet 2016
    Messages
    3 241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Electrotechnicien

    Informations forums :
    Inscription : Juillet 2016
    Messages : 3 241
    Par défaut
    Bonjour,

    Essayez ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Formule_1 = "INDEX('XXXX'!R2C2:R" & DerLig1 & "C" & DerLig1 & ",MATCH(RC2,'XXXX'!R2C1:R" & DerLig1 & "C1,0),MATCH(RC3,'XXXX'!R1C2:R1C" & DerLig1 & ",0))"
    Formule_2 = "INDEX('XXXX'!R2C2:R" & DerLig1 & "C" & DerLig1 & ",MATCH(RC2,'XXXX'!R2C1:R" & DerLig1 & "C1,0),MATCH(RC3,'XXXX'!R1C2:R1C" & DerLig1 & ",0))"
    With Sheets("YYYY").Range(Cells(2, 4), Cells(DerLig2, 4))
        .FormulaR1C1 = "=IFERROR(IF(" & Formule_1 & "=0, ""Blablabla"", " & Formule_2 & "),"""")"
    End With
    Cdlt

  6. #6
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2021
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2021
    Messages : 9
    Par défaut
    Niquel merci BEAUCOUP

    Bon j'ai fait différemment. Je pense que je m'étais mal exprimé.

    En gros comme formule_1 = formule_2, il me fallait juste ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Formule_1 = "INDEX('XXXX'!R2C2:R" & DerLig1 & "C" & DerLig1 & ",MATCH(RC2,'XXXX'!R2C1:R" & DerLig1 & "C1,0),MATCH(RC3,'XXXX'!R1C2:R1C" & DerLig1 & ",0))"
    With Sheets("YYYY").Range(Cells(2, 4), Cells(DerLig2, 4))
        .FormulaR1C1 = "=IF(" & Formule_1 & "=0, ""Blablabla"", " & Formule_1 & ")"
    End With
    Ce qui est fou c'est que Formule_1 arrive comme ça comme un cheveu sur la soupe. VBA traite ça comme une variable ou juste comme un texte raccourci?

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

Discussions similaires

  1. erreur dans code vba
    Par Renardo dans le forum IHM
    Réponses: 2
    Dernier message: 15/12/2008, 15h35
  2. [SQL] Erreur dans code PHP
    Par Mans91 dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 27/06/2007, 10h08
  3. erreur dans code: écrir dans un fichier
    Par wiss20000 dans le forum Entrée/Sortie
    Réponses: 2
    Dernier message: 30/03/2007, 09h49
  4. [MySQL] Erreur dans code php
    Par Badr3am dans le forum PHP & Base de données
    Réponses: 11
    Dernier message: 31/01/2006, 22h16

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