Excel Downloads
Forum

Précédent   Excel Downloads Forums > Archives > Forum Excel Downloads - Archives

Advertisement

 
 
LinkBack Outils de la discussion
Vieux 02/02/2005, 17h09   #1 (permalink)
David
Guest
 
Messages: n/a
Par défaut MsgBox "vous n'avez pas renseigner tel champ"

Bonjour à tous,

Comment faire comprendre par une macro, que lorsque on est en train de saisir des données à l'intérieur de la plage A1:F10 et si on a ommis de saisir une donnée en B7 alors une msgBox s'ouvre "Vous n'avez pas renseigner tel champ" ?

merci çà tous,
David.
 
ANNONCES
Vieux 02/02/2005, 17h26   #2 (permalink)
Hervé
Guest
 
Messages: n/a
Par défaut Re: MsgBox "vous n'avez pas renseigner tel champ"

Bonjour

Une proposition :

Public Sub vev()
Dim c As Range
Dim message As String
message = "Cellules non remplies :"
For Each c In Range("a1:f10")
If c = "" Then message = message & vbCrLf & c.Address(RowAbsolute:=False, ColumnAbsolute:=False)
Next c
MsgBox message
End Sub

Salut
Hervé
 
Vieux 02/02/2005, 17h34   #3 (permalink)
@+Thierry
Guest
 
Messages: n/a
Par défaut Re: MsgBox "vous n'avez pas renseigner tel champ"


Bonjour David, Hervé, le Forum

Une autre approche de celle d'Hervé, qui propose de lancer un contrôle une fois la saisie finie, qui se base sur une Macro évènementielle sur chaque changement dans la plage...

A placer dans le Private Module de la Feuille en question (pas dans un module standard)

Const Msg As String = "Vous n'avez pas renseigné la cellule : "

Private Sub Worksheet_Change(ByVal Target As Range)
If Application.Intersect(Target, Range("A1:F10")) Is Nothing Then Exit Sub

If Target.Value = "" Then Exit Sub

On Error Resume Next
   If Target.Offset(0, -1) = "" Then MsgBox Msg & Target.Offset(0, -1).Address: Exit Sub
   If Target.Offset(-1, 0) = "" Then MsgBox Msg & Target.Offset(-1, 0).Address

End Sub


Cette macro offre l'avantage de traîter l'oubli en temps réél, par contre c'est sûrement assez stressant pour l'utilisateur !

Bon Après Midi
@+Thierry
 
Vieux 02/02/2005, 18h12   #4 (permalink)
David
Guest
 
Messages: n/a
Par défaut Re: MsgBox "vous n'avez pas renseigner tel champ"

Bonjour Hervé et Thierry

Voici mon exemple Zipé

En fait mon classeur est constitué de plusieurs plage de cellule (comme celle a1/f10) à l'intérieur même de la feuille.

L'intêret serait que lorsque l'on quitte la plage a1/f10 pour une autre et si la cell b7 n'a pas était renseignée, alors la msgbox s'affiche..

Est-ce possible ?

Merci, david.
Fichiers attachés
Type de fichier : zip RenseignerTelChamp.zip (5,3 Ko, 3 affichages)
 
Vieux 02/02/2005, 18h40   #5 (permalink)
@+Thierry
Guest
 
Messages: n/a
Par défaut Re: MsgBox "vous n'avez pas renseigner tel champ"


re Bonjour David, Hervé, le Forum

En fait alors il faudrait faire une sorte de "Mix" entre la proposition d'Hervé et la mienne...

Par contre il faudrait que tu définisses clairement quelles cellules doivent être renseignées car manifestement selon ton exemple, ce ne sont pas toutes les cellules de A1 à F10 mais simplement "B7"...

Option Explicit


Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim Message As String
Dim Cell As Range
If Not Application.Intersect(Target, Range("A1:F10")) Is Nothing Then Exit Sub

&nbsp; &nbsp; For Each Cell In Range("A2,A4,C2,C4,B6:B7,E7") '<<<< a définir ici...
&nbsp; &nbsp; &nbsp; &nbsp; If Cell = "" Then Message = Message & vbCrLf & Cell.Address(0, 0)
&nbsp; &nbsp; Next Cell

&nbsp; &nbsp; If Message <> "" Then
&nbsp; &nbsp; &nbsp; &nbsp; MsgBox "Cellules non remplies :" & vbCrLf & Message, vbCritical
End If
End Sub

Par ailleurs pour ta connaissance, j'ai remarqué que tu avais tenté de mettre en Private Module la Sub "vev()" d'Hervé en Private Module de la Feuille "Feuil1", mais dans ce genre de Module on ne met normalement que des Macros évènementielles...

A propos de Macros évènementielles, tu noteras que cette fois ci je me base sur l'évènement "Worksheet_SelectionChange" ...

Bonne Soirée
@+Thierry
 
Vieux 02/02/2005, 18h49   #6 (permalink)
Hervé
Guest
 
Messages: n/a
Par défaut Re: MsgBox "vous n'avez pas renseigner tel champ"

re David

Bonsoir thierry

En somme tu veux interdire le déplacement en dehors de la zone a1:f10 si la cellule b7 est vide.

Alors essaye ceci :

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Application.Intersect(Target, Range("a1:f10")) Is Nothing Then
If Range("b7") = "" Then
MsgBox "Merci de remplir la cellule B7"
Range("b7").Select
End If
End If
End Sub

A placer dans le module de la feuille et non dans un module standard.

Salut
Hervé
 
Vieux 02/02/2005, 18h52   #7 (permalink)
Hervé
Guest
 
Messages: n/a
Par défaut Re: MsgBox "vous n'avez pas renseigner tel champ"

re

oups désolé Thierry je n'avais pas vu ta réponse (apparement on n'a vu sensiblement la même chose).

Désolé pour le téléscopage.

Salut
Hervé
 
ANNONCES
 

Liens sociaux

Outils de la discussion

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are oui
Pingbacks are oui
Refbacks are oui


Fuseau horaire GMT +2. Il est actuellement 14h11.


(C) 2006 Excel Downloads