Nombre de boite

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.
 

ERIC S

XLDnaute Barbatruc
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+
 

Ti_

Nous a quitté
Repose en paix
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...
 

ERIC S

XLDnaute Barbatruc
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
 

Discussions similaires

Statistiques des forums

Discussions
312 380
Messages
2 087 819
Membres
103 665
dernier inscrit
gjoanou