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 :

Problème avec formule SOMME.SI [XL-365]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Femme Profil pro
    Analyste
    Inscrit en
    Janvier 2024
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Canada

    Informations professionnelles :
    Activité : Analyste
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2024
    Messages : 5
    Par défaut Problème avec formule SOMME.SI
    Bonjour à tous,

    Nouvelle membre et première question pour moi, alors je vais essayer de faire ça correctement!

    J'ai fait un formulaire sur Excel pour que les conseillers pédagogiques puissent suivre la formation des élèves. Pour faciliter la saisie des informations et éviter les erreurs, j'ai mis des listes déroulantes et des formules que je vous explique. J'ai quatre colonnes principales :

    - Matière : l'utilisateur sélectionne tout d'abord une matière suivie par l'élève. C'est un menu déroulant, ex: Mathématique, Français, Arts, etc. (format Standard)
    - Niveau (colonne F): j'ai créé une liste déroulante en cascade qui propose les niveaux possibles pour la matière choisie (valeurs qui varient entre 1 et 5, format Nombre, sans séparateur de milliers ni décimales).
    Ensuite, selon la matière et le niveau choisis, les informations dans les deux colonnes suivantes se mettent toutes seules :
    - Code (colonne A): le code de la matière (ex: 063444) se met automatiquement selon la matière et le niveau (format Nombre, sans séparateur de milliers ni décimales). Voici la formule utilisée : =INDEX(Tableau1;EQUIV(Formulaire!F17;Tableau1[Niveau];0);EQUIV(Formulaire!B17;Tableau1[#En-têtes];0)) Ça fonctionne bien.
    - Unités (colonne G): le nombre d'unités pour le cours se calcule selon cette formule : =DROITE(A16;1) (le nombre d'unités correspond au dernier chiffre du code matière). Ça fonctionne bien aussi.

    Mon problème est donc le suivant : dans une case, je veux calculer automatiquement les unités des cours de 4e secondaire (niveau 4). J'ai donc mis cette formule : =SOMME.SI(F16:F27;4;G16:G27), mais ça me donne toujours 0. Toutefois, dans la colonne G (Unités), si j'écris un chiffre à la main, là ça fonctionne. On dirait donc que ma formule ne veut pas calculer les nombres dans la colonne lorsque ceux-ci résultent d'une formule.

    Voilà, j'espère que c'est clair. Merci à l'avance pour votre aide!

    MC

  2. #2
    Membre chevronné
    Homme Profil pro
    Responsable d'un système d'information métier
    Inscrit en
    Janvier 2007
    Messages
    228
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Responsable d'un système d'information métier
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 228
    Par défaut
    Bonjour,

    je pense que Droite(A16;1) renvoie une chaine alpha, pas facile à additionner

    essaye : CNUM(DROITE(A16;1)) qui renvoie un nombre

  3. #3
    Nouveau membre du Club
    Femme Profil pro
    Analyste
    Inscrit en
    Janvier 2024
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Canada

    Informations professionnelles :
    Activité : Analyste
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2024
    Messages : 5
    Par défaut
    Oh wow, ça fonctionne! Avoir su, j'aurais posé la question avant au lieu de chercher pendant beaucoup trop longtemps. Merci infiniment!



    Citation Envoyé par TOFatJOB Voir le message
    Bonjour,

    je pense que Droite(A16;1) renvoie une chaine alpha, pas facile à additionner

    essaye : CNUM(DROITE(A16;1)) qui renvoie un nombre

  4. #4
    Membre émérite Avatar de Alex020181
    Homme Profil pro
    Prestataire informatique développeur d'application Excel, Access, VBA
    Inscrit en
    Juin 2012
    Messages
    601
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Prestataire informatique développeur d'application Excel, Access, VBA

    Informations forums :
    Inscription : Juin 2012
    Messages : 601
    Par défaut
    Pour compléter

    DROITE(A16;1)*1 plus rapide à écrire pour le même résultat.

  5. #5
    Nouveau membre du Club
    Femme Profil pro
    Analyste
    Inscrit en
    Janvier 2024
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Canada

    Informations professionnelles :
    Activité : Analyste
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2024
    Messages : 5
    Par défaut
    Effectivement, ça fonctionne aussi.

    Pour ma compréhension, pourquoi est-ce que la formule ne considérait pas le contenu de mes cellules comme des chiffres? J'ai pourtant pris la peine de mettre le format Nombre partout. Merci!


    Citation Envoyé par Alex020181 Voir le message
    Pour compléter

    DROITE(A16;1)*1 plus rapide à écrire pour le même résultat.

  6. #6
    Membre émérite Avatar de Alex020181
    Homme Profil pro
    Prestataire informatique développeur d'application Excel, Access, VBA
    Inscrit en
    Juin 2012
    Messages
    601
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Prestataire informatique développeur d'application Excel, Access, VBA

    Informations forums :
    Inscription : Juin 2012
    Messages : 601
    Par défaut
    Il faut distinguer 2 choses.

    Tu as le format de la valeur ET le format de la cellule.

    En gros et en prenant des raccourcis.

    Le format de la cellule ne sert que pour l'affichage utilisateur (séparateurs de milliers, ....) mais ne converti pas le format de la valeur de la cellule.

    Le format de la valeur c'est autre chose. Excel fait la différence entre un format texte ("tata", "toto", "tati") et un format nombre (1, 2, 3). Selon la source de tes données (exemple extraction d'un autre logiciel) il peut considérer tes nombres (1,2, 3) comme étant au format texte ("1", "2", "3") même si pour l'être humain cela reste des nombres.
    De plus tu utilises la fonction DROITE. Le résultat de cette fonction est, pour Excel, du texte même si pour l'être humain c'est un nombre.

    Il te faut donc convertir cette valeur de sortie reconnue comme du texte en valeur de sortie format nombre. C'est ce que fait la fonction CNUM proposée plus tôt (CNUM = Convertir en NUMérique). Ou avec une multiplication par 1.

    Excel ne pourra pas faire une somme de valeur reconnues comme texte.

    De même il ne fait pas l'égalité "1" = 1

    Donc une rechercheV (par exemple) dont la clé est reconnue comme texte "1" d'un côté et comme numérique 1 de l'autre ne fonctionnera pas non plus

    Tu remarqueras que dans une cellule Excel sans formatage particulier les valeurs reconnues comme du texte ("1", "2", "3") s'alignent à gauche tandis que les valeurs reconnues comme des nombres (1, 2, 3) s'alignent à droite.

    Soit la valeur de départ 123 à laquelle je veux extraire le dernier caractère qui est, pour l'être humain, un nombre.
    J'ai reporté en ligne 1 les formules utilisées. Tu vois comment Excel considère la sortie de la formule en vérifiant l'alignement de la valeur résultat.

    Nom : Sans titre.png
Affichages : 85
Taille : 5,1 Ko

    Soit la valeur de départ 123 de laquelle je veux extraire le dernier caractère.
    En ligne 1 la formule appliqué et regarde la différence de format de la ligne 2 pour la même valeur



    Enfin, et pour compliquer le tout, si tu as une valeur "1" reconnue comme un texte dans une cellule et que tu la réactualises en pointant dedans par double clique puis avec entrée Excel convertira, si possible, la valeur en numérique (Pour ça également que ces 3 solutions convertiront "0001" en 1).

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

Discussions similaires

  1. formule somme.si.ens avec critére sur les dates
    Par AMEDDO79 dans le forum Excel
    Réponses: 15
    Dernier message: 10/02/2016, 10h35
  2. Problème de somme avec formule
    Par LARATRL2009 dans le forum Excel
    Réponses: 4
    Dernier message: 25/01/2009, 16h26
  3. Formule "somme.si" avec 2 conditions
    Par Line dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 28/11/2008, 23h11
  4. Formule somme si avec du texte.
    Par zeralium dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 05/09/2008, 16h59

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