Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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.
 

pierrejean

XLDnaute Barbatruc
Re : Formule de calcul dans un userform

Re

Vérifie que pour les 45 premiers salariés le N° de SS est bien en format Spécial N° de sécurité sociale et non en format texte
C'est la seule explication qui me vienne à l'esprit
 

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
339
Réponses
6
Affichages
391
Réponses
4
Affichages
470
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…