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 INDIRECT avec variable sur n° de colonne


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 7
    Points : 2
    Points
    2
    Par défaut Fonction INDIRECT avec variable sur n° de colonne
    Bonjour,

    Je voudrais copier le contenu des cellules A1 à E1 de la feuille 1 vers les cellules A1 à A5 de la feuille 2, de telle sorte que si je change une valeur d'une cellule de la feuille 1 (par exemple la valeur de C1), alors la valeur de la case associée dans la feuille 2 subisse le même changement (case A3).

    De plus, je souhaite que la copie soit automatique. J'ai écrit la macro suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     Sub test()
     
        Sheets(Feuille2).Select
     
        For i = 1 To 5
     
        Range("A" & i).Activate
        ActiveCell.FormulaLocal = "=INDIRECT(""'Feuille1'!??"")"
     
        Next
     
    End Sub
    Le problème vient des ?? car je ne sais pas comment écrire la cellule correspondante de la feuille 1, sachant que i est le n° de colonne de cette cellule.

    Si l'un d'entre vous a une idée ou une autre méthode pour effectuer le copier/coller qui m'intéresse, ce serait formidable de sa part, car cela fait un bon bout de temps que je bute sur ce problème. Merci d'avance !

  2. #2
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 038
    Points
    20 038
    Par défaut
    je comprends pas ce que viens vers la fonction INDIRECT la ..? est tu sur que tu as besoin d'elle voir

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 7
    Points : 2
    Points
    2
    Par défaut
    J'utilise la fonction INDIRECT car c'est le seul moyen que j'ai trouvé pour que la valeur de la cellule d'arrivée (A3 par ex.) soit toujours égale à celle de la cellule de départ (C1), même si elle est modifiée.

  4. #4
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 038
    Points
    20 038
    Par défaut
    Citation Envoyé par mat.guillaume
    J'utilise la fonction INDIRECT car c'est le seul moyen que j'ai trouvé pour que la valeur de la cellule d'arrivée (A3 par ex.) soit toujours égale à celle de la cellule de départ (C1), même si elle est modifiée.
    je comprends pas comment utilise tu cette fonction indirect.. , dans quelle cellule ..? quelle formule met tu ..?

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 7
    Points : 2
    Points
    2
    Par défaut
    Prenons i=2.

    Je veux copier la valeur de B1 (i = 2 = n° colonne) de la feuille 1 dans la case A2 (i = 2 = n° de ligne) de la feuille 2.

    Donc :

    Je me place dans la feuille 2 et je sélectionne la case A2.
    Dans cette case, je veux écrire la formule : =INDIRECT("'Feuille1'!B1").

    Mais comme je suis dans une boucle, j'aimerais remplacer la lettre B par une lettre qui varie en fonction de i, mais je n'y arrive pas.

  6. #6
    Membre actif Avatar de marsupilami34
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    574
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 574
    Points : 258
    Points
    258
    Par défaut
    Si tu veux utiliser la fonction indirect
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    'Dabord sélectionner la cellule ou tu veux mettre ta formule
    Cells(1,1) 'par exemple correspondant à A1
    ActiveCell.FormulaR1C1 = "=INDIRECT(Feuil2!RC[1])"
    A++

  7. #7
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 038
    Points
    20 038
    Par défaut
    avant d'écrire la formule en VBA, finissons en avec formule excel..., tu n'as pas besoin d'indirect... tu peu mettre directement
    en A2

  8. #8
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 7
    Points : 2
    Points
    2
    Par défaut
    Effectivement, je peux mettre directement ta formule excel dans la case A2.
    Mais je ne peux pas utiliser de copier/coller pour reproduire la formule dans les autres cases car on passe d'une sélection horizontale dans la feuille 1 à une sélection verticale dans la feuille 2. Donc avec cette méthode je suis obligé d'écrire manuellement cette formule dans toutes les cases de la feuille 2. Or je veux automatiser le remplissage de la feuille 2, c'est pourquoi je suis passé par du VBA.

    Pour résumer, le problème est de coller une sélection horizontale dans une colonne, tout en gardant les valeurs de la colonne liées aux valeurs de la ligne.

    J'ai essayé toutes les méthodes "classiques", mais ça ne marche pas. C'est pour cela que je me suis tourné vers INDIRECT, mais ça ne marche toujours pas !! Il y a peut être d'autres solutions plus élaborées ?

  9. #9
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 038
    Points
    20 038
    Par défaut
    voilà la fonction test modifiée..
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Sub test()
        For i = 1 To 5
         Sheets("Feuil2").Range("A" & i).FormulaLocal = "=Feuil1!" & Cells(1, i).Address(True, True)
        Next
    End Sub

  10. #10
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 7
    Points : 2
    Points
    2
    Par défaut
    Verdict : félicitations bbil !!! ça marche exactement comme je voulais.
    Merci beaucoup pour ta contribution. Maintenant je vais essayer de comprendre ta formule ...

    A +

Discussions similaires

  1. [2008R2] Déclencheur avec variable sur deux colonnes
    Par Boubou2020 dans le forum Développement
    Réponses: 5
    Dernier message: 07/11/2014, 11h04
  2. Réponses: 10
    Dernier message: 02/07/2012, 17h30
  3. KIXTART fonction USE avec variables.
    Par Babybel54 dans le forum Scripts/Batch
    Réponses: 0
    Dernier message: 03/07/2008, 16h48
  4. [SQL] fonction where avec variable
    Par rvm31 dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 29/10/2007, 09h12
  5. [XSLT] pb fonction Document() avec variables
    Par Quentor dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 14/08/2007, 13h59

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