Somme.Si dépendant d'une variable

Bonjour à tous,

Dans le cadre d'un projet je cherche à faire un Somme.Si dépendant d'une variable :

Range("G5").FormulaLocal = "=SOMME.SI(Project[ProjectManager]; variable ; Project[January])"

Le problème étant que lorsque j'exécute le code la formule qui va s'inscrire dans la cellule G5 est exactement celle au dessus mais la variable n'a pas pris sa valeur, c'est à dire que Excel va chercher le mot clé "variable" et non la variable.

J'espère avoir été assez clair.

Merci d'avance.

Bonjour,

cela arrive à pas mal de "mots réservés" ... conclusion : ne pas utiliser ce mot et le changer (mettre un _ devant par exemple)

Dans mon cas la variable s'appelle tampon_nom et non pas variable...

Bonjour ope_af, Steelson,

à tout hasard, vérifie aussi que ta variable tampon_nom est un critère valide !

dhany

Bonjour ope_af, Steelson,

à tout hasard, vérifie aussi que ta variable tampon_nom est un critère valide !

dhany

En effet ma variable tampon_nom est un critère valide, c'est un string comme demandé dans la fonction somme.si

Si tu veux aller plus loin, simplifie ton fichier et poste-le. https://forum.excel-pratique.com/viewtopic.php?f=2&t=13

Bjr Dhany

tu a écrit :

c'est un string comme demandé dans la fonction somme.si

ok ; mais si le critère comporte un élément variable, il faut utiliser une concaténation :

par exemple : ">=" & D5 ; si tu as mis ">=D5" : ça ne marche pas !

dhany

tu a écrit :

c'est un string comme demandé dans la fonction somme.si

ok ; mais si le critère comporte un élément variable, il faut utiliser une concaténation :

par exemple : ">=" & D5 ; si tu as mis ">=D5" : ça ne marche pas !

dhany

Dans mon cas la variable est un nom, j'ai donc essayé de mettre comme critère "" & tampon_nom mais le code me renvoie une erreur d'execution '1004'

J'ai comme l'impression qu'on va parler dans le bide un bon moment !

Essaie quand même

Range("G5").FormulaLocal = "=SOMME.SI(Project[ProjectManager]; " & [variable] & " ; Project[January])"

Essaie quand même

Range("G5").FormulaLocal = "=SOMME.SI(Project[ProjectManager]; " & [variable] & " ; Project[January])"

Ok ça a marché,

Merci beaucoup Steelson et Dhani Pour info j'étais en train de faire cet excel simplifié...

bravo Steelson pour avoir trouvé la solution ! et sans l'fichier du demandeur, en plus !

je t'ai mis +1 ... et p't'être qu'ope_af t'en ajoutera un autre ?

dhany

Je suis maintenant confronté à un autre problème :

Supposons que ma variable prend la valeur "Steelson"

Maintenant la formule qui s'applique dans la cellule G5 est : "SOMME.SI(Project[ProjectManager];Steelson;Project[January])"

et non SOMME.SI(Project[ProjectManager];"Steelson";Project[January]) ce qui m'empêche d'avoir Steelson comme critère et donc de rechercher Steelson...

je m'en doutais mais c'était une première étape pour en même temps vérifier tout le reste

poursuis ton fichier simplifié ... c'est nécessaire

ope_af a écrit :

Maintenant la formule qui s'applique dans la cellule G5 est : "=SOMME.SI(Project[ProjectManager];Steelson;Project[January])"

??? ben, pourquoi t'as pas mis Steelson entre crochets ? (j'parle de la variable, pas de Steelson lui-même ! )

comme ceci : =SOMME.SI(Project[ProjectManager];[Steelson];Project[January])

dhany

oui mais les crochets s’accompagnaient aussi de guillemets

l'ennui c'est que cela fige la valeur au moment de l'exécution de la macro

ah, ok ; comme ça, alors : =SOMME.SI(Project[ProjectManager];["Steelson"];Project[January])

... mais si la valeur est figée de stupeur au moment de l'exécution de la macro, n'en parlons plus.

dhany

non, les guillemets encadrent les crochets et en plus il y a des esperluettes (j'aime bien ce mot) !

pour les guillemets, comme ça alors : =SOMME.SI(Project[ProjectManager];"[Steelson]";Project[January])

mais pour les esperluettes ? (j'aime bien ce mot, mois aussi ; ça sonne comme "alouette" ... mais les esperluettes sont une espèce d'oiseau qui peut pas s'faire plumer ! )

tu veux dire comme ça : =SOMME.SI(Project[ProjectManager];&"[Steelson]"&;Project[January])

dhany

Finalement j'ai créé l'excel simplifié. Quelques éclaircissement dessus :

  • Lorsque que l'on ajoute un nouveau chef de projet dans le tableau de la feuille 1 et qu'on exécute le code ça va alors créer une nouvelle ligne sur le tableau 2 avec le nom du nouvel employé. (c'est le but de mon projet)
  • Pour voir que le code ne fonctionne pas il suffit d'ajouter une charge de travail au nouvel employé (j'ai mis 7 par défaut) et regarder le résultat dans le deuxième tableau (la charge de travail devrait être 7)
  • Le début du code me permet juste de tester si l'employé n'existe pas, et si il n'existe pas on créé une nouvelle ligne avec son nom dans le deuxième tableau.

On remarque bien le problème : le critère de recherche est faux (ce n'est pas "nom_employé" mais juste nom_employé)

Et voici le code :

Sub test()

Dim rg_cellule As Range
Dim rg_cellule2 As Range
Dim indicateur As Integer
Dim tampon_nom As String
Dim tampon_indic As Boolean

    For Each rg_cellule In Range("Tableau1").ListObject.DataBodyRange.Columns(2).Cells

        For Each rg_cellule2 In Range("Tableau2").ListObject.DataBodyRange.Columns(1).Cells

            If rg_cellule = rg_cellule2 Then
            indicateur = indicateur + 1
            End If
        Next rg_cellule2

        If indicateur = 0 Then
            tampon_nom = rg_cellule
            tampon_indic = True
            MsgBox ("Le Chef de projet " & rg_cellule.Value & " n'existe pas")
        Exit For
        End If

    indicateur = 0

    Next

    If tampon_indic = True Then

        With Sheets("Feuil2").ListObjects("Tableau2")

        .ListRows.Add AlwaysInsert:=True 'On ajoute une ligne au tableau 2
        .ListColumns("Owner").DataBodyRange(.ListRows.Count) = tampon_nom ' Ajoute le nom du nouvel employé

    End With

        derniereLigne = Sheets("Feuil2").Cells(Rows.Count, "C").End(xlUp).Row
        MsgBox derniereLigne
        Range("C" & derniereLigne).FormulaLocal = "=SOMME.SI(Tableau1[Owner];" & [tampon_nom] & ";Tableau1[Charge de travail])"

    End If

End Sub

Merci d'avance.

Rechercher des sujets similaires à "somme dependant variable"