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 :

Methode Autofill Formule [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juin 2014
    Messages : 90
    Par défaut Methode Autofill Formule
    Bonjour à tous,

    Mon code est placé dans un userform qui va traité plusieurs feuilles de mon classeur.

    Je voudrais étendre une formule sur une plage (vers le bas et vers la droite) ... Je voudrais l'étendre de C3 à BN &cpt ...

    J'ai essayer de la manière suivante sans vain .. dois-je passer par une boucle ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    b.Range("C3").FormulaR1C1 = "=IF(ISBLANK(RC1),"" "",AVERAGEIF(METIER,RC1,OFFSET(CODE,,MATCH(R2C,TITRE_INDICATEURS,0)-1)))"
     Range("C3").AutoFill Destination:=Range("C3:BN" & cptM), Type:=xlFillDefault
    Autre question :

    Pourquoi je ne peux préciser le b. (b étant une feuille déclarée et assignée).
    Je voudrais qu'il m'étende la formule de C à BN ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    b.Range("C" & cptM + 1).AutoFill Destination:=Range("C" & cptM + 1 & ":BN" & cptM + 1)
    il me met que la méthode Autofill de la classe range a échoué

    Cordialement

  2. #2
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 609
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 609
    Par défaut
    Bonjour,

    Si tu écrivais ta formule en C3 pour pouvoir la copier manuellement aux autres cellules, comment l'écrirais-tu, incluant les "$" le cas échéant ?

  3. #3
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    Bonjour,

    Pourquoi "AutoFill" ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    b.Range("C3:BN" & cptM).FormulaR1C1 = "=IF(ISBLANK(RC1),"" "",AVERAGEIF(METIER,RC1,OFFSET(CODE,,MATCH(R2C,TITRE_INDICATEURS,0)-1)))"
    Hervé.

  4. #4
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juin 2014
    Messages : 90
    Par défaut
    Salut Parmi, Theze,

    Parmi, voici la formule que je met en C3 pour l'étendre sur ma plage :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SI(ESTVIDE($A3);" ";MOYENNE.SI(METIER;$A3;DECALER(CODE;;EQUIV(C$2;TITRE_INDICATEURS;0)-1)))
    Theze, c'est vrai que pour le premier cas je n'ai pas besoin du Autofill. Par contre, je souhaite faire une moyenne pondérée à la ligne n+1 (n étant la dernière ligne de ma plage).

    Du coup, j'ai inscris :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    'Etendre la formule sur ma plage (cptM est la derniere ligne)
    b.Range("C3:BN" & cptM).FormulaR1C1 = "=IF(ISBLANK(RC1),"" "",AVERAGEIF(METIER,RC1,OFFSET(CODE,,MATCH(R2C,TITRE_INDICATEURS,0)-1)))"
     
     
     'Calcul de l'effectif par métier et l'étend à la dernière ligne
     b.Range("B3:B" & cptM).FormulaR1C1 = "=IF(ISBLANK(RC1),"" "",COUNTIF(METIER_PL_Dynamique,Moyenne!RC[-1]))"
    ' Range("B3").AutoFill Destination:=Range("B3:B" & cptM), Type:=xlFillDefault
     b.Range("B3:B" & cptM).NumberFormat = "#,##0"
     
    ' 'Calcul de la moyenne ponderée à la ligne n+1
     b.Range("C" & cptM + 1).FormulaR1C1 = "=SUMPRODUCT(R3C:R" & cptM & "C,R3C2:R" & cptM & "C2)/SUM(R3C2:R" & cptM & "C2)"
     Range("C" & cptM + 1).AutoFill Destination:=Range("C" & cptM + 1 & ":BN" & cptM + 1)
    Le problème ici c'est que ma moyenne pondérée ne s'étend pas du tt sur la plage souhaitée ( De "C" & cptM + 1 & ":BN soit la ligne suivant la dernière). Elle s'applique uniquement à C & cptM+1.

  5. #5
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    Bonjour,

    Chez moi ça fonctionne mais comme ça fait référence à des plages nommées j'ai les valeurs d'erreur #NOM? ce qui est logique mais la formule SommeProd (ici en colonne J) est bien copiée jusqu'à la colonne BN :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    =SOMMEPROD(J$3:J$10;$B$3:$B$10)/SOMME($B$3:$B$10)
    Tu ne parente pas certains Range, peut être que c'est dû à ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Range("C" & cptM + 1).AutoFill Destination:=Range("C" & cptM + 1 & ":BN" & cptM + 1)
    teste la ligne de code suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    B.Range("C" & cptM + 1).AutoFill B.Range("C" & cptM + 1 & ":BN" & cptM + 1)
    Hervé.

  6. #6
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juin 2014
    Messages : 90
    Par défaut
    Salut Hervé,

    Tout bêtement j'oubliais de parenté mon deuxième range dans mon code...

    Je te remercie de cette précision !

    Cordialement

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

Discussions similaires

  1. erreur : "methode autofill a echoué"
    Par tomy29 dans le forum VBA Access
    Réponses: 1
    Dernier message: 25/10/2008, 09h46
  2. vba methode autofill
    Par moimemessssssssss dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 09/04/2008, 22h19
  3. Methode de drcherche a l,interieur de basse de donner texte
    Par philippe V dans le forum Autres SGBD
    Réponses: 4
    Dernier message: 03/12/2002, 10h20
  4. [Formule] Lever et coucher du soleil
    Par psl dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 21/10/2002, 16h37
  5. [reseaux] Comment creer un compte user à partir d'un formul avec perl
    Par oulai_evado dans le forum Programmation et administration système
    Réponses: 4
    Dernier message: 01/10/2002, 19h54

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