Formule de calcul dans un userform

benadry

XLDnaute Occasionnel
Bonjour le forum,


Je sollicite votre aide, car je sèche sur une formule de calcul dans un userform.

En fait, je voudrais que si l'agent a au moins 58 ans, la valeur "Oui ?" de la ligne "Retraite ?" soit affichée par défaut.

En détail, je demande à la macro d'aller chercher les 2e et 3e chiffres du numéro de Sécurité Sociale du salarié, d'ajouter 19 devant (exemple : 1 52 01 99 120 001), ça donne "1952", puis de soustraire 2014 à 1952 et de voir si ça fait au moins 58. Si oui, la valeur "oui ?" dans retraite se met par défaut.

J'ai essayé avec l'enregistreur de macro, puis diverses formules, mais cela ne fonctionne pas !

Or, dans le classeur Excel, la formule marche très bien.

Voici un fichier test.

Si quelqu'un pouvait m'aider ...

Merci d'avance.

Cordialement.
 

Pièces jointes

  • Classeur12.zip
    20.7 KB · Affichages: 37
  • Classeur12.zip
    20.7 KB · Affichages: 24
  • Classeur12.zip
    20.7 KB · Affichages: 29

benadry

XLDnaute Occasionnel
Re : Formule de calcul dans un userform

Bonjour Pierre-Jean,

Merci pour ta réponse, qui me convient très bien.

Mais, quand je la transpose dans mon fichier, ça ne marche pas.

J'ai peut-être une explication : j'ai dû simplifier mon fichier test, mais dans la réalité, les données "Salarié" ne sont pas liées à une combobox, mais à un textbox.

Je ne pensais pas que ça avait de l'importance, car je croyais passer par des formules directement dans le userform.

Est-ce là que ça pose problème ?

En fait, j'ai remplacé ta macro :

Code:
Private Sub ComboBox11_Change()
Me.TextBox9 = ""
For n = 2 To Sheets("Feuil3").Range("E" & Rows.Count).End(xlUp).Row
 If Sheets("Feuil3").Range("E" & n) = Me.ComboBox11 Then
   ss = Sheets("Feuil3").Range("B" & n)
   annee_naiss = CInt("19" & Mid(ss, 2, 2))
   If 2014 - annee_naiss >= 58 Then Me.TextBox9 = "OUI"
 End If
Next
End Sub


Par celle-ci :

Code:
Private Sub Txt1_change()
Me.TextBox10 = ""
For n = 2 To Sheets("BD").Range("A" & Rows.Count).End(xlUp).Row
 If Sheets("BD").Range("A" & n) = Me.Txt1 Then
   ss = Sheets("BD").Range("C" & n)
   annee_naiss = CInt("19" & Mid(ss, 2, 2))
   If 2014 - annee_naiss >= 58 Then Me.TextBox10 = "OUI"
 End If
Next

End Sub

En effet, la feuille se nomme "BD", le nom du salarié est en colonne A au lieu de E dans l'exemple et le N° de SS est en C au lieu de B dans l'exemple.

Aurais-tu l'amabilité d'y jeter un coup d'oeil ?

Merci d'avance.

Cordialement.
 

benadry

XLDnaute Occasionnel
Re : Formule de calcul dans un userform

Rebonjour Pierre-Jean,

Je viens de tester avec l'ensemble de mes salariés (plus de 250) : en fait, la macro fonctionne à partir du 45e nom de ma liste alphabétique. Avant cela, elle met "oui" pour tout le monde ...

Si cela évoque quelque chose chez toi ...

Merci d'avance.

Bon appétit.
 

benadry

XLDnaute Occasionnel
Re : Formule de calcul dans un userform

Bonjour Pierre-Jean,
Bonjour le forum,

Désole de ne pas avoir répondu plus tôt : effectivement, c'était bien ça !

J'ai maintenant une autre question sur une autre formule de calcul dans le même userform.

J'ai complété ton code d'hier pour qu'un autre calcul se fasse à partir d'autres colonnes de mon tableau Excel.

Mes salariés ont, au maximum, trois enfants, dont les âges sont inscrits en colonnes R, S et T.

Je voudrais que si l'un des trois enfants a moins de 18 ans, la valeur de la Textbox9 soit "oui".

J'ai trouvé le code suivant :

Code:
Private Sub Txt1_change()
Me.TextBox10 = ""
For N = 2 To Sheets("BD").Range("A" & Rows.Count).End(xlUp).Row
 If Sheets("BD").Range("A" & N) = Me.Txt1 Then
   ss = Sheets("BD").Range("C" & N)
   annee_naiss = CInt("19" & Mid(ss, 2, 2))
   If 2014 - annee_naiss >= 58 Then Me.TextBox10 = "Oui ?"
 End If
'Next

'For N = 2 To Sheets("BD").Range("A" & Rows.Count).End(xlUp).Row
 'If Sheets("BD").Range("A" & N) = Me.Txt1 Then
   dd = Sheets("BD").Range("R" & N)
   ee = Sheets("BD").Range("S" & N)
   ff = Sheets("BD").Range("T" & N)
 If (Now - dd) < (18 * 365.25) Or (Now - ee) < (18 * 365.25) Or (Now - ff) < (18 * 365.25) Then Me.TextBox9.Value = "Oui"
 'End If
Next

End Sub

Le problème est que la réponse est toujours "oui", que l'agent ait ou non des enfants, et quel que soit leur âge.

Aurais-tu l'amabilité d'y regarder encore une fois ?

Merci d'avance.

Cordialement.
 

Discussions similaires

Réponses
4
Affichages
378
Réponses
6
Affichages
427
Réponses
4
Affichages
499

Statistiques des forums

Discussions
314 495
Messages
2 110 215
Membres
110 706
dernier inscrit
debby.f1