Ouvrir un userform si case pleine

p4uline Messages postés 6 Date d'inscription mercredi 6 février 2008 Statut Membre Dernière intervention 29 janvier 2009 - 16 déc. 2008 à 10:05
piloulac Messages postés 21 Date d'inscription dimanche 10 juin 2007 Statut Membre Dernière intervention 28 décembre 2008 - 17 déc. 2008 à 17:44
Bonjour ,

mon problème est je pense trés simple mais je n'arrive pas à le résoudre...

J'aimerai avoir une macro qui puisse ouvrir un userform si une case est pleine, sans bouton.

du style si "A1" est pleine alors ouverture du userform qui avec une liste déroulante obligera à remplir "C1"

Merci d'avance pour votre aide éventuelle






VaZy

7 réponses

userrrqi115 Messages postés 181 Date d'inscription mardi 18 novembre 2008 Statut Membre Dernière intervention 4 février 2011
16 déc. 2008 à 16:08
Hello,

Pour commencer qu'entends tu par pleine ? Est-ce "non vide" ?

BR

USERRRQI115
Simple user
Great brain
0
piloulac Messages postés 21 Date d'inscription dimanche 10 juin 2007 Statut Membre Dernière intervention 28 décembre 2008
17 déc. 2008 à 01:05
 


Dans l'arborescence "Microsoft Excel Objets" de ton projet ;
dans le module de la feuille ou tu veux tester ta cellule ;
dans la section "Worksheet",
colle ce code :


Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Application.ActiveWindow.ActiveCell.Row = 1 And _
    Application.ActiveWindow.ActiveCell.Column = 1 Then
        If Application.ActiveWindow.ActiveCell.Formula <> "" Then
        UserForm1.Show
        End If
    End If
End Sub


 
0
piloulac Messages postés 21 Date d'inscription dimanche 10 juin 2007 Statut Membre Dernière intervention 28 décembre 2008
17 déc. 2008 à 01:08
J'oubliais, il faut bien sûr que tu es pris la précaution de créer un UserForm nommé ici UserForm1.
0
p4uline Messages postés 6 Date d'inscription mercredi 6 février 2008 Statut Membre Dernière intervention 29 janvier 2009
17 déc. 2008 à 08:27
Bonjour, et merci pour vos réponse

" Pour commencer qu'entends tu par pleine ? Est-ce "non vide" ? "
C'est le changement d'état que je veux détecter, de vide à non-vide then apparition de l'userform

piloulac : imaginons que je veuille faire apparaitre un userform seulement quand une case de la colonne H change, comment puis je faire pour modifier ton code?

Merci d'avance
VaZy
0

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

Posez votre question
piloulac Messages postés 21 Date d'inscription dimanche 10 juin 2007 Statut Membre Dernière intervention 28 décembre 2008
17 déc. 2008 à 11:29
Ce code  teste aussi bien le passage de vide à nonvide que le passage de nonvide à nonvide différent.
Inconvénient : le test ne fonctionne que si on valide la cellule en colonne H par la touche Entrée. Si on utilise la souris pour sortir de la cellule testée ça ne marche pas et même ça occasionne des erreurs.

A copier dans un Module Worksheet

Private AncienneSaisie


Private Sub Worksheet_SelectionChange(ByVal Target As Range)
''Ici, on enregistre la valeur actuelle
AncienneSaisie = Application.ActiveWindow.ActiveCell.Text
End Sub




Private Sub Worksheet_Change(ByVal Target As Range)
Dim Lgn
''ceci marche seulement si on valide par "Entrée"
''le contenu d'une cellule dans la colonne H
If Application.ActiveWindow.ActiveCell.Column = 8 Then
Lgn = Application.ActiveWindow.ActiveCell.Row
Lgn = Lgn - 1
        If Lgn = 0 Then Exit Sub
            If ActiveSheet.Cells(Lgn, 8).Formula <> AncienneSaisie Then
            UserForm1.Show
            End If
End If
End Sub


 
0
p4uline Messages postés 6 Date d'inscription mercredi 6 février 2008 Statut Membre Dernière intervention 29 janvier 2009
17 déc. 2008 à 13:05
Etant donné que le fichier va etre remplie par un grand nombre de personnes, il est certain que toutes les personnes ne vont pas appuyer sur entree pour sortir de la case, c'est donc une solution que je ne peux envisager, il n'y a aucun autre moyen de le faire?

Merci en tout cas pour ta réponse

VaZy
0
piloulac Messages postés 21 Date d'inscription dimanche 10 juin 2007 Statut Membre Dernière intervention 28 décembre 2008
17 déc. 2008 à 17:44
OK Compris ton problème.
Ca devrait marcher.

après avoir créé un feuille nommée "compare" dans ton classeur
copie dans un Module Worksheet :

Private AncienneSaisie
Private LgnCours



'''Créer une feuille nommée "compare" dans votre classeur
'''Travaillez sur données contenues en colonne H de la "Feuil1"
''' Cette "Feuil1" doit être active


Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'' si on est pas en colonne H, on fait rien
If ActiveCell.Column <> 8 Then Exit Sub



'''sinon :
''on copie la colonne H vers feuille compare
Application.ActiveSheet.Columns(8).Copy
ThisWorkbook.Worksheets("compare").Cells(1, 1).PasteSpecial
Application.CutCopyMode = False
''Ici, on enregistre la valeur de la cellule  en cours
AncienneSaisie = ActiveCell.Text



''Ici, on récupère l'index de ligne en cours
LgnCours = ActiveCell.Row
End Sub


Private Sub Worksheet_Change(ByVal Target As Range)



''si la cellule était vide
If AncienneSaisie = "" Then
    ''et qu'elle l'est encore alors on fait rien
    If ActiveSheet.Cells(LgnCours, 8).Text = "" Then Exit Sub
    '''sinon, on affiche.
    UserForm1.Show
End If





''si la cellule créée est identique à l'initiale, on fait rien
If ActiveSheet.Cells(LgnCours, 8).Text = Sheets("compare").Cells(LgnCours, 1).Text Then Exit Sub
 '''sinon, on affiche.
 UserForm1.Show
End Sub
0
Rejoignez-nous