Ouvrir un userform si case pleine

Signaler
Messages postés
6
Date d'inscription
mercredi 6 février 2008
Statut
Membre
Dernière intervention
29 janvier 2009
-
Messages postés
21
Date d'inscription
dimanche 10 juin 2007
Statut
Membre
Dernière intervention
28 décembre 2008
-
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

Messages postés
181
Date d'inscription
mardi 18 novembre 2008
Statut
Membre
Dernière intervention
4 février 2011

Hello,

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

BR

USERRRQI115
Simple user
Great brain
Messages postés
21
Date d'inscription
dimanche 10 juin 2007
Statut
Membre
Dernière intervention
28 décembre 2008

 


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


 
Messages postés
21
Date d'inscription
dimanche 10 juin 2007
Statut
Membre
Dernière intervention
28 décembre 2008

J'oubliais, il faut bien sûr que tu es pris la précaution de créer un UserForm nommé ici UserForm1.
Messages postés
6
Date d'inscription
mercredi 6 février 2008
Statut
Membre
Dernière intervention
29 janvier 2009

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
Messages postés
21
Date d'inscription
dimanche 10 juin 2007
Statut
Membre
Dernière intervention
28 décembre 2008

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


 
Messages postés
6
Date d'inscription
mercredi 6 février 2008
Statut
Membre
Dernière intervention
29 janvier 2009

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
Messages postés
21
Date d'inscription
dimanche 10 juin 2007
Statut
Membre
Dernière intervention
28 décembre 2008

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