Faire la somme des valeurs qui sont renvoyées par un userform
Bonjour,
J'ai un petit problème.
j'ai créé un userform dans lequel sont saisies des données en chiffre. Elles sont renvoyées sur ma feuille excel. jusque là pas de problème.
En revanche impossible de faire la somme de la colonne. Le résultat est toujours 0.
Merci pour votre aide.
Bonjour
Un exemple de ton fichier serait utile pour résoudre ton problème
Crdlt
Bonjour,
voici le code de mon userforme (fichier trop volumineux ) :
Private Sub DTPicker_debut_change()
'envoyer la valeur dans une cellule spécifique
Sheets("BD").range("C3") = DTPicker_debut
End Sub
Private Sub DTPicker_fin_change()
'envoyer la valeur dans une cellule spécifique
Sheets("BD").range("d3") = DTPicker_fin
Me.TextBox_temps = Sheets("BD").range("E3")
TextBox_temps.Value = Hour(Feuil1.range("E3").Value) & ":0" & Minute(Feuil1.range("E3").Value) & ":0" & Second(Feuil1.range("E3").Value)
End Sub
Private Sub DTPicker1_CallbackKeyDown(ByVal KeyCode As Integer, ByVal Shift As Integer, ByVal CallbackField As String, CallbackDate As Date)
End Sub
Private Sub TextBox_temps_Change()
TextBox_temps.Enabled = False
End Sub
Private Sub UserForm_initialize()
'Création d'une ligne déroulante via une base de donnée
Set ws = Sheets("BD")
With Me.ComboBox_poste
For J = 2 To ws.range("B" & Rows.Count).End(xlUp).Row
.AddItem ws.range("B" & J)
Next J
End With
Set ws = Sheets("BD")
With Me.ComboBox_coman
For J = 2 To ws.range("A" & Rows.Count).End(xlUp).Row
.AddItem ws.range("A" & J)
Next J
End With
DTPicker_date = Now()
With Application
.WindowState = xlMaximized
Width = .Width
Height = .Height
End With
End Sub
Private Sub CommandButton_MNV_Click()
Dim ligne As Integer
'message automatique si les champs ne sont pas remplis
If DTPicker_date = "" Or ComboBox_coman = "" Or ComboBox_poste = "" Or TextBox_MNV = "" Or DTPicker_debut = "" Or DTPicker_fin = "" Or TextBox_refoulement = "" Then
MsgBox ("Toutes les informations ne sont pas remplis")
Exit Sub
End If
'Message automatique pour confirmation avant validation et Saisie des manoeuvres dans la base de donnée
If MsgBox("Confirmez-vous l'enregistrement du programme de manoeuvres ?", vbYesNo, "confirmation") = vbYes Then
ligne = Sheets("MANOEUVRES").[A5].End(xlDown).Row + 1
Sheets("MANOEUVRES").range("a" & ligne) = CDate(DTPicker_date)
Sheets("MANOEUVRES").range("b" & ligne) = ComboBox_coman
Sheets("MANOEUVRES").range("c" & ligne) = ComboBox_poste
Sheets("MANOEUVRES").range("d" & ligne) = TextBox_MNV
Sheets("MANOEUVRES").range("e" & ligne) = CDate(DTPicker_debut)
Sheets("MANOEUVRES").range("f" & ligne) = CDate(DTPicker_fin)
Sheets("MANOEUVRES").range("g" & ligne) = TextBox_temps
End If
Unload Me
'Message pour enregistre un deuxième programme de MNV
If MsgBox("Souhaitez-vous enregistrer un autre programme de manoeuvres?", vbYesNo, "confirmation") = vbYes Then
UserForm1.Show
End If
End Sub
Private Sub CommandButton_MNV2_Click()
'Retour sans action quitter le formulaire
Unload Me
End Sub
Ci - dessous le tableau correspondant qui se trouve sur la feuille "manoeuvres" :
C'est la somme de la colonne "Nombre de manoeuvre" qui ne se fait pas.
| ENREGISTREMENT DES PROGRAMMES DES MANŒUVRES | ||||||||
| DATE | COMAN | POSTE | NOMBRE DE MANŒUVRE | HEURE DEBUT | HEURE FIN | TEMPS DE MANŒUVRES | Semaine | Mois |
| 01/02/22 | LAETITIA ROUANET | APRES-MIDI | 1 | 14:10:00 | 14:50:00 | 00:40:00 | 6 | Février |
| 01/02/22 | BENZINE KAOINI | NUIT | 7 | 22:30:00 | 01:45:00 | 03:15:00 | 6 | Février |
| 01/02/22 | LAETITIA ROUANET | APRES-MIDI | 3 | 15:00:00 | 17:32:00 | 02:32:00 | 6 | Février |
| 01/02/22 | LAETITIA ROUANET | APRES-MIDI | 5 | 19:00:00 | 22:00:00 | 3:00:00 | 6 | Février |
| 02/02/22 | REMY RUIZ | MATIN | 9 | 11:45:00 | 18:00:00 | 06:15:00 | 6 | Février |
| 02/02/22 | LAETITIA ROUANET | APRES-MIDI | 3 | 14:00:00 | 15:30:00 | 01:30:00 | 6 | Février |
| 02/02/22 | LAETITIA ROUANET | APRES-MIDI | 3 | 16:30:00 | 18:00:00 | 01:30:00 | 6 | Février |
| 02/02/22 | LAETITIA ROUANET | APRES-MIDI | 3 | 16:30:00 | 18:00:00 | 01:30:00 | 6 | Février |
| 02/02/22 | BENZINE KAOINI | NUIT | 9 | 23:10:00 | 03:25:00 | 04:15:00 | 6 | Février |
Merci pour ton aide
Bonjour,
voici le code de mon userforme (fichier trop volumineux ) :
Private Sub DTPicker_debut_change()
'envoyer la valeur dans une cellule spécifique
Sheets("BD").range("C3") = DTPicker_debut
End Sub
Private Sub DTPicker_fin_change()
'envoyer la valeur dans une cellule spécifique
Sheets("BD").range("d3") = DTPicker_fin
Me.TextBox_temps = Sheets("BD").range("E3")
TextBox_temps.Value = Hour(Feuil1.range("E3").Value) & ":0" & Minute(Feuil1.range("E3").Value) & ":0" & Second(Feuil1.range("E3").Value)
End Sub
Private Sub DTPicker1_CallbackKeyDown(ByVal KeyCode As Integer, ByVal Shift As Integer, ByVal CallbackField As String, CallbackDate As Date)
End Sub
Private Sub TextBox_temps_Change()
TextBox_temps.Enabled = False
End Sub
Private Sub UserForm_initialize()
'Création d'une ligne déroulante via une base de donnée
Set ws = Sheets("BD")
With Me.ComboBox_poste
For J = 2 To ws.range("B" & Rows.Count).End(xlUp).Row
.AddItem ws.range("B" & J)
Next J
End With
Set ws = Sheets("BD")
With Me.ComboBox_coman
For J = 2 To ws.range("A" & Rows.Count).End(xlUp).Row
.AddItem ws.range("A" & J)
Next J
End With
DTPicker_date = Now()
With Application
.WindowState = xlMaximized
Width = .Width
Height = .Height
End With
End Sub
Private Sub CommandButton_MNV_Click()
Dim ligne As Integer
'message automatique si les champs ne sont pas remplis
If DTPicker_date = "" Or ComboBox_coman = "" Or ComboBox_poste = "" Or TextBox_MNV = "" Or DTPicker_debut = "" Or DTPicker_fin = "" Or TextBox_refoulement = "" Then
MsgBox ("Toutes les informations ne sont pas remplis")
Exit Sub
End If
'Message automatique pour confirmation avant validation et Saisie des manoeuvres dans la base de donnée
If MsgBox("Confirmez-vous l'enregistrement du programme de manoeuvres ?", vbYesNo, "confirmation") = vbYes Then
ligne = Sheets("MANOEUVRES").[A5].End(xlDown).Row + 1
Sheets("MANOEUVRES").range("a" & ligne) = CDate(DTPicker_date)
Sheets("MANOEUVRES").range("b" & ligne) = ComboBox_coman
Sheets("MANOEUVRES").range("c" & ligne) = ComboBox_poste
Sheets("MANOEUVRES").range("d" & ligne) = TextBox_MNV
Sheets("MANOEUVRES").range("e" & ligne) = CDate(DTPicker_debut)
Sheets("MANOEUVRES").range("f" & ligne) = CDate(DTPicker_fin)
Sheets("MANOEUVRES").range("g" & ligne) = TextBox_temps
End If
Unload Me
'Message pour enregistre un deuxième programme de MNV
If MsgBox("Souhaitez-vous enregistrer un autre programme de manoeuvres?", vbYesNo, "confirmation") = vbYes Then
UserForm1.Show
End If
End Sub
Private Sub CommandButton_MNV2_Click()
'Retour sans action quitter le formulaire
Unload Me
End Sub
Ci - dessous le tableau correspondant qui se trouve sur la feuille "manoeuvres" :
C'est la somme de la colonne "Nombre de manoeuvre" qui ne se fait pas.
| ENREGISTREMENT DES PROGRAMMES DES MANŒUVRES | ||||||||
| DATE | COMAN | POSTE | NOMBRE DE MANŒUVRE | HEURE DEBUT | HEURE FIN | TEMPS DE MANŒUVRES | Semaine | Mois |
| 01/02/22 | LAETITIA ROUANET | APRES-MIDI | 1 | 14:10:00 | 14:50:00 | 00:40:00 | 6 | Février |
| 01/02/22 | BENZINE KAOINI | NUIT | 7 | 22:30:00 | 01:45:00 | 03:15:00 | 6 | Février |
| 01/02/22 | LAETITIA ROUANET | APRES-MIDI | 3 | 15:00:00 | 17:32:00 | 02:32:00 | 6 | Février |
| 01/02/22 | LAETITIA ROUANET | APRES-MIDI | 5 | 19:00:00 | 22:00:00 | 3:00:00 | 6 | Février |
| 02/02/22 | REMY RUIZ | MATIN | 9 | 11:45:00 | 18:00:00 | 06:15:00 | 6 | Février |
| 02/02/22 | LAETITIA ROUANET | APRES-MIDI | 3 | 14:00:00 | 15:30:00 | 01:30:00 | 6 | Février |
| 02/02/22 | LAETITIA ROUANET | APRES-MIDI | 3 | 16:30:00 | 18:00:00 | 01:30:00 | 6 | Février |
| 02/02/22 | LAETITIA ROUANET | APRES-MIDI | 3 | 16:30:00 | 18:00:00 | 01:30:00 | 6 | Février |
| 02/02/22 | BENZINE KAOINI | NUIT | 9 | 23:10:00 | 03:25:00 | 04:15:00 | 6 | Février |
Merci pour ton aide
Bonjour,
Les TextBox comme leur nom l'indique ne contiennent que du texte (même si leur contenu à une forte odeur de nombre...)
Il faut donc comme pour les dates bien penser à en convertir le contenu en nombre :
Sheets("MANOEUVRES").range("d" & ligne) = CInt(TextBox_MNV)A l'avenir pour passer du code VBA sur ce forum presser l'outil </> avant de coller le code
A+