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 :

Problemes avec Cell/Range.formula [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2016
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2016
    Messages : 28
    Par défaut Problemes avec Cell/Range.formula
    Bonjour,

    j'utilise le code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveCell.FormulaR1C1 = "=RECHERCHEV(Fusion!LC;Fusion!L44C1:L54C5;5)"
    Mais j'obtiens une erreur 1004, sachant que quand je tape directement le formule dans la case voulue il calcul correctement ce que je veux,


    Je cherche, dans une autre utilisation de formula le moyen d'intégrer une variable

    exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Valeur_x = ActiveRange
    Range("N2:O6").Formula = "DROITEREG(I2:I120;Valeurs_x;VRAI;VRAI)
    Merci de votre aide

  2. #2
    Membre éclairé
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Novembre 2013
    Messages
    226
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2013
    Messages : 226
    Par défaut
    Hello,

    Tu veux faire quoi avec les formules ? Les copiers ? Les placer dans une boucle? Essaye de détailler ton besoin.

    Après pour les formules le top est d'activer enregistreur de macro et de double cliquer desssus. L’enregistreur va traduire la formule.

    Sur ce bonne journée.

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2016
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2016
    Messages : 28
    Par défaut
    L'objectif de la première formule est d'avoir un tableau vide et lors de la sélection d'une case par un utilisateur et du lancement de la macro on y rentre la formule et on a donc la valeur de la case qui apparait (par exemple cliquer sur une case d'un démineur)

    La deuxième elle me permet de récupérer les coefficients linéaires d'une série de donnée, cette série n'ayant pas toujours la meme taille et mon rendu devant être un excell unique je dois utiliser une macro pour mettre à jour les coefficients

  4. #4
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2016
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2016
    Messages : 28
    Par défaut
    Nan ce n'est pas une variable, j'ai juste peur qu'activCell ne fonctionne pas puisque je travaille dans ce cas la avec 2 colonnes et un nombre de lignes indétrerminé ==> l'idée je fait un range("A1:B1").select, ensuite j'utilise la commande qui permet d'aller jusqu'en bas de la selection (avec du xldown ...) j'enregistre cette sélection en tant que variable pour la réutiliser ensuite dans la recherchev

    J'ai réussit à faire fonctionner ma première ligne de code en passant aux formules en anglais .. je ne sais pas pourquoi

  5. #5
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par Tayahelna Voir le message
    J'ai réussit à faire fonctionner ma première ligne de code en passant aux formules en anglais .. je ne sais pas pourquoi
    Pour que ça passe avec des formules en français, il aurait fallu mettre FormulaLocalR1C1.

    Nan ce n'est pas une variable, j'ai juste peur qu'activCell ne fonctionne pas puisque je travaille dans ce cas la avec 2 colonnes et un nombre de lignes indétrerminé
    Je ne pense pas qu'utiliser des mots-code qui n'existent pas puisse améliorer les choses.

    l'idée je fait un range("A1:B1").select, ensuite j'utilise la commande qui permet d'aller jusqu'en bas de la selection (avec du xldown ...) j'enregistre cette sélection en tant que variable pour la réutiliser ensuite dans la recherchev
    Pourquoi passer par des Select ? Ca ne me semble pas nécessaire pour faire ce que tu décris.
    Par contre, je ne comprends pas ce que doit contenir Valeur_x : une valeur d'une cellule, le numéro d'une ligne, une référence à une cellule, à une zone ?
    Si c'est autre chose que la première possibilité, alors ton code est incorrect.

  6. #6
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2016
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2016
    Messages : 28
    Par défaut
    Je pense que me donner le mot-clé correspondant pourrai faire avancer les chose, j'avais donné une "idée" de code qui attendait justement une correction

    J'utilise des selects car j'ai besoin de mettre en mémoire un Range, en l'occurence la variable Valeur_x représente ce range que j'ai sélectionné et qui sert d'argument dans la fonction droitereg

  7. #7
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2016
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2016
    Messages : 28
    Par défaut
    Citation Envoyé par Tayahelna Voir le message
    La deuxième elle me permet de récupérer les coefficients linéaires d'une série de donnée, cette série n'ayant pas toujours la meme taille et mon rendu devant être un excell unique je dois utiliser une macro pour mettre à jour les coefficients
    Voilà avec ça tu devrais comprendre l'intéret des select et aussi pourquoi ta formule ne fonctionnera pas.

    En outre, une fois que j'aurais ma variable comme je veux la syntaxe que tu m'as donné avant pour le mettre dans un formula fonctionne ?

  8. #8
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par Tayahelna Voir le message
    j'utilise le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveCell.FormulaR1C1 = "=RECHERCHEV(Fusion!LC;Fusion!L44C1:L54C5;5)"
    Mais j'obtiens une erreur 1004, sachant que quand je tape directement le formule dans la case voulue il calcul correctement ce que je veux,
    Essaye de mettre, juste avant cette ligne, un code qui vérifie le contenu de ActiveCell. Par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Debug.Print ActiveCell.Address
    Je cherche, dans une autre utilisation de formula le moyen d'intégrer une variable
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Valeur_x = ActiveRange
    Range("N2:O6").Formula = "DROITEREG(I2:I120;Valeurs_x;VRAI;VRAI)
    A ma connaissance, ActiveRange, ça n'existe pas (à moins que ce soit une de tes variables). Je pense que tu as voulu écrire ActiveCell.
    Pour le reste, il te manque un = avant la fonction et un " en fin, et la valeur doit être en dehors de la chaine de caractère.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("N2:O6").Formula = "=DROITEREG(I2:I120;" & Valeurs_x & ";VRAI;VRAI)"

  9. #9
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    Bonjour, le forum, Menhir, Tayahelna

    la variable Valeur_x représente ce range que j'ai sélectionné et qui sert d'argument dans la fonction droitereg
    Si je peux me permettre de m'immiscer dans le débat, Ton range est toujours le même ? parce que, comme Menhir, je suis persuadé que tu n'as pas besoin de "Select"
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  10. #10
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2016
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2016
    Messages : 28
    Par défaut
    Non mon Range n'est pas fixe sinon je ne ferai pas de select et encore pire je 'nutiliserai aps de variable

  11. #11
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2016
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2016
    Messages : 28
    Par défaut
    Voilà ma solution finale

    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
    Dim bas As Integer
     
    Range("H1").Select
    Selection.End(xlDown).Select
     
    bas = ActiveCell.Row
     
     
        Range("H1:I" & bas).Select
    '
     
     
     
    Range("N2:O6").FormulaArray = _
            "=LINEST(R2C8:R" & bas & "C8,R2C9:R" & bas & "C9,TRUE,TRUE)"

  12. #12
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par Tayahelna Voir le message
    Voilà avec ça tu devrais comprendre l'intéret des select et aussi pourquoi ta formule ne fonctionnera pas.
    Je l'avais bien lu et je persiste dans mon avis.
    Personnellement, il est très rare que dans mes codes j'utilise un Select sur un Range.

    Exemple pour éviter les Select, voici ce que donne ton dernier code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Dim bas As Long
     
    bas = Range("H1").End(xlDown).Row
    Range("N2:O6").FormulaArray = "=LINEST(R2C8:R" & bas & "C8,R2C9:R" & bas & "C9,TRUE,TRUE)"
    Deux autres remarques :
    Tu confonds les cellules sélectionnées (Select / Selection) et les cellules activées (Activate / ActiveCell). Dans certains cas, l'un peut passer pour l'autre mais il y a des cas où ça peut créer des problèmes.
    Pour un numéro de ligne, il vaut mieux utiliser une variable de type Long puisqu'il peut y avoir plus de 32 000 lignes.

    En outre, une fois que j'aurais ma variable comme je veux la syntaxe que tu m'as donné avant pour le mettre dans un formula fonctionne ?
    Non puisque le code que je t'ai indiqué était supposé intégrer une valeur numérique et non une référence de cellule.
    Pour que ça fonctionne avec une variable de type Range, il faut mettre une propriété.
    Je ne connais pas la fonction DROITEREG et je ne sais pas ce qu'il faut lui mettre en second paramètre.
    Si c'est l'adresse de la cellule, la syntaxe sera :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("N2:O6").Formula = "=DROITEREG(I2:I120;" & Valeurs_x.Address & ";VRAI;VRAI)"
    Citation Envoyé par Tayahelna Voir le message
    Non mon Range n'est pas fixe sinon je ne ferai pas de select et encore pire je 'nutiliserai aps de variable
    Marc de parlait de référence fixe mais d'usage unique.
    Si cette variable n'est utilisée que pour construire la fonction de la ligne suivante, alors elle n'est pas indispensable.
    Personnellement, je pense quand même que son usage permet un code plus clair et compréhensible.

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

Discussions similaires

  1. Probleme avec dynamic range et matrice
    Par micamused dans le forum Excel
    Réponses: 7
    Dernier message: 18/06/2015, 09h35
  2. Probleme avec Target.range
    Par andy38 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 04/06/2009, 08h38
  3. Problème avec Range.Formula
    Par zerti dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 23/07/2007, 17h25
  4. [VBA-E] Probleme avec proprièté formula
    Par Mut dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 06/11/2006, 22h33
  5. [VBA-E]Probleme avec la fonction Range
    Par pec dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 24/04/2006, 11h36

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