IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Message d'erreur si le format n'est pas respecté


Sujet :

Macros et VBA Excel

  1. #21
    Membre Expert Avatar de ZebreLoup
    Homme Profil pro
    Ingénieur Financier
    Inscrit en
    Mars 2010
    Messages
    994
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

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

    Informations forums :
    Inscription : Mars 2010
    Messages : 994
    Par défaut
    1/ Tu peux déjà utiliser des < et des > si des colonnes sont contiguës afin d'alléger un peu. Si tu veux passer à la ligne dans du code il suffit de mettre un _ à la fin de la première ligne.
    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    If x = 5 Or x = 6 Or x = 7 Or x = 8 _
      Or x = 9 Or x = 10 Or x = 11
    Si vraiment c'est trop long, il faudra écrire une fonction qui te revoie si la cellule est bien dans la plage concernée.

    2/ Tu peux créer un deuxième userForm identique au premier en y ajoutant un textbox dans lequel l'utilisateur saisira le mot de passe, que tu vérifieras avant de valider la date. Ton SelectionChange choisira de lancer un userForm ou l'autre suivant les colonnes. Pense par contre à protéger ton code par mot de passe sinon, l'utilisateur pourra retrouver facilement le mot de passe des colonnes.

  2. #22
    Membre averti
    Inscrit en
    Novembre 2011
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Novembre 2011
    Messages : 28
    Par défaut
    Le seul probleme qui persiste est celui de la protection.

    En PJ ce qui se passe concretement avec une colonne protege.

    J'espere que c'est un petit peu plus claire maintenant
    Images attachées Images attachées  

  3. #23
    Membre Expert Avatar de ZebreLoup
    Homme Profil pro
    Ingénieur Financier
    Inscrit en
    Mars 2010
    Messages
    994
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

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

    Informations forums :
    Inscription : Mars 2010
    Messages : 994
    Par défaut
    C'est pourquoi je te proposais d'inclure le mot de passe dans le UserForm. Attends je t'envoie un exemple

  4. #24
    Membre averti
    Inscrit en
    Novembre 2011
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Novembre 2011
    Messages : 28
    Par défaut
    Citation Envoyé par ZebreLoup Voir le message
    1/ Tu peux déjà utiliser des < et des > si des colonnes sont contiguës afin d'alléger un peu. Si tu veux passer à la ligne dans du code il suffit de mettre un _ à la fin de la première ligne.
    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    If x = 5 Or x = 6 Or x = 7 Or x = 8 _
      Or x = 9 Or x = 10 Or x = 11
    Si vraiment c'est trop long, il faudra écrire une fonction qui te revoie si la cellule est bien dans la plage concernée.

    2/ Tu peux créer un deuxième userForm identique au premier en y ajoutant un textbox dans lequel l'utilisateur saisira le mot de passe, que tu vérifieras avant de valider la date. Ton SelectionChange choisira de lancer un userForm ou l'autre suivant les colonnes. Pense par contre à protéger ton code par mot de passe sinon, l'utilisateur pourra retrouver facilement le mot de passe des colonnes.
    L'idee que tu devloppes dans le deuxieme point me plait, peux tu me donnet un example du code.

    Au fait mon fichier des que je le ferme protege toutes les feuilles et dans chaque feuille certaines colonnes peuvent etre editees sans mot de passe et d'aute avec mot de passe.

    Je veux que pour celle ou le mot de passe n est pas necessaire aucun fenetre demandant un mot de passe n apparait te en gardant le seul myen d'editer la date le passage par le calendrier.

  5. #25
    Membre Expert Avatar de ZebreLoup
    Homme Profil pro
    Ingénieur Financier
    Inscrit en
    Mars 2010
    Messages
    994
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

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

    Informations forums :
    Inscription : Mars 2010
    Messages : 994
    Par défaut
    Alors voilà un exemple complet. J'ai essayé de bien documenté le code pour que tu comprennes.

    Par défaut je protège toutes les cellules de date. Pour éviter que l'utilisateur ne rentre un date à la main dans le mauvais format.

    Pour adapter mon exemple à ton fichier :
    - Exporte usfDate, usfDatePassword et mdValidColumn et importe les dans ton fichier.
    - Sur chaque feuille où tu veux que cette selection agisse, protège les colonnes pour lesquelles tu veux qu'une date soit saisie et recopie le code que j'ai mis dans Feuil1 dans mon fichier. Il suffit ensuite de modifier les constantes contenant les colonnes concernées. Première constante : liste des colonnes sans mot de passe, et deuxième constante : liste des colonnes avec mot de passe. Cette liste doit être entrée de la manière suivante : "1,2,5,10-25,27"...
    Comme ça pas de problème de nombre de colonne et de code illisible. En notant que le tiret représente une plage.

    Je pense que c'est assez complet cette fois. En espérant que tu pourras t'en sortir avec ça.
    Fichiers attachés Fichiers attachés

  6. #26
    Membre averti
    Inscrit en
    Novembre 2011
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Novembre 2011
    Messages : 28
    Par défaut
    j'ai suivi les etapes une par une mais ca ne marche pas et je n arrive plus a deprotege les feuilles avec mon ancien mot de passe.

    Je suis aller sur les userform et remplacer la ou il ya MDP par le mien celui que j'utilise dans un code sur le workbook mais sans succes.

    Il semble aussi qu'il y a une erreur dans ton fichier (PJ)

    Puis-je te demander a m'aider pour une derniere tentative.
    Images attachées Images attachées  

  7. #27
    Membre averti
    Inscrit en
    Novembre 2011
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Novembre 2011
    Messages : 28
    Par défaut
    J'ai essaye une deuxieme fois et la ca marche.

    Merci bcp Zebrloup

    Bonjour,

    C'est moi de nouveau.

    J'ai applique le code a toutes mes feuilles et ca marche,cependant il y a un problemecolateral.

    Quand j'ai applique le code a une seule feuille tout marchait mais apres application a toutes les feuilles quand je clic sur d'autre colonnes qui ne sont pas concernees par le format date ni par le calendrier j'ai une erreur 13

    en PJ les details.

    Est ce que quelqu'un peux m' aider a resouder ce probleme

    Merci
    Images attachées Images attachées   

  8. #28
    Membre Expert Avatar de ZebreLoup
    Homme Profil pro
    Ingénieur Financier
    Inscrit en
    Mars 2010
    Messages
    994
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

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

    Informations forums :
    Inscription : Mars 2010
    Messages : 994
    Par défaut
    Dans la feuille en question, as-tu bien renseigner les colonnes valides dans le bon format ? Si une des deux constantes est vide ou n'est pas entrée correctement (uniquement des nombres séparés par des virgules ou tirets) le problème doit venir de là. Je corrige pour prévoir ce cas.

    Essaie en remplaçant le code de isForDate (dans le module mdValidColumn) par :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
        If validCols = "" Then GoTo ReturnFalse
     
        Dim listCol() As String
        Dim rgCol As Integer
        Dim i As Integer
        Dim dashPos As Integer
        Dim min, max As Integer
     
        rgCol = rg.Column
     
        listCol = Split(validCols, ",")
     
        If rg.Row < 2 Then GoTo ReturnFalse
     
        On Error GoTo ReturnFalse 'Erreur dans les conversion en int a priori
     
        For i = 0 To UBound(listCol)
            dashPos = InStr(listCol(i), "-")
            If dashPos = 0 Then
                If rgCol = CInt(listCol(i)) Then
                    isForDate = True
                    Exit Function
                End If
            Else
                min = CInt(Mid(listCol(i), 1, dashPos - 1))
                max = CInt(Mid(listCol(i), dashPos + 1, Len(listCol(i))))
                If rgCol >= min And rgCol <= max Then
                    isForDate = True
                    Exit Function
                End If
            End If
        Next i
     
        isForDate = False
        Exit Function
     
    ReturnFalse:
        isForDate = False

  9. #29
    Membre averti
    Inscrit en
    Novembre 2011
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Novembre 2011
    Messages : 28
    Par défaut
    Tu as raison.

    Ca marche maintenant

    C'etait une histoire de virgule.

    J'ai une derniere question:

    COMMENT MODIFIER LE CODE POUR QUE L'APPRITION DU CALENDRIER NE SE FASSE PAS TOUT AU LONG DE LA COLONNE.

    dISON JE VEUX AVOIR CA DANS LES COLONNES SELECTIONNES ENTRE LIGNE 6 ET LIGNE 150.

    MERCI BCP

  10. #30
    Membre Expert Avatar de ZebreLoup
    Homme Profil pro
    Ingénieur Financier
    Inscrit en
    Mars 2010
    Messages
    994
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

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

    Informations forums :
    Inscription : Mars 2010
    Messages : 994
    Par défaut
    Regarde bien le code du message précédent. Ligne 13 tu remarques la vérification de la ligne.
    Tu peux la remplacer par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If rg.Row < 6 Or rg.Row > 150 Then GoTo ReturnFalse
    Si ces lignes changent selon les feuilles, il faudra complexifier un peu plus pour rentrer des ranges plutôt que des colonnes. Je ne me lance pas tant que tu ne m'as pas confirmé.

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Message d'erreur : La ressource demandée () n'est pas disponible.
    Par leara500 dans le forum Tomcat et TomEE
    Réponses: 9
    Dernier message: 27/12/2013, 16h13
  2. Message d'erreur: Le cast spécifié n'est pas valide.
    Par giscard85 dans le forum ASP.NET MVC
    Réponses: 1
    Dernier message: 30/03/2011, 11h10
  3. Réponses: 2
    Dernier message: 10/02/2010, 23h10
  4. [GD] Obtention aléatoire d'un message d'erreur et l'image enregistrée est toute noire
    Par maty2006 dans le forum Bibliothèques et frameworks
    Réponses: 10
    Dernier message: 30/05/2006, 10h14

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo