MsgBox sous condition

Résolu/Fermé
Zauri90 - 24 juin 2010 à 11:10
Le Pingou Messages postés 12035 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 1 avril 2024 - 1 juil. 2010 à 16:05
Bonjour,

Sous Excel 97 sous VBA, je veux faire apparaitre un messages sous certaine condition avec MsgBox .

J ai 3 ComboBox et 2 TextBox, je veut que le message apparaisse que lorsque que une personne choisi exactement les même chose qu une autres personnes.

C est a dire, si untel choisi dans les 3 comboBox le chiffres 5 pour les 3 et dans les 2 TextBox les dates 01/01/2010 et que une autres personnes choisi exactement les mêmes quantité a la même dates je veut cas ce moment la le message apprait.

Je ne sais pas quel code utilisé pour faire cette réalisation

Merci



13 réponses

Le Pingou Messages postés 12035 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 1 avril 2024 1 425
24 juin 2010 à 14:45
Bonjour,
Juste au passage.
Pouvez-vous mettre une copie du code que vous utilisez pour copier les données des 3 ComboBox et 2 TextBox sur la feuille du classeur ?
0
Voila mon Code:


Private Sub CommandButton1_Click()
Dim trouve, trouve1, trouve2, trouve3 As Range
Dim premcol, dercol, col, premlig, derlig, i As Integer
Dim Rng As String
If UserForm1.ComboBox3.Value = "" Or UserForm1.ComboBox4.Value = "" Or UserForm1.ComboBox5.Value = "" Or UserForm1.ComboBox6.Value = "" Then
MsgBox "Tous les champs sont obligatoires"
Exit Sub
End If
With Sheets(UserForm1.ComboBox3.Value).Rows(3)
Set trouve = .Cells.Find(UserForm1.ComboBox6.Value)
If trouve Is Nothing Then
MsgBox "Utilisateur non trouvé"
Else
premcol = trouve.Column
dercol = trouve.Offset(0, 1).Column - 1
End If
End With
With Sheets(UserForm1.ComboBox3.Value)
Rng = .Range(.Cells(4, premcol), .Cells(4, dercol)).Address
End With
With Sheets(UserForm1.ComboBox3.Value).Range(Rng)
Set trouve1 = .Cells.Find(UserForm1.ComboBox4.Value)
If trouve1 Is Nothing Then
MsgBox "Matériel non trouvé"
Else
col = trouve1.Column
End If
End With
With Sheets(UserForm1.ComboBox3.Value).Columns(3)
Set trouve2 = .Cells.Find(CDate(UserForm1.TextBox1.Value))
If trouve2 Is Nothing Then
MsgBox "erreur de date de retrait"
Else
premlig = trouve2.Row
End If
Set trouve3 = .Cells.Find(CDate(UserForm1.TextBox2.Value))
If trouve3 Is Nothing Then
MsgBox "erreur de date de restitution"
Else
derlig = trouve3.Row
End If
End With
With Sheets(UserForm1.ComboBox3.Value)
For i = premlig To derlig
.Cells(i, col).Value = CInt(UserForm1.ComboBox5.Value)
Next i
End With



If UserForm1.ComboBox6.Value = "Réparation" Or UserForm1.ComboBox6.Value = "Etalonnage" Or UserForm1.ComboBox6.Value = "Prêt" Then
UserForm2.Show
End If

Set trouve = Nothing
Set trouve1 = Nothing
Set trouve2 = Nothing
Set trouve3 = Nothing



Unload UserForm6
End Sub
0
Le Pingou Messages postés 12035 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 1 avril 2024 1 425
29 juin 2010 à 15:34
Bonjour,
Merci pour le code.
J'ai bien les 4 Combobox3,4,5 et 6, soit une de plus que les 3 mentionnées, et les 2 TextBox 1 et 2 mais il est impossible de trouvé un référence qui me permette de détecter une même combinaison de critères.
Désolé.
0
C pas grave je v me débrouiller autrement
0
Le Pingou Messages postés 12035 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 1 avril 2024 1 425
29 juin 2010 à 16:01
Bonjour,
Peut-être qu'une explication plus détaillée me permettrait de vous aider !
0
Merci pour votre aide mais j ai décider de faire autrement avec un système plus facile
0
Par contre j ai un autre problème sur une de mes comBobox qui n a rien avoir a celui la es que vous pourriez m aider ?
0
Le Pingou Messages postés 12035 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 1 avril 2024 1 425
29 juin 2010 à 17:27
Bonjour,
Oui , qu'elle est le problème ou que voulez-vous réaliser ?
0
je voudrais comparer la date Système au date qui apparaisse dans une de mes comboBox.
C est a dire si la date est antérieur a la date système elle n apparait pas dans la comboBox mais si elle n est pas encore passer alors la elle apparait .

Je voudrais connaître le code pour pouvoir réaliser ceci
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Le Pingou Messages postés 12035 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 1 avril 2024 1 425
29 juin 2010 à 23:12
Bonjour,
Vous parlez de [ComboBox1] qui est une zone de liste déroulante qui contient des dates.
Donc lorsque vous sélectionnez une date on va contrôler cette date et si elle est antérieur à la date système (date du jour) on remplace par un vide.

Voici le code à mettre dans le module du formulaire (Userform):
Private Sub ComboBox1_Change()
If Me.ComboBox1 = "" Then Exit Sub ' sortir si pas de date
If CDate(Me.ComboBox1) < Date Then
' date est antérieur
    Me.ComboBox1.Value = ""
End If
End Sub
0
J ai un message d erreur qui apparait avec marquer: erreur de compilation Projet ou bibliothèque introuvable .
Et ComboBox1 surligner en BLEU

Sur cette phrase:: If CDate(Me.ComboBox1) < Date Then
0
Le Pingou Messages postés 12035 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 1 avril 2024 1 425
30 juin 2010 à 10:51
Bonjour,
Il manque la/les référence/s [Microsoft Excel 12.0 (ou 11.0) Object Library] / [Microsoft Forms 2.0 Object Library] pour le [VBAProject].
1.- ouvrir [Votre classeur.xls] puis touche Alt+F11 pour ouvrir l'éditeur VBA
2.- Sur Outils clic Références
3.- Cocher la/les référence/s citée/s ci-dessus.
0
sa ne marche toujours pas y a le même messages d erreur
0
Mais j ai une des cases de cocher ou y a marquer: MANQUANT: Microsoft calendar control 11.0
0
Es que vous auriez une solution a mon problème ?
0
Le Pingou Messages postés 12035 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 1 avril 2024 1 425
30 juin 2010 à 16:59
Bonjour,
En principe le code que vous m'avez demandé n'as pas besoin de cette référence [MANQUANT: Microsoft calendar control 11.0].
Je veux bien regarder se qui se passe, mettre une copie de votre classeur sur : https://www.cjoint.com/ et poster le lien.
0
Voici le lien je veut faire ce que je vous ai demandées sous l userform 4 . ComboBox11

http://www.cijoint.fr/cjlink.php?file=cj201006/cijOTUtPQM.xls
0
Le Pingou Messages postés 12035 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 1 avril 2024 1 425
30 juin 2010 à 22:23
Bonjour,
Pas facile de comprendre les diverses démarches. J'ai fait un essai avec un prêt du 10.6.2010 au 15.7.2010 et les indications son correctes dans la feuille [Expo pro].
Par contre si je fais une restitution anticipé il me donne une erreur su la date de retrait [Combobox11] qui est vide. Il me semble que ce n'est pas correct car vous devriez avoir la date de restitution qui doit être postérieur à la date système ..... ?
Pour le reste tout marche correctement sans la référence [Microsoft calendar control 11.0].
0
Voila actuellement en restitution anticipé j ai toutes les dates qui apparaisse ou il y a eu du retrait de matériel et donc je veut juste qu il n y ai que les dates postérieurs a la dates systèmes qui apparaisse dans la comboBox 11 .
Bien sur si c possible.
Sans votre code mon système marche et la comboBox 11 aussi mais j ai toutes les dates de l année ou y a eu du matériel retiré qui apparaisse.

Merci
0
Le Pingou Messages postés 12035 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 1 avril 2024 1 425
Modifié par Le Pingou le 30/06/2010 à 23:39
Bonjour,
Oui d'accord, mais sans un brin d'explication de votre part sur le fonctionnement de votre application se serait plus simple pour moi ....
Pour ceci :
Sans votre code mon système marche et la comboBox 11 aussi mais j ai toutes les dates de l année ou y a eu du matériel retiré qui apparaisse.
Le code à été réaliser pour contôler la date affichée dans la zone de liste et non pas la liste elle même dont je n'ai encore pas réussi à trouver sa provenance.
Et cela dépend aussi ou vous avez placer mon code....

Salutations.
Le Pingou
0
J ai placer votre code sous l userform 4-comboBox 11 la partie restitution anticipée sert a restituée du matériel a une dates antérieur a la date de restitution initialement prévu .
Donc dans la partie restitution anticipée a date de retrait il va apparaître toutes les dates ou il y a eu du matériel retiré pour toutes l année.

Mais moi je veut juste que dans cette comboBox n apparaisse que les dates qui seront postérieurs a la dates systèmes pour ne pas avoir toutes les dates de l années
0
Le Pingou Messages postés 12035 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 1 avril 2024 1 425
1 juil. 2010 à 11:17
Bonjour,
Eh bien oui, avec cette explication c'est clair que mon code n'est pas conçu pour cela.
Je vais regarder comment réaliser un code conforme à votre demande
0
Ok merci bon courage
0
Le Pingou Messages postés 12035 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 1 avril 2024 1 425
1 juil. 2010 à 14:21
Bonjour,
J'ai supprimer l'ancien code dans la procédure [Private Sub ComboBox11_Change()].
J'ai introduit le nouveau, il est signaler entre ******* dans la procédure [Private Sub ComboBox8_Change]
Votre dossier : http://www.cijoint.fr/cjlink.php?file=cj201007/cij6BG6Ydz.xls
A vous la découverte.
0
Désoler mais sa ne marche pas y a un truc qui bloque y a marquer : la méthode sheets de l objet global a échouer
0
Le Pingou Messages postés 12035 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 1 avril 2024 1 425
Modifié par Le Pingou le 1/07/2010 à 15:11
Bonjour,
Cela ne marche pas ne veux rien dire.
Alors allez sur débogage et ou se touve l'erreur dans la procédure ?
Note: votre classeur fonctionne correctement chez moi, je teste toujours avant mise à disposition.
Salutations.
Le Pingou
0
Laissez tombé j ai réussi merci
0
Le Pingou Messages postés 12035 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 1 avril 2024 1 425
Modifié par Le Pingou le 1/07/2010 à 16:06
Bonjour,
A bon d'accord, je le retiens pour une prochaine.
Sans commentaire.

Salutations.
Le Pingou
0