Obliger le remplissage d'une cellule

firechief

XLDnaute Junior
Bonjour à tous !
j'ai "encore" besoin de vos connaissances.:eek:
J'aimerais rendre la saisie d'une cellule obligatoire. (en fait la date) j'ai lu beaucoup de poste et j'ai retenu ceci :

(Alt + F11 et Double-cliquer sur ThisWorkBook)
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As
Boolean)
If [A1] = "" Then
[A1] = "."
Else
If [A1] = "." Then
MsgBox "La Cellule A1 n'est pas saisie"
Cancel = True
End If
End If
End Sub

Mais ca ne marche pas !:( j'ai essayé plusieurs fois de copier/coller ce texte mais sans résultat. Je sauvegarde et ferme mon fichier sans problèmes et surtout pas de messages et pourtant la cellule A1 est vide !

Avez-vous une idée ? :confused:

D'avance merci.
 

Papou-net

XLDnaute Barbatruc
Re : Obliger le remplissage d'une cellule

Bonjour à tous !
j'ai "encore" besoin de vos connaissances.:eek:
J'aimerais rendre la saisie d'une cellule obligatoire. (en fait la date) j'ai lu beaucoup de poste et j'ai retenu ceci :

(Alt + F11 et Double-cliquer sur ThisWorkBook)
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As
Boolean)
If [A1] = "" Then
[A1] = "."
Else
If [A1] = "." Then
MsgBox "La Cellule A1 n'est pas saisie"
Cancel = True
End If
End If
End Sub

Mais ca ne marche pas !:( j'ai essayé plusieurs fois de copier/coller ce texte mais sans résultat. Je sauvegarde et ferme mon fichier sans problèmes et surtout pas de messages et pourtant la cellule A1 est vide !

Avez-vous une idée ? :confused:

D'avance merci.

Bonjour firechief,

Peut-être qu'en modifiant ton code ainsi :

Code:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As
Boolean)
If [A1] = "" Then
   MsgBox "La Cellule A1 n'est pas saisie"
   Cancel = True
End If
End Sub

Espérant avoir répondu.

Cordialement.
 

Sly le globe trotter

XLDnaute Occasionnel
Re : Obliger le remplissage d'une cellule

Bonjour,

Il faut à mon avis déjà spécifier dans quel feuille le test doit être fait.

En modifiant légèrement ton code,
Code:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
If Sheets("Feuil1").Range("A1") = "" Then
    Sheets("Feuil1").Range("A1") = "."
Else
    If Sheets("Feuil1").Range("A1") = "." Then
        MsgBox "La Cellule A1 n'est pas saisie"
        Cancel = True
    End If
End If
End Sub

on affiche "." si la cellule A1 de la feuille 1 est vide avant l'enregistrement ou on affiche ton message si il y a le caractère "."
ça correspond à ce que tu cherches ?
 

firechief

XLDnaute Junior
Re : Obliger le remplissage d'une cellule

Hello !
merci des propositions et après essai voici :

Proposition de Papou-net, rien ne se passe ! :mad:
Proposition de Sly le globe trotter, il y a un point qui apparait dans le cellule A1, mais je peux sauvegarder et fermer sans message d'informations. :mad: Sur ce modèle, lorsque je veux le réouvrir, Excel me demande si je veux activer les macros. :confused:

Donc pour reprendre, j'ouvre VBA avec alt+F11, ensuite j'ouvre ThisWorkBook et je colle vos codes. C'est correcte ?

D'avance merci
 

Sly le globe trotter

XLDnaute Occasionnel
Re : Obliger le remplissage d'une cellule

En combinant nos deux propositions, on a probablement ce que tu veux :D

Code:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
If Sheets("Feuil1").Range("A1") = "" Then
   MsgBox "La Cellule A1 n'est pas saisie"
   Cancel = True
End If
End Sub

Sly
 

firechief

XLDnaute Junior
Re : Obliger le remplissage d'une cellule

En combinant nos deux propositions, on a probablement ce que tu veux :D

Code:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
If Sheets("Feuil1").Range("A1") = "" Then
   MsgBox "La Cellule A1 n'est pas saisie"
   Cancel = True
End If
End Sub

Sly

:D:D Ca marche, trop génial. Un super merci à l'analyse subtile de Sly le globe trotter ;):)

Très bonne journée à tous !!
 

firechief

XLDnaute Junior
Re : Obliger le remplissage d'une cellule

:D:D Ca marche, trop génial. Un super merci à l'analyse subtile de Sly le globe trotter ;):)

Très bonne journée à tous !!

EUH !!! la c'est un autre problème que je n'avais pas vu venir ...
En effet il m'est impossible de sauvegarder le fichier en .xlt car je dois absolument mettre la date. Alors à l'ouverture du fichier elle sera marquée et le fichier pourra être fermé sans modifier la date..... DSL :(:(:(
 

firechief

XLDnaute Junior
Re : Obliger le remplissage d'une cellule

Pas sûr de bien comprendre ton nouveau problème...

Tu souhaites enregistrer ton fichier au format "xlt". Mais quel est le lien avec la date dont tu parles ?
Un petit fichier en pièce jointe ???

Sly

Désolé, je vais être plus précis. Grâce à vous, j'ai la solution pour obliger la saisie de la date dans le fichier. Si cette date n'est pas saisie, lors de la sauvegarde un message "La Cellule A1 n'est pas saisie" apparait. J'ai donc inséré ce code VBA dans mon fichier Excel que j'amerais sauvegardé en .xlt (comme modèle)

Mais maintenant dès que je veux sauvegarder mon fichier avec la modification VBA, il me vient logiquement l'obligation de mettre la date et, si je la met et que je sauvegarde, lors de sa prochaine ouverture, mon fichier aura déjà la date et l'utilisateur pourra sauvegarder sans changer la date.

Donc mon souci est de pouvoir sauvegarder sans date le modèle et que à la prochaine ouverture le "système" se mette en marche.

J'espère avoir été clair, car même moi j'ai de la peine à suivre :confused: LOL
 

Namzip

XLDnaute Nouveau
Re : Obliger le remplissage d'une cellule

Bonjour,

J'ai pas tout compris mais si tu souhaites que l'utilisateur saisisse la date à chaque ouverture, il faut l'effacer avec la fonction Private Sub Workbook_Open()
Pour garder la trace des modifs, il faut que les dates soient écrites autre part que dans ta cellule A1.

Cdt, Robert
 

Sly le globe trotter

XLDnaute Occasionnel
Re : Obliger le remplissage d'une cellule

Une des solutions pourraient consister à faire un test sur le login utilisateur. En fonction de ce dernier, on empêche l'enregistrement si ta cellule est vide.

Concrètement, si c'est toi qui enregistres, on ne se pose pas la question. Dans le cas contraire, on effectue le test.

Cela suppose cependant que les logins utilisateurs soient différents, au moins le tien :p

Sly
 

Guiv

XLDnaute Occasionnel
Re : Obliger le remplissage d'une cellule

Bonjour à tous,
Firechief, je ne suis pas sur d'avoir bien suivi ton raisonnement, mais s'il s'agit de conserver la date de la dernière utilisation du fichier,
Code:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Sheets(1).Range("A1")=Now  SaveChanges:=true
End Sub

devrait faire l'affaire...

Cordialement,
Guiv
 

Papou-net

XLDnaute Barbatruc
Re : Obliger le remplissage d'une cellule

Bonsoir à tous,

Si j'ai bien compris, il suffit de tester l'extension du nom du fichier, avant la sauvegaerde :

Code:
If Not UCase(Right(ThisWorkbook.Name, 3)="XLS" Then Range(??) = ""

Espérant avoir cerné le problème.

Cordialement.
 

firechief

XLDnaute Junior
Re : Obliger le remplissage d'une cellule

Bonjour à tous.

Merci pour ces réponses. En fait ce qu'il faudrait, c'est un code qui efface la date à chaque ouverture de mon fichier .xlt. De cette façon l'utilisateur suivant aura de nouveau l'obligation de mettre la date en sauvegardant. Mon fichier est un inventaire mensuel qui doit être daté. (au fait la date et en H1).

Il est vrai que si je demande de mettre obligatoirement une date, même pour mon fichier modèle il faudra que je la mette pour qu'il accepte de sauvegarder.:rolleyes:

la solution de Namzip :
J'ai pas tout compris mais si tu souhaites que l'utilisateur saisisse la date à chaque ouverture, il faut l'effacer avec la fonction Private Sub Workbook_Open()
me parle bien. Mais comment mettre 2 code VBA (1 pour obliger la date et l'autre pour l'effacer à l'ouverture du fichier .xlt) ?

Encore et d'avance merci
 

Sly le globe trotter

XLDnaute Occasionnel
Re : Obliger le remplissage d'une cellule

Salut firechief,

Toujours dans ThisWorkbook, tu viens ajouter comme l'expliquait Namzip la fonction Private Sub Workbook_Open().

Code:
Private Sub Workbook_Open()
Sheets("Feuil1").Range("A1").ClearContents
End Sub

A configurer en fonction de la feuille et de la cellule dans laquelle tu souhaites effacer la valeur évidemment :p

Bonne continuation
Sly
 

Discussions similaires

Statistiques des forums

Discussions
312 206
Messages
2 086 207
Membres
103 158
dernier inscrit
laufin