Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 14/11/2011, 14h37   #1
Invité régulier
 
Inscription : novembre 2011
Messages : 28
Détails du profil
Informations forums :
Inscription : novembre 2011
Messages : 28
Points : 5
Points : 5
Par défaut Message d'erreur si le format n'est pas respecté

Bonjour a tous,

J'ai preparer une Base de donnees sur excel avec des formules de calculs (principalement sur des dates) le format que j'utilise est M/DD/YYYY.

Afin de forcer les utilisateur a entrer les informations uniquement selon ce format je sollicite votre aide pour un code VBA qui ne permetrai aucune autre ecriture que celle dans le format mentionne ci-dessus si possible avec un message d'erreur.

Merci d'avance pour votre aide.
marama12 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/11/2011, 15h00   #2
Membre Expert
 
Avatar de ZebreLoup
 
Homme Sebastien L
Ingénieur Financier
Inscription : mars 2010
Messages : 869
Détails du profil
Informations personnelles :
Nom : Homme Sebastien L
Âge : 33
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Activité : Ingénieur Financier
Secteur : Finance

Informations forums :
Inscription : mars 2010
Messages : 869
Points : 1 837
Points : 1 837
Bonjour,
Pourrais-tu préciser un peu ton besoin ? Y a-t-il une zone spécifique pour la saisie de ces informations ? Y a-t-il déjà un traitement VBA à cette occasion ?

Il y a plusieurs approches. Tu dois pouvoir t'en sortir avec une validation personnalisée.
Ou en VBA, tu cherches d'abord les positions des "/". Tu dois en trouver 2. Et ensuite tu vérifies que les données autour de ces "/" sont bien des nombres cohérents avec ton système de date.

En revanche tu auras un problème, tu ne pourras jamais savoir si par exemple 1/1/2012 est au format D/M/AAAA ou M/D/AAAA. Le plus propre sera peut-être donc de faire entrer à l'utilisateur les informations à 3 endroits différents (ou sur 3 colonnes) bien identifiés comme étant D, M et A. Et mettre des validations sur ces 3 zones.

A ta disposition pour t'aider de manière plus poussée en fonction des précisions que tu pourras apporter.
ZebreLoup est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/11/2011, 15h09   #3
Invité régulier
 
Inscription : novembre 2011
Messages : 28
Détails du profil
Informations forums :
Inscription : novembre 2011
Messages : 28
Points : 5
Points : 5
Bonjour,

J'ai peut etre manque de clarte.

Au fait j'ai des colonnes ou les utilisateur vont rentrer des dates au format M/DD/YYYY.

e.g

dans la colonne A la colonne C, g, f, AC ....

Si il rentrent les dates dans un autres format les formules ne marcherons pas.

Donc afin de les forcer a utiliser uniquement ce format je suis a la recherche d'un code VBA que je voudrais associer a un message d'erreur disant par exp:

Format incorrect please enter the date in the format M/DD/YYYY

ps: JE SUIS DEBUTANT AVEC VBA

Merci d'avance
marama12 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/11/2011, 15h22   #4
Membre Expert
 
Avatar de ZebreLoup
 
Homme Sebastien L
Ingénieur Financier
Inscription : mars 2010
Messages : 869
Détails du profil
Informations personnelles :
Nom : Homme Sebastien L
Âge : 33
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Activité : Ingénieur Financier
Secteur : Finance

Informations forums :
Inscription : mars 2010
Messages : 869
Points : 1 837
Points : 1 837
Normalement, quel que soit le format qu'utilise l'utilisateur, si excel le reconnait comme une date, la formule devrait marcher. Donc tu peux utiliser la validation (sous Excel 2003, menu : Données / Validation...) pour être sûr que l'entrée soit une date valide. Après cela dépendra si excel est en notation anglo-saxonne ou française pour l'ordre M/D ou D/M.

On peut faire plus élaboré avec du VBA, mais je ne voudrais pas te faire te lancer dans une usine à gaz s'il y a une solution beaucoup plus simple.

Juste pour être sûr : tu ne veux pas que ta formule génère une erreur ou qu'elle donne une résultat faux parce qu'elle a confondu M/D avec D/M quand D est inférieur ou égal à 12 ?
ZebreLoup est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/11/2011, 14h08   #5
Invité régulier
 
Inscription : novembre 2011
Messages : 28
Détails du profil
Informations forums :
Inscription : novembre 2011
Messages : 28
Points : 5
Points : 5
Meme en utilisant la validation de donnes la formule n accepte pas le format date suivant:

dd/mm/yyyy


La formule que j'utilise est la suivante:

Code :
=IF(OR(AK8="",AL8=""),"",(DAYS360(AK8,AL8)))
Est ce que quelqu'un peux m'aider (peut etre quelque chose lui manque) pour qu'elle puisse fonctionner quelque soit le format date que j'utilise.

Un fichier simplifie est en PJ, je pense qu'il parle par lui meme.

Merci d'avance pour toute contribution a resoudre ce probleme
Fichiers attachés
Type de fichier : zip TEST5.zip (25,8 Ko, 1 affichages)
marama12 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/11/2011, 14h36   #6
Membre Expert
 
Avatar de ZebreLoup
 
Homme Sebastien L
Ingénieur Financier
Inscription : mars 2010
Messages : 869
Détails du profil
Informations personnelles :
Nom : Homme Sebastien L
Âge : 33
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Activité : Ingénieur Financier
Secteur : Finance

Informations forums :
Inscription : mars 2010
Messages : 869
Points : 1 837
Points : 1 837
Quelle est le message dans la cellule ? #VALEUR! ?

J'ai fait un essai chez moi, la formule marche bien dès que la cellule en entrée est bien une date. Et si je rentre 1/13/2010 dans une cellule, la validation de données me l'interdit bien (Je suis en version française, pour toi, je suppose que c'est 13/1/2010 qui devrait être impossible).

Comment as-tu fait ta validation de données ?
ZebreLoup est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/11/2011, 14h47   #7
Membre Expert
 
Avatar de ZebreLoup
 
Homme Sebastien L
Ingénieur Financier
Inscription : mars 2010
Messages : 869
Détails du profil
Informations personnelles :
Nom : Homme Sebastien L
Âge : 33
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Activité : Ingénieur Financier
Secteur : Finance

Informations forums :
Inscription : mars 2010
Messages : 869
Points : 1 837
Points : 1 837
Voici un petit exemple (il faut peut-être remplacer jour/mois/années par mois/jour/années).

Dis-moi ce qui ne te convient pas ici pour mieux comprendre le problème
Fichiers attachés
Type de fichier : xls Classeur2.xls (38,0 Ko, 2 affichages)
ZebreLoup est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/11/2011, 14h58   #8
Invité régulier
 
Inscription : novembre 2011
Messages : 28
Détails du profil
Informations forums :
Inscription : novembre 2011
Messages : 28
Points : 5
Points : 5
Salut,

La est toute la question. je veux utiliser un format europeen: jour/mois/annee

(En PJ le probleme que je rencontre sur le fichhier que tu as envoye)
Images attachées
Type de fichier : jpg 11-21-2011 2-55-57 PM.jpg (69,0 Ko, 5 affichages)
marama12 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/11/2011, 15h18   #9
Membre Expert
 
Avatar de ZebreLoup
 
Homme Sebastien L
Ingénieur Financier
Inscription : mars 2010
Messages : 869
Détails du profil
Informations personnelles :
Nom : Homme Sebastien L
Âge : 33
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Activité : Ingénieur Financier
Secteur : Finance

Informations forums :
Inscription : mars 2010
Messages : 869
Points : 1 837
Points : 1 837
Le problème est que tu ne peux pas utiliser le format que tu veux. Il va dépendre du poste sur lequel est installé Excel. Même si tu changeais le format sur ton poste via les "regional settings", le comportement serait différent si quelqu'un d'autre utilise ton fichier Excel.

La seule solution serait de ne pas utiliser le format de date d'excel, mais uniquement du texte. Tu pourras faire toutes les vérifications que tu veux et préciser un format bien précis, mais les fonctions Excel comme DAYS360 que tu utilisais ne fonctionneront plus. Il faudra donc non seulement écrire les fonctions VBA d'analyse de date, mais aussi réécrire les fonctions de calcul que tu utilises.

En revanche, on doit pouvoir trouver un petit bout de VBA qui donne à l'utilisateur le format de date accepté sur son poste.
EDIT : Afin que le message d'erreur ne soit pas trompeur comme dans le fichier que je t'ai envoyé.

Dernière idée : Je ne connais pas ton application, mais peut-être que l'utilisateur pourrait entrer dans des cellules séparées le jour le mois et l'année, comme ça tu as ensuite la main sur tout dans tes calculs. Ou encore utiliser des dtPicker.
ZebreLoup est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/11/2011, 15h52   #10
Invité régulier
 
Inscription : novembre 2011
Messages : 28
Détails du profil
Informations forums :
Inscription : novembre 2011
Messages : 28
Points : 5
Points : 5
C'est pour mon entreprise et le fichier sera mis dans un endroit unique ou les utilisteurs vont y acceder. Est ce que ca reduit le degres de complexite du probleme. Peux tu m'indiquer le code vba qui permet d'utiliser avec cette formule le dormat JJ/MM/AAAA
marama12 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/11/2011, 16h05   #11
Membre Expert
 
Avatar de ZebreLoup
 
Homme Sebastien L
Ingénieur Financier
Inscription : mars 2010
Messages : 869
Détails du profil
Informations personnelles :
Nom : Homme Sebastien L
Âge : 33
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Activité : Ingénieur Financier
Secteur : Finance

Informations forums :
Inscription : mars 2010
Messages : 869
Points : 1 837
Points : 1 837
Juste entre-temps, j'ai fait ce petit exemple de passage par un calendrier pour éviter tout problème. Je ne sais pas si ça peut servir. EDIT : Il faut double-cliquer sur une cellule pour activer le calendrier.

Sinon, très franchement, je n'ose pas me lancer dans un truc trop compliqué pour gérer les dates au format texte. J'ai peur que ça soit plus une source de bugs pour ton fichier qu'autre chose et que ça soit galère après à chaque fois que tu voudras changer un formule ou autre.
C'est vraiment un problème si certains utilisateurs doivent rentrer du J/M/A et d'autres du M/J/A du moment qu'on les prévient ? Parce que s'ils utilisent déjà Excel, ils doivent avoir l'habitude des dates dans le format de leur PC, non ?

Ce n'est pas que je ne veux pas t'aider, mais je ne voudrais pas te lancer sur une fausse piste surtout si tu es débutant(e) en VBA.
Fichiers attachés
Type de fichier : xls Classeur1.xls (47,0 Ko, 2 affichages)
ZebreLoup est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/11/2011, 16h49   #12
Invité régulier
 
Inscription : novembre 2011
Messages : 28
Détails du profil
Informations forums :
Inscription : novembre 2011
Messages : 28
Points : 5
Points : 5
L'idee du calendrier me plait bien.

Cepandant je n'arrive pas a le voir sur mon PC. J'ai un msg d'erreur comme quoi l'objet n'existe pas sur mon Ordinateur.

Peux tu me monter comment faire le calendrier.

Merci bcp d'avance.
marama12 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 21/11/2011, 16h56   #13
Membre Expert
 
Avatar de ZebreLoup
 
Homme Sebastien L
Ingénieur Financier
Inscription : mars 2010
Messages : 869
Détails du profil
Informations personnelles :
Nom : Homme Sebastien L
Âge : 33
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Activité : Ingénieur Financier
Secteur : Finance

Informations forums :
Inscription : mars 2010
Messages : 869
Points : 1 837
Points : 1 837
Tu as quelle version d'office ?
Je suis sous 2003 et j'utilise le contrôle Calendrier 11.0
Je pensais qu'il était par défaut sur toutes les versions, je vais regarder.
ZebreLoup est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/11/2011, 17h04   #14
Rédacteur
 
Avatar de Ormonth
 
Homme Didier GONARD
Formateur Développeur Office - indépendant
Inscription : février 2008
Messages : 2 353
Détails du profil
Informations personnelles :
Nom : Homme Didier GONARD
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations professionnelles :
Activité : Formateur Développeur Office - indépendant

Informations forums :
Inscription : février 2008
Messages : 2 353
Points : 4 685
Points : 4 685
Bonjour,

Comment installer les contrôles MonthView et DTPicker ?

http://www.developpez.net/forums/d11...x/#post6264281

Cordialement,

Ps : si le côté technique de la réponse = OK ou pas => pensez à cliquer sur les pouces et quand question résolue à la taguer résolue, et chaque action vous raporte des points

Didier
__________________
Didier Gonard

Ps :
Pour noter positivement ou négativement un post, vous pouvez cliquer sur les pouces en bas à droite !
Tutoriels : Voir la liste de mes tutoriels et mon site pro sur ma Page DVP
N'oubliez pas de mettre : ..quand c'est le cas !
Ormonth est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/11/2011, 17h05   #15
Membre Expert
 
Avatar de ZebreLoup
 
Homme Sebastien L
Ingénieur Financier
Inscription : mars 2010
Messages : 869
Détails du profil
Informations personnelles :
Nom : Homme Sebastien L
Âge : 33
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Activité : Ingénieur Financier
Secteur : Finance

Informations forums :
Inscription : mars 2010
Messages : 869
Points : 1 837
Points : 1 837
Essaie ce fichier, c'est peut-être un contrôle plus commun. Si ça marche, je t'expliquerais le code et les modifications éventuelles à faire.
Fichiers attachés
Type de fichier : xls Classeur1.xls (41,5 Ko, 3 affichages)
ZebreLoup est actuellement connecté   Envoyer un message privé Réponse avec citation 10
Vieux 21/11/2011, 17h19   #16
Invité régulier
 
Inscription : novembre 2011
Messages : 28
Détails du profil
Informations forums :
Inscription : novembre 2011
Messages : 28
Points : 5
Points : 5
dsl ca ne marche pas non plus
marama12 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/11/2011, 18h16   #17
Membre Expert
 
Avatar de ZebreLoup
 
Homme Sebastien L
Ingénieur Financier
Inscription : mars 2010
Messages : 869
Détails du profil
Informations personnelles :
Nom : Homme Sebastien L
Âge : 33
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Activité : Ingénieur Financier
Secteur : Finance

Informations forums :
Inscription : mars 2010
Messages : 869
Points : 1 837
Points : 1 837
Un dernier essai sans contrôle spécifique. C'est moins joli, mais bon...
Fichiers attachés
Type de fichier : xls Classeur1.xls (45,5 Ko, 4 affichages)
ZebreLoup est actuellement connecté   Envoyer un message privé Réponse avec citation 10
Vieux 22/11/2011, 09h52   #18
Invité régulier
 
Inscription : novembre 2011
Messages : 28
Détails du profil
Informations forums :
Inscription : novembre 2011
Messages : 28
Points : 5
Points : 5
Salut,

La ca marche. Je voudrais juste apporter quelques precisions:

Je travail sur Excel 2010.

Je voudrais utiliser ce calendrier le long de plusieur colonnes eparpillees par-ci par la dans ma feuillle excel.

Y- a il un moyen pour que le calendrier apparait du premier clic ou bien de faire en sorte que toute entree dans ces cellules la n'est possible qu'a travers une saisie dans le calendrier.

Merci beaucoup d'avance.
marama12 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/11/2011, 10h45   #19
Membre Expert
 
Avatar de ZebreLoup
 
Homme Sebastien L
Ingénieur Financier
Inscription : mars 2010
Messages : 869
Détails du profil
Informations personnelles :
Nom : Homme Sebastien L
Âge : 33
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Activité : Ingénieur Financier
Secteur : Finance

Informations forums :
Inscription : mars 2010
Messages : 869
Points : 1 837
Points : 1 837
Dans l'exemple que je t'ai envoyé, j'ai protégé les cellules sur les 2 premières colonnes donc on ne peut entrer de valeurs que via le calendrier (dans le code on déprotège et reprotège la cellule). Si tu veux protéger par mot de passe, il faudra modifier cette partie dans le code CommandButton1_Click() de UserForm1 :
Code :
1
2
3
    targetRange.Worksheet.Unprotect
    targetRange.Value = dt
    targetRange.Worksheet.Protect
Remplace par
Code :
1
2
3
    targetRange.Worksheet.Unprotect "MonMotDePasse"
    targetRange.Value = dt
    targetRange.Worksheet.Protect "MonMotDePasse"
Pour rappel, avant de protéger une feuille, en faisant click droit après avoir sélectionné une zone et "Format de cellules", tu as un onglet pour choisir si cette zone est protégée ou pas.

Pour ce qui est d'activer le calendrier sur un click simple, dans le code de Feuil1 (ou toute feuille dans laquelle tu entreras des dates), il faudra utiliser l'évènement Worksheet_SelectionChange, plutôt que Worksheet_BeforeDoubleClick, en pensant à enlevant le Cancel = True qui ne sert à rien et provoquera une erreur.

Ensuite le choix des cellules sur lequel le calendrier est actif se fait dans ce code justement, au niveau de la condition If
Code :
1
2
3
4
5
6
7
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    'On vérifie si c'est dans une plage qui nous intéresse
    If (Target.Column = 1 Or Target.Column = 2) And Target.Row >= 2 Then
        Set UserForm1.targetRange = Target
        UserForm1.Show
    End If
End Sub
Comme tu peux le voir, cela ne se produit que s'il s'agit de la colonne 1 ou 2 et à partir de la ligne 2. Mais tu peux rajouter d'autres conditions.
ZebreLoup est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/11/2011, 11h44   #20
Invité régulier
 
Inscription : novembre 2011
Messages : 28
Détails du profil
Informations forums :
Inscription : novembre 2011
Messages : 28
Points : 5
Points : 5
Salut,

Ca se precise mais il me reste un petit soucis:

Intialement ma feuille est protege par un mot de passe (avec un code VBA) qui verouille certaines colonnes. En utilisant le code que tu m'as fourni ces restrictions disparaissent.

je m'explique je veux utiliser ce calendrier pour 4 colonnes par e.g

je veux que pour deux d'entre elles aucun mot de passe ne soit demande et l'entree faite uniquement via le calendrier. pour les deux restantes je veux qu'un mot de passe soit demande et l'entree possible uniquement via le calendrier.

Esperant que cela soit faisable.

MERCI D'AVANCE
marama12 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 09h39.


 
 
 
 
Partenaires

Hébergement Web