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 :

Validation des données VBA Excel


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Juin 2023
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2023
    Messages : 6
    Par défaut Validation des données VBA Excel
    Bonjour tout le monde,

    Je travaille sur un programme VBA qui cherche des données dans un fichier et une fois les données trouvées, il crée un nouveau document et copie ces données. Sauf que voilà mon problème : on me demande de verrouiller le texte qu'on peut écrire dans certaines cellules par une liste déjà établie dans un autre onglet. En cherchant un peut partout je n'ai trouvé que la façon de créer un menu déroulant (que je souhaite garder), mais rien pour qu'un message d'erreur apparaisse lorsque le contenu de la cellule est différent de celui du menu déroulant.
    Voici le code pour l'instant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    With Sheets("Prépa").Range("I3:I4").Validation
            .Delete
            .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
            xlBetween, Formula1:="1, 2, 3"
            .IgnoreBlank = True
            .InCellDropdown = True
            .InputTitle = ""
            .ErrorTitle = ""
            .InputMessage = ""
            .ErrorMessage = ""
            .ShowInput = True
            .ShowError = False
     
        End With
    Dans l'idéal il faudrait que la liste "1, 2, 3" soit une colonne sélectionnée à partir d'un autre onglet appelé "Listes".


    Merci d'avance pour votre aide.

  2. #2
    Membre Expert
    Inscrit en
    Décembre 2002
    Messages
    978
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 978
    Par défaut
    Salut, en supposant qu'on se base sur la colonne A de l'onglet "Listes", remplace Formula1:="1, 2, 3" par Formula1:="=Listes!A:A"
    Et pour tester la validité, quelque chose comme ça:

    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
    Dim cell As Range
    Dim valeur As Range
    Dim found As Boolean
     
    For Each cell In Sheets("Prépa").Range("I3:I4")
        found = False
        For Each valeur In Sheets("Listes").Range("A:A")
            If cell.value = valeur.value Then
                found = True
                Exit For
            End If
        Next valeur
        If Not found Then
            MsgBox "Le contenu de la cellule " & cell.Address & " est différent de celui du menu déroulant", vbCritical
        End If
    Next cell

  3. #3
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 134
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Sauf si vous devez créer régulièrement des listes déroulantes différentes, je ne vois pas trop l'intérêt d'utiliser le VBA pour faire cela.
    Création d'une tableau structuré à une colonne dont vous nommez la plage et ensuite dans la zone de texte référence à de la validation de données, il suffit de cliquer sur F3 pour obtenir la liste des plages nommées et faire un clic sur le nom souhaité.
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Juin 2023
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2023
    Messages : 6
    Par défaut
    @Franc
    Salut, le code fonctionne correctement lorsque j'exécute la macro mais je voudrais qu'il fonctionne de façon permanente comme lorsqu'on crée une "Validation des données" manuellement, c'est-à-dire qu'il me faudrait que le programme m'indique une erreur dès que ce qui est saisi dans la cellule est incorrect.
    En réalité j'ai fait un programme qui trie des données et lorsqu'il a fini il crée un nouveau document, et il me faudrait implémenter à ce code cette partie de validation des données pour que les utilisateurs ne puissent pas faire d'erreurs lorsqu'ils remplissent certaines cellules de ce nouveau document.

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Juin 2023
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2023
    Messages : 6
    Par défaut
    Citation Envoyé par Philippe Tulliez Voir le message
    Bonjour,
    Sauf si vous devez créer régulièrement des listes déroulantes différentes, je ne vois pas trop l'intérêt d'utiliser le VBA pour faire cela.
    Création d'une tableau structuré à une colonne dont vous nommez la plage et ensuite dans la zone de texte référence à de la validation de données, il suffit de cliquer sur F3 pour obtenir la liste des plages nommées et faire un clic sur le nom souhaité.
    En effet, je vais m'en servir pour créer automatiquement de nouveaux fichiers où certaines colonnes n'accepteront que certaines entrées. Ces nouveaux fichiers doivent être utilisables directement par l'utilisateur sans qu'il n'ait à modifier quoi que ce soit et donc que ce ne soit pas à lui de créer une validation des données sur les colonnes qui le nécessitent mais qu'elle soit déjà existante lors de la création du fichier.

  6. #6
    Membre Expert
    Inscrit en
    Décembre 2002
    Messages
    978
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 978
    Par défaut
    Insère le code dans l'évènement Worksheet_Change qui se déclenche lorsqu'une cellule de la feuille est modifiée.

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Juin 2023
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2023
    Messages : 6
    Par défaut
    Citation Envoyé par Franc Voir le message
    Insère le code dans l'évènement Worksheet_Change qui se déclenche lorsqu'une cellule de la feuille est modifiée.
    Comment l'utilise-t-on? J'ai cru comprendre sur d'autres fils qu'ils l'utilisent souvent comme "Private Sub Worksheet_Change(ByVal Target As Range)" mais je ne comprends pas comment on s'en sert.

  8. #8
    Membre Expert
    Inscrit en
    Décembre 2002
    Messages
    978
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 978
    Par défaut
    Dans l'IDE VBA, tu cliques sur la feuille dont tu veux vérifier les cellules, et à droite tu choisis l'évènement Change, tu y insères le code de la macro sans le Sub..End sub ou alors tu insères la macro dans un module et tu l'appelles dans l'évènement _Change avec Call Macro1 par exemple.
    L'évènement est déclenché automatiquement quand une cellule est modifiée.

  9. #9
    Nouveau membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Juin 2023
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2023
    Messages : 6
    Par défaut
    Citation Envoyé par Franc Voir le message
    Dans l'IDE VBA, tu cliques sur la feuille dont tu veux vérifier les cellules, et à droite tu choisis l'évènement Change, tu y insères le code de la macro sans le Sub..End sub ou alors tu insères la macro dans un module et tu l'appelles dans l'évènement _Change avec Call Macro1 par exemple.
    L'évènement est déclenché automatiquement quand une cellule est modifiée.
    Merci pour la précision, ça fonctionne comme il me fallait!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [VBA-E]Exporter des données d'Excel vers Access
    Par Mut dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 03/06/2006, 15h57
  2. [VBA-E]Transfere des données d'Excel dans une table Access
    Par flo83 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 07/04/2006, 09h22
  3. [VBA-A]Copier des données d'Excel vers Word
    Par soad029 dans le forum VBA Word
    Réponses: 15
    Dernier message: 16/03/2006, 11h56
  4. [VBA] Comparer des données en excel
    Par Micavk dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 17/10/2005, 12h26

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