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 :

Variable utilisée dans une fiormule - Question de curiosité [XL-2007]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de Runsh63
    Homme Profil pro
    Contrôleur de gestion
    Inscrit en
    Mars 2011
    Messages
    476
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Contrôleur de gestion
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2011
    Messages : 476
    Par défaut Variable utilisée dans une fiormule - Question de curiosité
    Bonjour,

    Je vous sollicite afin que vous m'aidez à comprendre pourquoi une de mes variables utilisées dans une formule prend une valeur différente que celle qu'elle a initialement.
    C'est très farfelu mais je ne sais comment tourner correctement ma demande... Je m'explique (du moins je vais essayer).

    Je recherche l'emplacement d'une colonne particulière dans une feuille afin de l'utiliser par la suite dans une RECHERCHEV.

    Voilà le code tapé :

    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
    Sub Test()
     
    Dim MyColumn As Byte
     
    'Identification de la colonne comportant les libellés de l'export issu de la Ligne 1000
     
        MyColumn = Sheets("Export Sage").Cells.Find("Libellé d'écriture", LookIn:=xlValues).Column
     
    'Contrôle des catégories de paye
     
        With Sheets("Cat")
     
        .Range("B1").EntireColumn.Delete
     
        LR1 = .Cells(.Rows.Count, 1).End(xlUp).Row
     
            With .Range("B2:B" & LR1)
     
                .Formula = "=+IF(ISERROR(VLOOKUP(RC[-1],'Export Sage'!C[" & MyColumn & "],1,0)),""X"","""")"
                .Value = .Value
     
            End With
     
        End With
     
    End Sub
    Ma colonne se trouvant en E, la variable prend la valeur 5, mais dans la RECHERCHEV, elle passe à 7.
    La valeur prend toujours la valeur + 2 dans la formule (j'ai fait plusieurs tests)

    Je contourne le problème en faisant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     MyColumn = Sheets("Export Sage").Cells.Find("Libellé d'écriture", LookIn:=xlValues).Offset(0, -2).Column
    Mais je ne m'explique pas pourquoi le code initial ne fonctionne pas.

    Je vous remercie grandement d'avance pour votre réponse, et m'excuse si cette question sûrement triviale pour nombre d'entre vous vous excède.

  2. #2
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    cela n'est pas lié à l'utilisation de références relatives ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .Formula = "=+IF(ISERROR(VLOOKUP(RC[-1],'Export Sage'!C[" & MyColumn & "],1,0)),""X"","""")"
    si ta colonne est 5 et que tu écris cette formule en colonne 2 ... on obtient 5+2 = 7 ?


    regarde si en l'écrivant en colonne A tu obtiens 6, on aura la réponse

  3. #3
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Bonjour,

    Tu utilises des références relatives. Mets :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .Formula = "=IF(ISERROR(VLOOKUP(RC[-1],'Export Sage'!C" & MyColumn & ",1,0)),""X"","""")"

  4. #4
    Membre éclairé Avatar de Runsh63
    Homme Profil pro
    Contrôleur de gestion
    Inscrit en
    Mars 2011
    Messages
    476
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Contrôleur de gestion
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2011
    Messages : 476
    Par défaut
    Merci à vous deux, c'est exaactement ça, les références relatives (je me coucherai moins bête), en codant comme vous m'avez montré Daniel C. celà fonctionne parfaitement.
    Encore merci, excellente fin de journée !!

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 12/04/2009, 17h54
  2. Variable utilisée dans une chaine de caractères
    Par cchampion2fr dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 07/10/2008, 13h46
  3. Réponses: 7
    Dernier message: 24/01/2007, 10h01
  4. Utilisation d'une variable publique dans une DLL
    Par Delphi-ne dans le forum Delphi
    Réponses: 13
    Dernier message: 05/12/2006, 13h19
  5. [SQL] Comment utiliser dans une requête une variable passée par URL
    Par foffa dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 31/08/2006, 12h27

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