Si cellule vide alors

  • Initiateur de la discussion Initiateur de la discussion spwww
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

S

spwww

Guest
Bonjour à tous
je me permet de venir vous voir pour vous exposer un petit soucis.
J'ai un fichier dans lequel l'utilisateur doit insérer le nom et prénom d'une personne et répondre à une série de question.
Je souhaiterais simplement que lorsque l'utilisateur n'a pas fini de répondre à la série de question pour la Personne 1, il ne puisse pas saisir un second nom et commencer à répondre pour un autre utilisateur. A noter que le nombre d'utilisateur à questionner est inconnu

En fichier joint un fichier simplifié et annoté avec ce que je souhaiterais retranscrire
J'ai déjà fouiné par ci par là pour trouver mais les réponses ne correspondaient pas à ma demande ...
en vous remerciant d'avance de l'aide que vous m'apportez
 

Pièces jointes

Dernière modification par un modérateur:
Re : Contrôle de saisie selon conditions

Bonjour.
Ceci dans le module de la feuille:
VB:
Option Explicit
Dim Ligne As Long
'
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim Plg As Range
If Ligne <> 0 And Ligne <> Target.Row Then
   Set Plg = Me.Cells(Ligne, 2).Resize(, 6)
   If WorksheetFunction.CountA(Plg) < 6 Then
      Application.EnableEvents = False
      Plg.SpecialCells(xlCellTypeBlanks).Select
      Application.EnableEvents = True
      MsgBox "Complétez cette ligne"
      Exit Sub
      End If
   End If
Ligne = Target.Row
If Ligne <= 5 Then Ligne = 0
End Sub
Remarque: plus besoin de la colonne H
À +
 
Dernière édition:
Re : Si cellule vide alors

merci de ta réponse dranreb,
le fait d'avoir déjà un worksheet_change sur le fichier d'origine a l'air de poser problème
cela peut - il être possible?
Il m'ignore totalement le worksheet_selectionChange
 
Re : Si cellule vide alors

Non, un Worksheet_Change à coté ne devrait pas gêner s'il laisse l'endroit aussi propre en sortant... je veux dire s'il ne laisse pas Application.EnableEvents à False
Joignez un exemple de classeur où ça ne marche pas, que je puisse étudier d'où ça vient.
 
Re : Si cellule vide alors

Voila j'ai mis à jour le fichier
mon worksheet_change insère des cellules venues de la Feuil3 (dès lors qu'il y a quelque chose dans la colonne B) , l'utilisateur est amené à tapé "o" ou "n" respectivement pour oui ou non dans chaque cellule.
Le nombre de question passe à 36 pour ressembler à mon fichier d'origine, il faudra donc modifier
Set Plg = Me.Cells(Ligne, 2).Resize(, 6)
If WorksheetFunction.CountA(Plg) < 6 Then
normalement?

merci dranreb de m'accorder un peu de ton temps 🙂
 

Pièces jointes

Re : Si cellule vide alors

CFomme ça, ça semble marcher:
VB:
Option Explicit
Dim Ligne As Long
'
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim Plg As Range
If Ligne <> 0 And Ligne <> Target.Row Then
   Set Plg = Me.Cells(Ligne, 3).Resize(, 38)
   If WorksheetFunction.CountA(Plg) < 38 Then
      Application.EnableEvents = False
      Plg.SpecialCells(xlCellTypeBlanks).Select
      Application.EnableEvents = True
      MsgBox "Complétez cette ligne"
      Exit Sub
      End If
   End If
Ligne = Target.Row
If Ligne <= 3 Then Ligne = 0
End Sub
'
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Column < 3 And Target.Count = 1 Then
        If Target.Row > 2 Then
            If Target.Column = 2 And Target.Value <> "" Then
                If Target.Offset(, 1) = "" Then Worksheets("Feuil3").Range("A1:AL1").Copy Destination:=Target.Offset(, 1)
            End If
        End If
    End If
End Sub
À+
 
Re : Si cellule vide alors

Bonjour le fil, bonjour le forum,

Peut-être comme ça :
Code:
Private test As Boolean 'déclare la variable test
 
Private Sub Worksheet_Change(ByVal Target As Range)
Dim cel As Range 'déclare la variable cel (CELlule)
 
If Selection.Count > 1 Or test = True Then Exit Sub 'si selection de plus d'une seule cellule ou si test est vrai, sort de la procédure
If Target.Column <> 2 Or Target.Row < 3 Then Exit Sub 'si changement ailleurs qu'en colonne B ou dans les lignes 1 et 2, sort de la procédure
 
If Target.Row > 3 Then 'condition 1 : si la ligne est supérieure à 3
    For Each cel In Range(Cells(Target.Row - 1, 2), Cells(Target.Row - 1, 40)) 'boucle sur toutes les cellules des colonnes B à AN de la ligne au dessus
        If cel.Value = "" Then 'condition 2 : si la cellule est vide
            test = True 'définit la variable test
            Target.ClearContents 'supprime le "NOM PRENOM" de la colonne B
            MsgBox "Vous devez renseigner cette cellule !" 'message
            cel.Select 'sélectionne la cellule vide
            test = False 'redéfinit la variable test
            Exit Sub 'sort de la procédure
        End If 'fin de la condition 2
    Next cel 'prochaine cellule de la boucle
End If 'fin de la condition 1
 
If Target.Offset(0, 1) = "" Then 'condition : si la cellule à coté du "NOM PRENOM" édité est vide
    Worksheets("Feuil3").Range("A1:AL1").Copy Destination:=Target.Offset(0, 1) 'copie et colle
    Target.Offset(0, 1).Select 'sélectionne la cellule à coté
End If 'fin de la condition
End Sub
Le fichier :
 

Pièces jointes

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
20
Affichages
3 K
Réponses
8
Affichages
1 K
Retour