Somme de valeurs numériques issues d'une saisie grâce à un USF
f894009 Messages postés 17417 Date d'inscription Statut Membre Dernière intervention -
Lorsque j'ouvre ma feuille Excel sur laquelle les données ont été enregistrées, je souhaiterai faire une addition des valeurs du type =SOMME(A1:A10)
Le résultat est "0"... Pourriez-vous m'aider à trouver une solution à mon problème ?
En vous remerciant !
Claire
- Somme de valeurs numériques issues d'une saisie grâce à un USF
- Saisie gestuelle iphone - Guide
- Comment saisir une adresse url - Guide
- Somme de plusieurs cellules excel - Guide
- Somme en anglais excel - Guide
- Liste deroulante excel avec saisie semi-automatique - Guide
7 réponses
Le problème porte sur une somme Excel où la fonction SOMME(A1:A10) renvoie 0 après ouverture de la feuille, malgré des données numériques supposées présentes dans la plage ciblée. Des explications possibles incluent des valeurs stockées en texte plutôt qu'en numérique, des contrôles de saisie en texte ou des macros VBA qui transforment ou interfèrent avec les formats des cellules. Parmi les remèdes proposés, il est recommandé de vérifier le type des données, d’assurer que les saisies soient numériques et d’envisager tests de saisie ou une adaptation de VBA pour normaliser les valeurs. D'autres points évoqués incluent l'usage éventuel de contrôles en temps réel et la gestion des interactions multi-utilisateurs pour éviter des incohérences de saisie et synchroniser les données.
A quoi sert la msgbox avec reponse oui puisque que vous ecrivez quand meme dans le cellules??
Une fois en texte si oui et une autre fois en numerique !!!
Afin de faire des stats, j'ai besoin d'additionner ces valeurs. Donc par exemple, j'ai ma ligne 2 ayant les données issues de la saisie de l'USF, sur une autre feuille je fais le fameux =SOMME(Feuil1!D2:Y2) cette plage de cellules ne contient que du nombre. Et là je ne comprend pas, j'ai un résultat =0
J'ai essayé aussi le plus lourd =SOMME(Feuil1!D2+E2...+Y2) là ça marche mais uniquement si j'ai une valeur dans chaque cellule de cette plage, alors que dans les faits je n'ai que 2 ou 3 cellules qui comportent quelque chose en moyenne. J'ai alors le résultat =#VALEUR! qui apparaît...
Rectification, fichier modifie pour textbox vide ou non vide et numerique
https://www.cjoint.com/c/GBuvIEQjxJf
A+
Après avoir testé le dernier fichier,
Si j'oublie de remplir une combobox , un msgbox "Attention : erreur de saisie ou pas de saisi" devrait apparaitre mais pour le coup ça n'a pas l'air de fonctioneer, après saisie et clic sur modifier, voici le message d'erreur : "Erreur d'éxécution 438 Propriété ou méthode non gérée par cet objet"
débogage indique :
'---------------------Controle de saisie non vide Combobox--------------------
If Me.Controls("Cbx_P" & Idx) = "" Then
MultiPage1.Pages(Idx - 1).Value = 1
Me.Controls("Cbx_P" & Idx).SetFocus
MsgBox "Attention: erreur de saisie ou pas de saisie!"
Exit Sub
End If
Next Idx
'-----------
la ligne en jaune est la suivante
MultiPage1.Pages(Idx - 1).Value = 1
'POUR AFFICHER UN MSG AVERTISSANT DE L'OUBLI DE LA SAISIE DE LA QUALITE D'UN POSTE
' deux solutions pour gérer un oubli de saisie de la combobox
' ajouter un "InputBox" qui permettra de saisir directement la valeur oubliée.
' ajouter un "MsgBox" indiquant seulement l'oubli.
'EXEMPLE AVEC INPUTBOX
If Me.ComboBox00.Value = "" Then
Me.ComboBox00.Value = InputBox("Indiquer la qualité du poste 1", "OUBLI POSTE 1")
End If
'EXEMPLE AVEC %SGBOX
' Si la valeur de la ComboBox est vide alors...
If Me.ComboBox00.Value = "" Then
'insérer MsgBox "TEXTE DU MSGBOX" / TRIANGLE PT EXCLAMATION / "TITRE DU MSGBOX"
MsgBox "Indiquer la qualité du poste 1", vbExclamation, "OUBLI POSTE 1"
Exit Sub
End If
Qu'en pensez-vous ? J'ai peur de toucher au code, tellement vous l'avez bien rédigé ! J'aurai à ce sujet plein de questions sur sa compréhension mais on verra plus tard bien entendu
Je regarde la chose.
Qu'en pensez-vous ?
Normalement, s'il y a une combobox vide, message et ensuite selection de la page du multipage et focus sur la combobox. Donc pas besoin d'autre chose
Suite:
fichier modifie: https://www.cjoint.com/c/GBvgJXfxBgf
A+
Justement question sécurité :
est-t'il possible de protéger le code ? Je m'explique, je ne serai pas seule à utiliser ce fichier, je souhaite que mes opératrices ne peuvent avoir accès uniquement au formulaire à partir de la page accueil du fichier. (j'insérerai un controle avec macro vers le formulaire depuis la page accueil plus tard)
Pas de soucis, je vous fais ca: protection feuilles et code; P'etre que je vous donnerai les mots de passe
Suite:
fichier avec protection feuilles et code
https://www.cjoint.com/c/GBvkllwCeNf
PW feuille: Claire
PW code: 1982
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionFichier avec le minimum d'objets dans UF1:
_ai ajoute controle saisie textbox en temps reel, seuls des chiffres sont pris en compte
_ai ajoute differents tests pour eviter les monstres
_ai optimise les lignes de code vu votre Lazytium4

a vous de tester
https://www.cjoint.com/c/GCco0yqg1nf
Restrerait la partie combobox qualite controle temps reel si vide ou portnawak, ai pas encore trouve solution sur changement de page
Question de detail, est-ce que le fichier sera utilise par plusieurs personnes en meme temps pour le ou les memes saisies?
le fichier sera utilisé par une seule personne par saisie. Le dernier fichier a l'air ok meme si j'ai l'impression que ça bug, soit mes yeux ne sont pas encore ouverts, soit les données ne s'affichent pas tout le temps dans les textbox lorsque l'on consulte un jour précédent.
Essayer de consulter le 02/01/17, puis le 04/01/17 sur un poste vide, revenez ensuite sur poste 1 du 02/01/17 il apparait vide...
Les titres des pages restent "enfoncés" ce qui ne facilite pas la vue de quelle page on utilise. Est t'il possible d'ajouter une zone de texte pour chaque page afin de préciser le libellé long du poste ? Oar exemple poste 1 est le libellé court et "poste de l'équipe bleue" est le libellé long.
Merci beaucoup !
Si vous utilisez le fichier que je viens de vous mettre a dispo, y a deux couleurs pour les pages, vert/vert plus fonce: page selectionnee et jaune claire pages non selectionnees
Z'etes pas daltonienne?
Est t'il possible d'ajouter une zone de texte pour chaque page afin de préciser le libellé long du poste ?
Oui, donnez les libelles longs
soit les données ne s'affichent pas tout le temps dans les textbox lorsque l'on consulte un jour précédent
Si vous changez de jour, il faut recliquer pour mettre a jour les textbox avec les nouvelles infos de la page selectionnee (j'ai d'ailleur oublie de faire une raz des textboxs sur changement de jour)
Si vous voulez que ca marche comme avant (rafraichiisement de la page active), dites le
Le premier but etait la diminution de taille du fichier, 182ko au lieu de 777ko c'est pas mal
Donc nous pouvons continuer
ahah non je ne pense pas être daltonienne (du moins pas encore...) en fait je souhaiterais que vous m'expliquiez pourquoi le vert clair et le vert foncé ? Quelle est la différence ? J'ai essayé le vert clair en sélectionnant plusieurs pages pensant qu'une saisie pourrait incrémenter l'ensemble des pages sélectionnées mais non ça ne marche pas donc pourriez vous m'expliquer la différence entre vert clair et foncé s'il vous plaît.
Ce travail comportant des données clients et entreprise je ne peux malheureusement pas vous donner le libellé des postes, pourriez-vous m'indiquer la marche à suivre pour ajouter une zone de texte ou du moins la modifier. Il en est de même pour l'intitulé des postes des pages (ça je sais qu'il faut toucher au Caption)
recliquer pour mettre a jour les textbox avec les nouvelles infos de la page selectionnee
ok j'ai compris ! :-) si le fait de rafraîchir alourdit le fichier "lourdement" alors c'est ok je suis preneuse de cette version !
Très beau travail encore !!!
Je vous remercie et dans l'attente d'ouvrir votre prochain fichier, je vous souhaite un bon réveil au vu de l'heure qu'il est en métropole !
Claire
Bien reveillee ce soir.
Ce sont des ToggleButton pour le choix des postes, mais dans la version que je finalise, ils sont remplaces par des labels (couleurs plus "lisibles"), si vous avez des couleurs preferees dites le(normalement il faut des couleurs vives et tranchees, ex: Vert/Rouge ou Vert/Bleu en changeant aussi la couleur du texte)
ok j'ai compris ! :-) si le fait de rafraîchir alourdit le fichier "lourdement" alors c'est ok je suis preneuse de cette version !
Non, pas de probleme de lourdeur, je vous fais ca: rafraichissement de la page active ou par defaut j'active la page 1 c'est vous qui choisissez
la marche à suivre pour ajouter une zone de texte ou du moins la modifier
Le label pour le libelle long est en place et je fais le code pour ecrire ce libelle
Concernant les labels je pourrai modifier le nom dans les propriétés Caption ? Pour les couleurs, vert qd sélectionné, et si possible un jaune se rapprochant de la couleur de l'image de fond "papier ancien" quand pas sélectionné.(un jaune un peu plus foncé histoire de le dépareiller du papier ancien. La couleur du texte noir Gras qd sélect et Normal qd pas sélectionné.
Et pour le reste, par défaut, activation de la page1 s'il vous plait.
Merci encore, vraiment !
Bonne fin de journée à vous !
Option Explicit 'Activation de la déclaration explicite des variables Dim Ws As Worksheet 'Correspond au programme du bouton QUITTER Private Sub CommandButton1_Click() Unload Me End Sub Private Sub CommandButton3_Click() 'LE BOUTON NOUVEAU CONTACT Dim L As Integer Dim x As Integer If MsgBox("Etes-vous certain de vouloir INSERER ce nouveau contact ?", vbYesNo, "Demande de confirmation") = vbYes Then 'condition : si oui au message L = Sheets("Feuil1").Range("A65536").End(xlUp).Row + 1 'COMBOBOX DATE Range("A" & L).Value = ComboBox1 Range("B" & L).Value = TextBox1 Range("C" & L).Value = TextBox2 Range("D" & L).Value = TextBox3 End If Feuil1.Range("B" & L).Value = CInt(TextBox1) Feuil1.Range("C" & L).Value = CInt(TextBox2) Feuil1.Range("D" & L).Value = CInt(TextBox3) 'pour transformer la valeur de la ComboBox en Date Feuil1.Range("A" & L).Value = CDate(ComboBox1) ' Affiche une boîte de message MsgBox ("Produit inséré dans fichier sélectionné") 'Vous informant que le présent contact est insérer dans votre tableau Excel. Unload Me ' Vide et ferme l'Userform ( formulaire) UserForm1.Show 'Affiche le formulaire End Sub Private Sub CommandButton4_Click() 'Correspond au bouton supprimer 'Supprimer la ligne sélectionnée Dim L As Long If Me.ComboBox1.ListIndex = -1 Then Exit Sub L = Me.ComboBox1.ListIndex + 2 Ws.Rows(L).Delete End Sub Private Sub CommandButton5_Click() UserForm2.Show End Sub 'Correspond au programme du FORULAIRE 'Cet évènement est important car il permet de définir les propriétés des objets et les valeurs par défaut des variables, lors du lancement du Userform. Private Sub UserForm_Initialize() 'à l'initialisation de l'userform ' Déclaration des variables grâce à Dim ' 1° Choisir un nom ' 2° Choisir un TYPE (= définir la nature du contenu) ' -------------------------------------------------------- Dim J As Long 'déclare la variable J Dim i As Integer ' Affecter une valeur à une variable (= fixer la valeur de la variable) Set Ws = Sheets("Feuil1") 'Attention ce nom doit correspondre au nom de votre ONGLET 'On stock le nom de la feuille "Feuil1" dans une variable nommée WS With Me.ComboBox1 'Ici on indique la colonne voulue comme début du tableau, j'ai choisis ici la 1ère colonne soit A comme point de départ de mon tableau For J = 2 To Ws.Range("A" & Rows.Count).End(xlUp).Row .AddItem Ws.Range("A" & J) Next J End With For i = 1 To 184 'on lance une boucle de valeur mini 1 et maxi 8 c'est à dire qu'il y a 8 colonnes dans mon formulaire Me.Controls("TextBox" & i).Visible = True 'affiche les données dans les textbox Next i End Sub 'Correspond au programme du bouton MODIFIER Private Sub CommandButton2_Click() If MsgBox("Etes-vous certain de vouloir modifier ce produit ?", vbYesNo, "Demande de confirmation") = vbYes Then Dim Ligne As Long Dim i As Integer If Me.ComboBox1.ListIndex = -1 Then Exit Sub 'On sort si pas de sélection Ligne = Me.ComboBox1.ListIndex + 2 For i = 1 To 184 'parcqu'il y a 8 colonnes dans mon formulaire If Me.Controls("TextBox" & i).Visible = True Then Ws.Cells(Ligne, i + 1) = Me.Controls("TextBox" & i) End If Next i End If 'fin de la condition End Sub 'Correspond au programme de la LISTE DEROULANTE Private Sub ComboBox1_Change() Dim Ligne As Long Dim i As Integer If Me.ComboBox1.ListIndex = -1 Then Exit Sub Ligne = Me.ComboBox1.ListIndex + 2 For i = 1 To 184 'parcqu'il y a 8 colonnes dans mon formulaire Me.Controls("TextBox" & i) = Ws.Cells(Ligne, i + 1) Next i End SubExplications disponibles ici : ICI
Merci d'y penser dans tes prochains messages.