• Initiateur de la discussion Initiateur de la discussion Tommy
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

T

Tommy

Guest
Salut a tous !

Voici un autre probleme pour vous !

J'entre des code en A6:A123. Une fois entrer, l'heure se log automatiquement dans la case suivante (B6:B123) avec ce code :

Private Sub Worksheet_Change(ByVal Target As Range)
With Target
If .Count > 1 Then Exit Sub
If Not Intersect(Range('Waybill'), .Cells) Is Nothing Then
Application.EnableEvents = False
If IsEmpty(.Value) Then
.Offset(0, 1).ClearContents
Else
With .Offset(0, 1)
.NumberFormat = 'dd Mmm yyyy hh:mm:ss'
.Value = Now
End With
End If
Application.EnableEvents = True
End If
End With
ThisWorkbook.Save
End Sub

Ensuite le workbook se sauvegarde. Ce que je veux ajouter aussi, c'est qu'excel pose la question 'Combiens de boite', tout de suite apres avoir entrer une donnée en A6:A123 avec une possibilité pour l'utilisateur d'y inscrire un nombre (exemple : 10) et qu'ensuite, une 2ieme question apparait 'Sur combiens' encore la avec la possibilité d'inscrire un nombre (exemple : 15) pour ensuite avoir ces 2 nombre entré dans la case correspondante E6:E123. Ce qui donnerais comme réponse 10/15. Et est-il possible d'avoir par defaut le chiffre 1 d'inscript dans le champs de réponse (le champs ou on peut y inscrire le nombre de la question)?

J'espere etre un peu clair, car je ne suis pas le roi de l'expliquation !

Merci encore a vous.
 
Bonjour
Après .Value = now

With .Offset(0, 2)
nb = ''
While nb = ''
nb = InputBox('Combien de boites?', 'Nombre de Boites')
If IsNumeric(nb) = False Then nb = ''
Wend
.Value = nb
End With
With .Offset(0, 3)
nb1 = ''
While nb1 = ''
nb1 = InputBox('Sur combien?', 'Nombre de Boites')
If IsNumeric(nb1) = False Then nb1 = ''
If nb1 < nb Then nb1 = ''
Wend
.Value = nb1
End With


A+
 
Tommy, ce n'est pas une bonne chose de placer un EnableEvents = False dans une macro événementielle, tu bloques ainsi d'autres événements qui seront peut-être nécessaires à la bonne mise à jour de ta feuille en arrière-plan.
Je te conseille plutôt de placer un boolean en début de macro qui teste si cette macro est en train de tourner ou non, comme ceci :

'en début de module
Dim OnIt as Boolean

Private Sub Worksheet_Change(ByVal Target As Range)
If OnIt then Exit Sub
OnIt = True
'...ta macro
'...
OnIt = False
End Sub

C'est plus simple et plus élégant, que demander de mieux...
 
Bonjour

With .Offset(0, 2)
nb = ''
While nb = ''
nb = InputBox('Combien de boites?', 'Nombre de Boites')
If IsNumeric(nb) = False Then nb = ''
Wend
.Value = ''' & nb
nb1 = ''
While nb1 = ''
nb1 = InputBox('Sur combien?', 'Nombre de Boites')
If IsNumeric(nb1) = False Then nb1 = ''
If nb1 < nb or nb1=0 Then nb1 = ''
Wend
.Value = .value & '/' & nb1
End With

doit marcher
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
14
Affichages
484
  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
1 K
  • Question Question
Microsoft 365 Probléme VBA
Réponses
8
Affichages
588
Retour