Question sur VBA excel

Résolu
eastpeople Messages postés 105 Date d'inscription dimanche 16 décembre 2007 Statut Membre Dernière intervention 11 novembre 2008 - 2 juin 2008 à 11:56
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 - 2 juin 2008 à 17:19
Bonjour, j'ai un petit problème sur un code
J'ai un userform avec une textbox act et ensuite 5 case à cocher avec 5textbox prix
Je voudrais que si la textbox act qui est renseignée existe déja alors une msg box apparait pour dire que cette activité existe deja.
Voila mon code sur la textbox

Private Sub Act_Change()
    If IsNumeric(Right(Act, 1)) Then
    'si Act est numérique (le dernier caractère entrée va être testé à chaque fois)
        erreur = MsgBox("Pas de numérique!", vbOKOnly + vbCritical, "ERREUR")
        'une MsgBox va apparaître
        If Len(Act) > 1 Then
            Act = Left(Act, Len(Act) - 1)
        Else
            Act = ""       'seul le caractère défectueux va être supprimé
        End If
    End If
End Sub

Et voila ce que j'ai trouvé à mettre, je crois que j'ai trouvé sur le forum.

    Dim Recherche As Range
   
    Set Recherche = Columns(" A ").Find(Act)
    If Not Recherche Is Nothing Then
        mess  = MsgBox (« Cette activité existe déjà », vbokonly + vbcritical, « ATTENTION »)
    End If

Mais je ne sais pas si cela est correct ni commen l'integrer.
Merci de votre aide

5 réponses

mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
2 juin 2008 à 12:53
Salut,

tu peux peut-être intégré ton code dans l'évènement Exit de ton TextBox.
Mais si tu dois faire la vérif sur tes 5 textbox, peut-être tout vérifer lors d'un clic sur un CommandButton.
Si une condition n'est pas bonne, tu n'exécute pas le code du bouton, mais affiche ton message

@++

le mystérieux chevalier,"Provençal, le gaulois"
Forum Office & VBA
3
eastpeople Messages postés 105 Date d'inscription dimanche 16 décembre 2007 Statut Membre Dernière intervention 11 novembre 2008
2 juin 2008 à 14:21
J'ai mis sous l'évenement exit cela marche très bien.
merci beaucoup Mortalino.
J'ai une autre petite question si cela est possible.
Je voudrais créer un bouton Modifier qui aurait une liste deroulante avec toutes les activités, suivant le choix de l'administrateur, je voudrais que le userform ADM s'ouvre avec soit que le textbox Act = à l'activité qu'il a choisit, soit le textbox Act ainsi que tout les prix.
Quel choix d'apres toi serait le mieux.
Dans les 2 cas je ne sais pas trop comment faire pour faire apparaitre ADM avec les valeurs recuperer dans excel??
Merci de votre aide
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
2 juin 2008 à 14:28
Humm pas facile car je n'ai pas tous les élements.
Si tu veux afficher toutes les Activités dans un ComboBox sans doublons, passe peut-être par une collection.

Car les collections génère une erreur en cas de doublons, suffit de l'occulter :

on local error resume next
dim i as long
dim cCol as new collection

For i = 2 To Range("A65536").End(xlUp).Row
    cCol.Add Range("A" & i).Value
Next i
On error Goto 0

For i = 1 to cCol.Count
    TonComboBox.AddItem cCol(i)
Next i

Est cela que tu veux ?

@++

le mystérieux chevalier,"Provençal, le gaulois"
Forum Office & VBA
0
eastpeople Messages postés 105 Date d'inscription dimanche 16 décembre 2007 Statut Membre Dernière intervention 11 novembre 2008
2 juin 2008 à 17:14
Heu je sais pas ce qu'est un doublons. Lol je suis nulle hein. Le truc c'est que j'ai deja une liste deroulante dans un autre userform je peux peut-être reprendre la même programmation et après reste plus qu'à trouver commen faire revenir l'activité.
0

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

Posez votre question
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
2 juin 2008 à 17:19
Un doublon c'est une donnée en double.
Par exemple, dans ta colonne A :

        A
1   Informatique
2   Sport
3   Bouffe
4   Informatique
etc..

Ben quand tu lis les données avec la boucle For Next, il vérifie chaque valeur. Si une est double (ou triple ou +) comme ici Informatique, elle ne se rajoutera pas dans la collection (d'ailleurs, ça me fait penser, j'ai oublié de metttre la clé dans le Add de la collection, obligatoire pour gérer les doublons)
Ensuite tu lis les données de la collection afin de les rajouter dans ton ComboBox.

Si c'est pas ça que tu veux, essaie de fournir + d'infos voir même un exemple concrêt

@++

le mystérieux chevalier,"Provençal, le gaulois"
Forum Office & VBA
0
Rejoignez-nous