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

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.
 

mth

XLDnaute Barbatruc
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é :D
bise,
m
Edit2: Hello Fred0o :)
 
Dernière édition:

samimi94

XLDnaute Occasionnel
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.
 

nyko283

XLDnaute Occasionnel
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

  • Classeur1.xls
    27.5 KB · Affichages: 71
  • Classeur1.xls
    27.5 KB · Affichages: 79
  • Classeur1.xls
    27.5 KB · Affichages: 74

samimi94

XLDnaute Occasionnel
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.
 

samimi94

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

Re le forum,

Pour adapter le code de Niko283, dont je trouve le principe génial, voici un exemple de fichier de comment est présenté mon tableau.

Merci.

Samimi.
 

Pièces jointes

  • Saisie obligatoire.xlsx
    9.5 KB · Affichages: 65

mth

XLDnaute Barbatruc
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
 

nyko283

XLDnaute Occasionnel
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

  • Saisie%20obligatoire(1).xls
    40 KB · Affichages: 71

samimi94

XLDnaute Occasionnel
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
 

mth

XLDnaute Barbatruc
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
 

samimi94

XLDnaute Occasionnel
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.
 

Discussions similaires

Statistiques des forums

Discussions
312 538
Messages
2 089 396
Membres
104 158
dernier inscrit
obad