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

Excel Discussion :

Insérer l'adresse d'une cellule dans une formule


Sujet :

Excel

  1. #1
    Membre averti
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Août 2014
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Ressources humaines

    Informations forums :
    Inscription : Août 2014
    Messages : 18
    Par défaut Insérer l'adresse d'une cellule dans une formule
    Bonsoir,

    Je souhaite automatiser le calcul d'une interpolation linéaire d'un nombre de valeurs qui peuvent évoluer en fonction des blancs, standards, échantillons.

    Voici le code de la formule :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveCell.FormulaR1C1 = "=Linear_Interp(R28C4:R43C4,R1C27:R16C27,R[-43]C[22])"
    La plage de cellules R28C4:R43C4 est variable mais elle débutera toujours par R28C4.
    J'identifie la dernière cellule de la plage (dans cet exemple R44C4) via un filtre et définie l'adresse de cette cellule via la formule suivante : =ADRESSE(EQUIV(AB6;D;0);4)
    Même principe pour la plage R1C27:R16C27

    Ce que je souhaiterais faire, c'est que dans la macro, je puisse insérer dans la formule à la place de R43C4 et R16C27, les adresses définies via la formule =ADRESSE...
    Ainsi, en AB5; j'ai la valeur $D$44. La sélection dans la formule devra chercher en AB5, la dernière cellule à sélectionner pour définir la plage.
    Le but étant d'automatiser automatiquement la formule quelques soient le nombre de valeurs (ici les concentrations et les standards).

    J'ai essayé avec la fonction INDIRECT pour faire la formule d'abord manuellement avec une simple Somme =SOMME(INDIRECT(AB5 &":"& AB4)), mais déjà là le résultat ne correspond pas.
    Mon idée était éventuellement de mettre le contenu de la cellule AB5 en tant que variable du type
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim NomVariable 
    NomVariable = range("AB5").Value
    mais j'ai quelques soucis pour concilier les 2.
    Par avance merci

    Bug*

  2. #2
    Membre averti
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Août 2014
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Ressources humaines

    Informations forums :
    Inscription : Août 2014
    Messages : 18
    Par défaut
    Ce n'est pas encore ça !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Dim interp As Variant
    Dim interp2 As Variant
    interp = Range("AB5").Value
    interp2 = Range("AB4").Value
     
    ActiveCell.FormulaR1C1 = "=Linear_Interp(R28C4:" & interp & ",R1C27:" & interp2 & ",R[-43]C[22])"

  3. #3
    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,

    Une proposition:
    DerLig_D recherche la dernière ligne de la colonne 4 (D)
    DerLig_AA recherche la dernière ligne de la colonne 27 (AA)

    Ce qui donne:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
       Dim DerLig_D As Long, DerLig_AA As Long
        DerLig_D = [D28].End(xlDown).Row
        DerLig_AA = [AA1].End(xlDown).Row
        ActiveCell.FormulaR1C1 = "=Linear_Interp(R28C4:R" & DerLig_D & "C4,R1C27:R" & DerLig_AA & "C27,R[-43]C[22])"
    A tester
    Cdlt

  4. #4
    Membre averti
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Août 2014
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Ressources humaines

    Informations forums :
    Inscription : Août 2014
    Messages : 18
    Par défaut
    Bonjour,

    Merci pour ce retour.
    Effectivement il y a cette alternative moins détournée que la mienne.
    Cependant, j'ai un souci, alors qu'il devrait prendre la dernière la dernière ligne non vide, il me prend la dernière ligne qui contient la formule
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SI(A124<>"";MOYENNE(B124:C124);"")
    Du coup, j'ai comme édition de la formule :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =Linear_Interp($D$28:$D$124;$AA$1:$AA$96;AC2)
    J'ai ainsi D124 au lieu de D44

    A cela, je peux faire sur une feuille annexe, un filtre qui pourrait résoudre ce problème.

    Bonne journée

  5. #5
    Membre averti
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Août 2014
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Ressources humaines

    Informations forums :
    Inscription : Août 2014
    Messages : 18
    Par défaut
    Du coup, j'ai détourné mon problème de formule pérenne qui fait que la cellule sans valeur n'est pas identifiée comme vide dans la macro.
    J'ai fait un filtre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ActiveSheet.Range("$A$1:$A$98").AutoFilter Field:=1, Criteria1:="<>" _
        , Operator:=xlAnd, Criteria2:="<>#DIV/0!"
        Selection.SpecialCells(xlCellTypeVisible).Select
    Merci pour ton aide
    bug*

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

Discussions similaires

  1. [XL-2007] Copie d'image dans une cellule vers une cellule d'une autre feuille
    Par natsamfa dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 20/02/2017, 21h27
  2. [Toutes versions] coller les données d'une plage d'une cellule dans une cellule d'une autre feuille[VBA]
    Par arthson dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 24/01/2012, 17h37
  3. [XL-2007] problème de codage en vba ("copie d'une partie d'une cellule dans une cellule vide")
    Par skipeemed dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 26/10/2010, 17h01
  4. [XL-2002] Macro de comparaison d'une cellule d'une feuille avec une cellule d'une autre feuille.
    Par steelydan dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 08/09/2010, 12h59
  5. Recherche une valeur d'une cellule dans une colonne d'une autre feuille
    Par kourria dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 21/06/2007, 13h48

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