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 :

Référence dans formule Excel depuis VBA


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 38
    Points : 26
    Points
    26
    Par défaut Référence dans formule Excel depuis VBA
    Bonjour à tous,

    Voilà ce que je voudrais faire, et dont je n'ai pas la solution:
    Alors mon but est de mettre à jour des cellules contenant une formule. Je prends direct un exemple pour expliciter mes propos.

    J'ai une des cellules dont le contenu est "=AA30/O73". Et ce que je veux faire c'est qu'il y ait écrit après passage de la macro "=AD30/O73", c'est-à-dire un décalage de 3 cases vers la droite du numérateur. Cela pour tout une plage de cellules. Et là j'avoue que je sèche. J'en suis à penser de faire une reconnaissance de caractères qui fasse ceci, mais il doti y avoir plus simple. Sinon je me demandais s'il existait une fonction permettant d'obtenir les cellules de référence de ma formule dans ma case.
    Je m'explique, imaginons que "=AA30/O73" soit écrit dans la case A1, j'aimerais que MaFonction(A1) me renvoie un tableau composé de AA30 et de O73.

    Auriez-vous une idée ?

    Merci.

  2. #2
    Membre régulier
    Inscrit en
    Août 2008
    Messages
    141
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 141
    Points : 84
    Points
    84
    Par défaut une methode
    ecris ta formule simplement =A1/B3 va dans tools/option/general et clique sur R1C1 ensuite retourne dans ta case ou tu a la formule et tu obtiens son ecriture sous vba
    ensuite tu copie cette nouvelle ecriture dan ta fonction ici
    cells(whatever that is)=RC[-1]/R[2]C pour decaler tu fait
    cells(whatever that is)=RC[2]/R[2]....
    c pas tres clair j'avoue mais bon ..
    enfait R veut dire ligne et C colonne don tu demande de bouger de trios colonnes.

    en esperant que tu comprennes quelquechose

  3. #3
    Membre éprouvé
    Avatar de JackOuYA
    Inscrit en
    Juin 2008
    Messages
    1 040
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 1 040
    Points : 1 191
    Points
    1 191
    Par défaut
    Bonsoir,

    tiens en utilisant par exemple split, offset et replace..

    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
    Sub YaDecal3()
     Dim MaPlageAtraiter As Range
     Dim YaCel As Range
     Dim tb
     Set MaPlageAtraiter = ThisWorkbook.Sheets("Feuil1").Range("E2:E8")
     MaPlageAtraiter.Select
     For Each YaCel In MaPlageAtraiter
       tb = Split(YaCel.Formula, "/")
        If UBound(tb) <> 1 Then
          MsgBox "Erreur formule incorrecte en " & YaCel.Address & vbCrLf & YaCel.Formula
          Else
            Debug.Print YaCel.Formula;
            tb(0) = Mid(tb(0), 1) 'Enleve le signe egal
            YaCel.Formula = "=" & Range(tb(0)).Offset(1, 3).Address & "/" & tb(1)
            Debug.Print "==>" & YaCel.Formula
            'S'il faut enlever les $ rajoute par exemple
            'YaCel.Formula = "=" & Replace(Range(tb(0)).Offset(1, 3).Address, "$", "") & "/" & tb(1)
        End If
     Next
    End Sub
    JacqueS.

    Ps: je ne télécharge les piéces jointes qu'en dernier recours .(et encore...)

    Pour devenir mon ami laissez moi un message

  4. #4
    Membre expérimenté
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 563
    Détails du profil
    Informations personnelles :
    Âge : 61
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 563
    Points : 1 691
    Points
    1 691
    Par défaut
    peut etre qu'indirect te conviendrais et serais plus simple a mettre en oeuvre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    =INDIRECT(A1) / INDIRECT(A2)
    disons que tu ai aa30 en a1 et o73 en A2 elle te renverra
    contenuAA30 / contenuO73
    si tu écris AD30 en A1 tu obtiendra
    AD30/O73
    et si c'est pas une division que tu veux mais composer une adresse, tu peux aussi esayer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    INDIRECT(A1) & ":" & INDIRECT(A2)

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 38
    Points : 26
    Points
    26
    Par défaut
    Ok !
    Merci à vous pour vos réponses, je devrais pouvoir m'en sortir

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

Discussions similaires

  1. [XL-2013] Concaténer plusieur formule dans Excel depuis VBA
    Par FBOISSINOT dans le forum Excel
    Réponses: 2
    Dernier message: 30/06/2014, 12h16
  2. écrire dans plusieur feuille Excel depuis vba access
    Par bossLINDROS dans le forum VBA Access
    Réponses: 1
    Dernier message: 11/11/2008, 21h28
  3. Recherche d'une valeur dans un txt depuis vba excel
    Par Ted37 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 13/08/2008, 08h28
  4. Rechercher une valeur dans fichier Excel depuis VBA Access
    Par tribaleur dans le forum VBA Access
    Réponses: 1
    Dernier message: 16/07/2008, 14h10
  5. [VBA-E] écrire dans un range de cellules excel depuis VBA
    Par pro64 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 19/03/2007, 17h22

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