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 :

Vérifier si présence valeur TextBox même ligne


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Homme Profil pro
    Consultant E-Learning
    Inscrit en
    Janvier 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Consultant E-Learning
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2014
    Messages : 4
    Par défaut Vérifier si présence valeur TextBox même ligne
    Bonjour à toutes et tous,

    Je reviens vers vous car je bug sur la réalisation d'une macro pour vérifier la non présence sur une même ligne d'une feuille des valeurs de 4 Textbox.

    Une petite explication:
    J'ai une clé de recherche que j'utilise sur toutes mes Userform ce qui me permets de reprendre les informations pour les Textbox concernés. Sur une userform, en fonction d'une combobox, je me retrouve avec la sélection de la feuille (Année) concernée par la vérification de la non présence de certaines valeurs des Textbox de l'Userform.

    En fonction des textbox (Nom_Activite, Prenom_Activite, Date_Debut_Activite et Date_Fin_Activite), je voudrais une vérification de la non présence sur une ligne de la feuille active des 4 Textbox.

    Je n'arrive pas à faire une macro alors que cela doit être simple. En fin de compte, il faut tenir compte de la feuille active de la sélection de la Combobox (Annee_Activite) et recherche la valeur des Textbox. j'arrive bien pour une Textbox mais je sèche pour l'imbrication avec les autres.

    Pour information, je peut avoir des doublons sur le Nom, Prenom, Debut_Activite et Fin_Activite. Je voudrais juste le msgbox ("Dejà présent et voulez valider quand même ?") avec oui ou annulation (vbOKCancel) si les valeurs des Textbox présentes.

    Merci d'avance.
    Images attachées Images attachées  

  2. #2
    Expert confirmé Avatar de BENNASR
    Homme Profil pro
    Responsable comptable & financier
    Inscrit en
    Décembre 2013
    Messages
    2 974
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Responsable comptable & financier
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 2 974
    Par défaut
    Bonjour
    à tester
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub CommandButton1_Click()
    COMPARE = TextBox1.Value & TextBox2.Value & TextBox3.Value & TextBox4.Value
    For i = 2 To Range("D65535").End(xlUp).Row
        If Cells(i, 1) & Cells(i, 2) & Cells(i, 3) & Cells(i, 4) = COMPARE Then
            MsgBox ("Attention, vous avez entré un doublon" & vbLf & "Voir la ligne N° :  " & i)
        End If
    Next i
    End Sub

  3. #3
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Salut.

    Perso, je travaillerais avec un tableau structuré => voir mon tuto à ce sujet: https://fauconnier.developpez.com/tu...ux-structures/. Ca simplifie le code, je pense et la gestion du classeur d'une façon générale.

    J'utiliserais EVALUATE pour tester l'existence avec EQUIV

    Nom : 2021-10-27_203926.png
Affichages : 99
Taille : 44,0 Ko

    Avec le tableau ci-dessus nommé Tableau1 où j'ai laissé la formule Excel pour que tu voies comment on procède, on pourrait avoir le code:
    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
    Private Sub btnValidate_Click()
      Dim Answer As VbMsgBoxResult
     
      Answer = vbYes
      If DataExist Then Answer = MsgBox("La ligne existe déjà, voulez-vous enregistrer?", vbQuestion + vbYesNo)
      If Answer Then SaveData
    End Sub
     
    Function DataExist() As Boolean
      Dim Index
      Dim Formula As String
     
      Formula = "match(1,(tableau1[Nom]=""" & tboName.Value & """)*(tableau1[Prénom]=""" & tboFirstName.Value & """)*(tableau1[Date Début]=" & CDate(tboBeginDate.Value) * 1 & ")*(tableau1[Date Fin]=" & CDate(tboEndDate.Value) * 1 & "),0)"
      Index = Evaluate(Formula)
      DataExist = Not IsError(Index)
    End Function
     
    Sub SaveData()
     
    End Sub

    NB: si tu utilises une boucle, il est préférable d'en sortir dès que possible, c'est-à-dire dès que tu as trouvé une correspondance. Pour cela, tu devrais utiliser une boucle Do While plutôt qu'une boucle For Next
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  4. #4
    Membre à l'essai
    Homme Profil pro
    Consultant E-Learning
    Inscrit en
    Janvier 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Consultant E-Learning
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2014
    Messages : 4
    Par défaut
    Bonjour,

    Merci à vous deux, je teste et je prends les deux pour voir. J'avais oublié le COMPARE et sur la boucle Do While au lieu de Do Next effectivement.

    Le problème principalement pour moi et qu'il me rajoute toujours un élément en plus alors que je leur avais bien demandé au départ de bien étudier les besoins.
    Je pense qu'avec tous les éléments au départ, je n'aurais pas eu le problème et le code est plus propre aussi.

    Je vous fais un retour en fin de semaine et je pense refaire une partie du code aussi avec vos solutions. Pour informations, je travaille sur 250/300 personnels et par année 8000 à 10000 lignes.

    Bonne fin de journée et merci encore.

Discussions similaires

  1. [XL-2013] Vérrouiller une ligne en ecriture selon valeur cellule même ligne
    Par UDSP50 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 31/10/2016, 15h12
  2. Réponses: 6
    Dernier message: 25/06/2008, 15h32
  3. Réponses: 5
    Dernier message: 03/04/2007, 11h08
  4. Plusieurs textbox sur la même ligne
    Par kahya dans le forum Mise en page CSS
    Réponses: 10
    Dernier message: 15/02/2007, 14h19
  5. comment vérifier la présence d'une valeur ds une chaîne ?
    Par lidouka dans le forum Langage SQL
    Réponses: 4
    Dernier message: 12/03/2006, 07h01

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