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 :

Somme.si avec un nombre de ligne variables


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 4
    Points : 1
    Points
    1
    Par défaut Somme.si avec un nombre de ligne variables
    Bonjour à tou(te)s,

    Débutant dans les macros (la preuve ci-dessous), je vous soumets un problème dont je n'ai pas trouvé la solution sur le forum :
    Je cherche à mettre à jour une cellule contenant la formule Somme.si sachant que le nombre de ligne est dynamique.

    Pour compter les lignes (contenues dans l'onglet Planif global) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
      Dim x As Integer
        x = Range("D65536").End(xlUp).Row
    Pour ce qui est de la cellule à mettre à jour :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
       Sheets("Synthèse générale").Select
        Range("N236").Select
        ActiveCell.FormulaR1C1 = "=SUMIF('Planif globale'!R4C4 & x,""IDF"",'Planif globale'!R4C12 & x)"

    Je me doute bien qu'il doit y avoir une, si ce n'est plusieurs erreurs.

    Vous remerciant par avance,

    A.B.

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 130
    Points : 2 443
    Points
    2 443
    Par défaut
    Salut Atofi et le forum
    C'est bien de donner la formule que tu as construite. Mais si elle est fausse et que tu ne donnes pas ce qu'elle devrait faire, à part par magie,difficile de t'aider efficacement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
      Dim x As Long
        x = Range("D65536").End(xlUp).Row
    Un numéro de ligne peut dépasser la limite d'Integer.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
       Sheets("Synthèse générale").Range("N236").FormulaR1C1 = "=SUMIF(Formule)"
    J'ai déjà horreur de Somme.si, alors en anglais .
    Au lieu de FormulaR1C1, comme c'est une formule unique, j'utiliserai ".FormulaLocal", ce qui permet de copier directement la formule en français.

    Ce qui serait intéressant, c'est d'avoir la formule finale.
    ça permettrait de préciser la formule qui devrait être de la forme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Dim x as string
    x = Range("D65536").End(xlUp).address
    Sheets("Synthèse générale").Range("N236").FormulaLocal = "=Somme.si('Planif globale'!$D$4:" & x & ";""IDF"";'Planif globale'!$L$4:" & x & ")"
    Attention : j'ai pas testé
    A+

  3. #3
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Bonjour à tous, merci beaucoup pour ton aide.

    L'objectif de cette formule est de mettre à jour la cellule N236 de l'onglet Synthèse générale quand je mets l'onglet Planif Globale à jour.
    Actuellement, l'onglet Planif globale comporte 270 lignes, mais cela va augmenter au fil du temps.

    La formule cible est donc aujourd'hui :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SOMME.SI('Planif globale'!D4:D270;"IDF";'Planif globale'!L4:L270)
    Quand je la rentre à la main, elle fonctionne parfaitement.

    J'ai essayé ta proposition, mais je n'ai constaté aucun changement.

    Merci encore pour ton aide,

    A.B

  4. #4
    Membre du Club
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2008
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

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

    Informations forums :
    Inscription : Décembre 2008
    Messages : 57
    Points : 52
    Points
    52
    Par défaut une solution
    bonjour,

    voila une solution a explorer, mais qui fonctionne
    on affecte des noms pour la plage de données, et on les utilisent dans la formule

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
        ActiveWorkbook.Names.Add Name:="plage", RefersTo:="=Planif globale!$D$4:$D$" & Range("Planif globale!D65536").End(xlUp).Row
     
        ActiveWorkbook.Names.Add Name:="somme_plage", RefersTo:="=Planif globale!$L$4:$L$" & Range("Planif globale!L65536").End(xlUp).Row
     
        ActiveCell.Formula = _
            "=SUMIF(plage,""IDF"",somme_plage)"
    bon courage
    a+

  5. #5
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Bonjour Kidone et merci pour cette solution.
    Je l'ai essayée, mais cela me renvoie un message d'erreur à la 2e ligne (erreur d'exécution 1004 : erreur définie par l'application ou par l'objet).

    Ta solution me semble pourtant idéale et facile à réutiliser !

    Merci,

    A.B

  6. #6
    Membre du Club
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2008
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

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

    Informations forums :
    Inscription : Décembre 2008
    Messages : 57
    Points : 52
    Points
    52
    Par défaut
    bonjour,

    ça plante ou en pas à pas

    chez moi ça marche
    a+

  7. #7
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Je pense que ca doit effectivement venir de chez moi, voire de moi-même.
    En fait, ca semble planter dès la première ligne.

    Je ai pourtant copié directement ton code

Discussions similaires

  1. Tableau avec nombre de lignes variable
    Par grrd dans le forum Mise en page CSS
    Réponses: 3
    Dernier message: 28/05/2013, 12h05
  2. Somme.si avec un nombre de lignes variables
    Par puledad1 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 11/03/2013, 16h14
  3. somme de valeurs d'une colonne dans une feuille avec un nombre de lignes inconnus
    Par Platon d'athene dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 21/09/2012, 15h53
  4. Interface avec un nombre de champs variable
    Par vladvad dans le forum Windows Forms
    Réponses: 2
    Dernier message: 11/06/2007, 11h19
  5. Lecture fichier texte avec un nombre de lignes à ignorer
    Par TravelMate dans le forum Langage
    Réponses: 20
    Dernier message: 02/08/2006, 11h59

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