Fonction "SOMME"
Résolu/Fermé
reidid3563
Messages postés
27
Date d'inscription
jeudi 4 mars 2021
Statut
Membre
Dernière intervention
9 avril 2021
-
31 mars 2021 à 22:22
Utilisateur anonyme - 10 avril 2021 à 10:52
Utilisateur anonyme - 10 avril 2021 à 10:52
A voir également:
- Fonction "SOMME"
- Fonction si et - Guide
- Formule somme excel colonne - Guide
- Somme si couleur - Guide
- Fonction moyenne excel - Guide
- Fonction filtre excel n'existe pas - Forum Excel
5 réponses
Utilisateur anonyme
2 avril 2021 à 19:41
2 avril 2021 à 19:41
Bonjour,
vous avez plusieurs routines en VBA (boutons 1, 2, 3 et 4) qui font strictement la même chose mais en tout cas pas un calcul somme !
et une cinquième qui permet juste d'afficher le UserForm.
Quant aux routines associées aux boutons du userform, elles se contentent de masquer/afficher des onglets mais toujours pas de calcul de sommes.
Vous demndez de saisir une valeur avec l'input et ensuite vous n'en faites rien ! Si la date saisie doit être affectée à la cellule B1, il suffit d'écrire :
Dans un input, on entre n'importe quoi (du texte). En supposant que le texte saisi est bien au format d'une date, il faut le convertir avec la fonction DateValue : https://docs.microsoft.com/fr-fr/office/vba/language/reference/user-interface-help/datevalue-function
Sinon, comme la fonction Date retourne automatiquement la date du jour, il suffirait d'écrire
Il n'y aura pas d'avertissement mais est-ce important ?
Donc, en l'état, rien d'étonnant à ce que ça ne fonctionne pas !
A moins que j'ai mal compris votre demande !!??
vous avez plusieurs routines en VBA (boutons 1, 2, 3 et 4) qui font strictement la même chose mais en tout cas pas un calcul somme !
et une cinquième qui permet juste d'afficher le UserForm.
Quant aux routines associées aux boutons du userform, elles se contentent de masquer/afficher des onglets mais toujours pas de calcul de sommes.
Sub Bouton1_Clic() Dim valeur As Date valeur = InputBox("merci de saisir la date d'enregistrement", "ALERTE", "saisir la date du jour ici") Range("B1").Value = Date userform1.Show End Sub
Vous demndez de saisir une valeur avec l'input et ensuite vous n'en faites rien ! Si la date saisie doit être affectée à la cellule B1, il suffit d'écrire :
Sub Bouton1_Clic() Range("B1").Value= InputBox("merci de saisir la date d'enregistrement", "ALERTE", "saisir la date du jour ici") userform1.Show End Sub
Dans un input, on entre n'importe quoi (du texte). En supposant que le texte saisi est bien au format d'une date, il faut le convertir avec la fonction DateValue : https://docs.microsoft.com/fr-fr/office/vba/language/reference/user-interface-help/datevalue-function
Sinon, comme la fonction Date retourne automatiquement la date du jour, il suffirait d'écrire
Sub Bouton1_Clic() Range("B1").Value = Date userform1.Show End Sub
Il n'y aura pas d'avertissement mais est-ce important ?
Donc, en l'état, rien d'étonnant à ce que ça ne fonctionne pas !
A moins que j'ai mal compris votre demande !!??
reidid3563
Messages postés
27
Date d'inscription
jeudi 4 mars 2021
Statut
Membre
Dernière intervention
9 avril 2021
2 avril 2021 à 23:38
2 avril 2021 à 23:38
bonjour,
pour répondre à vos différents points, tout d'abord mes 4 boutons correspondent à 4 unités différentes pour mon organisation. Chaque bouton est associé à 3 onglets visibles. Exemple pour l'unité A, onglets: "Stock avant commande A", "Stock à réintégrer A" et "COMMANDE A", les autres étant masqués car non concernés par l'unité en question. Mon objectif étant que chaque unité renseigne son propre onglet "Stock avant commande" et que les 2 autres ("Stock à réintégrer" et COMMANDE") se calculent automatiquement. Mes sommes se font donc sur ces 2 onglets et pour lesquels j'avais écrit mes formules . Exemple, la valeur de la cellule H5 de l'onglet "Stock à réintégrer" correspond à la valeur de la cellule AQ5 - H5 de l'onglet "Stock avant commande". L'onglet "COMMANDE" se calculant lui aussi en fonction des résultats précédemment cités. A la fermeture de l'onglet on renseigne la date afin de vérifier par la suite qu'ils ont bien été renseignés à une date déterminée qui servira par la suite à la personne qui passera la commande globale. J'espère avoir formulé au mieux ma demande.
merci
pour répondre à vos différents points, tout d'abord mes 4 boutons correspondent à 4 unités différentes pour mon organisation. Chaque bouton est associé à 3 onglets visibles. Exemple pour l'unité A, onglets: "Stock avant commande A", "Stock à réintégrer A" et "COMMANDE A", les autres étant masqués car non concernés par l'unité en question. Mon objectif étant que chaque unité renseigne son propre onglet "Stock avant commande" et que les 2 autres ("Stock à réintégrer" et COMMANDE") se calculent automatiquement. Mes sommes se font donc sur ces 2 onglets et pour lesquels j'avais écrit mes formules . Exemple, la valeur de la cellule H5 de l'onglet "Stock à réintégrer" correspond à la valeur de la cellule AQ5 - H5 de l'onglet "Stock avant commande". L'onglet "COMMANDE" se calculant lui aussi en fonction des résultats précédemment cités. A la fermeture de l'onglet on renseigne la date afin de vérifier par la suite qu'ils ont bien été renseignés à une date déterminée qui servira par la suite à la personne qui passera la commande globale. J'espère avoir formulé au mieux ma demande.
merci
Bonjour,
Je comprends mieux : je croyais qu'il s'agissait d'un problème avec les macros !
En regardant l'exemple que vous citez, on voit que la formule de la cellule H5 de l'onglet "Stock à réintégrer A" est =SOMME('Stock avant commande A'!AQ5)-'Stock avant commande A'!H5 . On peut tout simplement corriger par ='Stock avant commande A'!AQ5-'Stock avant commande A'!H5 ET surtout, réactiver le calcul automatique dans les options d'Excel
Je comprends mieux : je croyais qu'il s'agissait d'un problème avec les macros !
En regardant l'exemple que vous citez, on voit que la formule de la cellule H5 de l'onglet "Stock à réintégrer A" est =SOMME('Stock avant commande A'!AQ5)-'Stock avant commande A'!H5 . On peut tout simplement corriger par ='Stock avant commande A'!AQ5-'Stock avant commande A'!H5 ET surtout, réactiver le calcul automatique dans les options d'Excel
reidid3563
Messages postés
27
Date d'inscription
jeudi 4 mars 2021
Statut
Membre
Dernière intervention
9 avril 2021
6 avril 2021 à 11:40
6 avril 2021 à 11:40
bonjour,
merci beaucoup pour votre aide, cela fonctionne à présent,j'ai modifié comme vous me l'avez recommandé!
j'avais juste un dernier petit souci à régler, associé à mes boutons unités, j'ai un bouton impression. Avec celui-ci et pour chaque unité, je souhaite que les impression des 2 onglets "Stock à réintégrer" et COMMANDE" se fasse.
cela ne fonctionne pas pour tout les boutons, pouvez-vous me guider, sachant que ma commande est la suivante:
Private Sub Cmd_Imprs_A_Click()
Worksheets(Array("COMMANDE A", "Stock à réintégrer A")).Select
Application.Dialogs(xlDialogPrint).Show
End Sub
je vous remercie
merci beaucoup pour votre aide, cela fonctionne à présent,j'ai modifié comme vous me l'avez recommandé!
j'avais juste un dernier petit souci à régler, associé à mes boutons unités, j'ai un bouton impression. Avec celui-ci et pour chaque unité, je souhaite que les impression des 2 onglets "Stock à réintégrer" et COMMANDE" se fasse.
cela ne fonctionne pas pour tout les boutons, pouvez-vous me guider, sachant que ma commande est la suivante:
Private Sub Cmd_Imprs_A_Click()
Worksheets(Array("COMMANDE A", "Stock à réintégrer A")).Select
Application.Dialogs(xlDialogPrint).Show
End Sub
je vous remercie
Utilisateur anonyme
Modifié le 7 avril 2021 à 08:33
Modifié le 7 avril 2021 à 08:33
Bonjour,
A priori, ça ne fonctionne pas lorsque les feuilles sont masquées.
Pour bien faire, avant donc d'appeler le .select, il faudrait :
1) tester si les feuilles sont visibles
2) si pas visibles alors mémoriser l'état
3) rendre visible
4) Sélectionner
5) Afficher la boîte de dialogue
6) Remettre invisible
On peut aussi ne pas s'embêter : mémoriser l'état/rendre visible (même si déjà visible)/sélectionner/afficher le dialogue/remettre à l'état initial. Ce qui donne :
PS : il serait judicieux d'écrire des procédures génériques auxquelles on passe des paramètres.
Par exemple ici Sub Impression(feuille1, feuille2)... ou feuille1 et 2 pourraient être les noms des feuilles.
On pourrait alors l'appeler dans chacune des commandes :
Private Sub Cmd_Imprs_A_Click()
Call impression("COMMANDE A", "Stock à réintégrer A")
End Sub
</code>
Votre programme serait plus facile à maintenir !
A priori, ça ne fonctionne pas lorsque les feuilles sont masquées.
Pour bien faire, avant donc d'appeler le .select, il faudrait :
1) tester si les feuilles sont visibles
2) si pas visibles alors mémoriser l'état
3) rendre visible
4) Sélectionner
5) Afficher la boîte de dialogue
6) Remettre invisible
On peut aussi ne pas s'embêter : mémoriser l'état/rendre visible (même si déjà visible)/sélectionner/afficher le dialogue/remettre à l'état initial. Ce qui donne :
Private Sub Cmd_Imprs_A_Click() Dim étatCommande As Boolean, étatStock As Boolean étatCommande = Worksheets("COMMANDE A").Visible étatStock = Worksheets("Stock à réintégrer A").Visible Worksheets("COMMANDE A").Visible = True Worksheets("Stock à réintégrer A").Visible = True Worksheets(Array("COMMANDE A", "Stock à réintégrer A")).Select Application.Dialogs(xlDialogPrint).Show Worksheets("COMMANDE A").Visible = étatCommande Worksheets("Stock à réintégrer A").Visible = étatStock End Sub
PS : il serait judicieux d'écrire des procédures génériques auxquelles on passe des paramètres.
Par exemple ici Sub Impression(feuille1, feuille2)... ou feuille1 et 2 pourraient être les noms des feuilles.
On pourrait alors l'appeler dans chacune des commandes :
Private Sub Cmd_Imprs_A_Click()
Call impression("COMMANDE A", "Stock à réintégrer A")
End Sub
</code>
Votre programme serait plus facile à maintenir !
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
reidid3563
Messages postés
27
Date d'inscription
jeudi 4 mars 2021
Statut
Membre
Dernière intervention
9 avril 2021
9 avril 2021 à 21:16
9 avril 2021 à 21:16
bonsoir,
un grand merci pour votre aide, cela fonctionne correctement en appliquant la méthode:
"mémoriser l'état/rendre visible (même si déjà visible)/sélectionner/afficher le dialogue/remettre à l'état initial"
un grand merci pour votre aide, cela fonctionne correctement en appliquant la méthode:
"mémoriser l'état/rendre visible (même si déjà visible)/sélectionner/afficher le dialogue/remettre à l'état initial"