Forcer saisie lors de l'execution d'une macro.

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 !

samimi94

XLDnaute Occasionnel
Bonjour le forum,

Je vous sollicite de nouveau pour trouver un moyen de forcer la saisie de certaines cellules avec msgbox pour rappeler aux utilisateurs qu'ils ont omis de remplir certaines données.

En fouillant sur les autres posts du forum, j'ai trouvé

Code:
If ActiveSheet.Range("$B$1") = "" Then

MsgBox "Merci de remplir toutes les cellules"

Exit Sub
End If

Ce code fonctionne mais que pour la cellule B1, du coup j'ai rajouté à la suite de ce code mes autres cellules mais ca ne fonctionne pas :

Code:
If ActiveSheet.Range("$A$1,$B$1,$F$1,$M$1") = "" Then

MsgBox "Merci de remplir toutes les cellules"

Exit Sub
End If

Merci pour votre aide.

Samimi.
 
Re : Forcer saisie lors de l'execution d'une macro.

Bonjour Samimi 🙂

Peut-être avec ceci:

Code:
If WorksheetFunction.CountA(ActiveSheet.Range("A1,B1,F1,M1")) < 4 Then
    MsgBox "Merci de remplir toutes les cellules"
    Exit Sub
End If

Bien à toi,

mth

Edit: re kjin 🙂
à la bourre moi, mais promis j'ai pas copié 😀
bise,
m
Edit2: Hello Fred0o 🙂
 
Dernière édition:
Re : Forcer saisie lors de l'execution d'une macro.

Bonjour Fred0o,

Nos messages se sont croisés.
Merci de t'être penché sur mon problème.

Le code de Kjin fonctionne bien.
Je vais tout de même essayer le tien également car je vois que c'est une autre façon de procéder.

Merci encore.

Samimi.
 
Re : Forcer saisie lors de l'execution d'une macro.

Bonjour à tous,

Je vois que le problème est déjà résolu mais je poste quand même ce que j'avais penser...

il faut sélectionner chaque cellule ou la plage de cellule où les réponses doivent etre inscritent et la nommer reponse.
VB:
Sub verifReponse()
Dim cell As Range, newrep As Boolean
newrep = True
While newrep = True
newrep = False
For Each cell In ActiveSheet.Range("reponse")
    If cell.Value = "" Then
        cell.Value = InputBox("Vous n'avez pas répondu à la question " & cell.Offset(0, -2) & Chr(10) & cell.Offset(0, -1))
        newrep = True
    End If
Next cell
Wend
End Sub

cela permet de répondre directement à la question sans que la personne est besoin de rechercher la question quelle aurait oublié.
 

Pièces jointes

Re : Forcer saisie lors de l'execution d'une macro.

Bonjour le forum, Niko 283,

Je viens de voir ta réponse et je te remercie de t'être également penché dessus.

Je trouve ton idée, super, mais je ne comprends pas comment je défini les champs obligatoires dans ce code.
Je n'ai pas trouvé à quoi correspondait le range "reponse".

Ce code me sélectionne bien les cellules obligatoire, mais ne reprend pas le bon intitulé de colonne.

Si tu as un moment pour m'expliquer comment cela tourne, je suis prenante.

Merci.

Samimi.
 
Re : Forcer saisie lors de l'execution d'une macro.

Bonsoir à tous, bonsoir samimi 🙂

En attendant le retour de notre ami niko 🙂, vois si cela peut te dépanner

Code:
Sub verifReponse()
Dim cell As Range, newrep As Boolean
newrep = True
While newrep = True
newrep = False
On Error GoTo sortie
For Each cell In ActiveSheet.Range("reponse").SpecialCells(xlCellTypeBlanks)
        cell.Select
        cell.Value = InputBox("Merci d'indiquer votre " & LCase(cell.Offset(-1, 0)))
        newrep = True
Next cell
Wend
sortie:
End Sub

Bonne soirée,

mth
 
Re : Forcer saisie lors de l'execution d'une macro.

Bonsoir Samimi,

dans le fichier tu trouveras un commentaire sur la maniere de nommer une zone ou sélection de zone.

Pour ce qui est du code j'y est mis des commentaires mais je pense que ton tableau sera plein de ligne donc il faudrat adapter le code pour faire la boucle sur la bonne ligne et non sur toutes les lignes du tableau
 

Pièces jointes

Re : Forcer saisie lors de l'execution d'une macro.

Bonsoir Niko283,

Merci pour ton aide.

Je ne trouve pas :

le Menu Insertion puis Nom puis Définir, dans le cadre Nom dans le classeur j'inscrit "reponse" puis Ok

J'ai bien sélectionné les cellules obligatoires et appliqué une couleur, après je bloque 🙁

Samimi
 
Re : Forcer saisie lors de l'execution d'une macro.

re 🙂

Pour répondre à ta question Samimi, tout le travail ayant été fait au préalable par Niko, la ligne:
Code:
Range("reponse").SpecialCells(xlCellTypeBlanks)

permet de ne sélectionner dans la zone nommée "reponse" que les celules vides (xlCellTypeBlanks).
Tu peux regarder l'aide Excel sur "SpecialCells", plusieurs cas possibles et très pratique 🙂

S'il n'y a pas de cellules vides dans la sélection, ce code provoque une erreur, d'où cette ligne juste avant:
Code:
On Error GoTo sortie

En cas d'erreur sur la ligne suivante, on va directement rejoindre "sortie".

Il n'y a pas de code dans "sortie", rien à faire dans ces cas là puisque toutes les cellules sont remplies, donc on tombe tout de suite sur Exit sub.

Bonne soirée 🙂

mth
 
Re : Forcer saisie lors de l'execution d'une macro.

Mth, Niko283,

Merci pour votre aide, votre patience et votre gentillesse.

Tes explications sont très claires.

J'ai réussi a appliqué de Niko283 à mon cas et je suis hyper ravie.
Je n'en demandais pas temps en ouvrant le post et au final j'obtiens mieux que ce que je souhaitais.

Grand merci à vous tous, et aussi à ce forum qui n'est égalé nulle part ailleurs.

Bonne soirée à tous.

Samimi.
 
- 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

Discussions similaires

Réponses
4
Affichages
243
Réponses
2
Affichages
169
Réponses
2
Affichages
154
  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
483
Retour