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 :

Empêcher des doublons [XL-2003]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Janvier 2010
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 19
    Par défaut Empêcher des doublons
    Bonsoir à tous,

    Lorsque j'effectue une saisie, les données interventions sont écrites sur la Feuille "Données" et l'intervenant et ses heures sur la feuille "heures".

    Lorsque j'effectue une nouvelle saisie d'intervention le même jour, je voudrai éviter les doublons sur la feuille "Heures" pour un même intervenant.

    Merci d'avance pour le coup de main.

    JL

  2. #2
    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
    Bonjour

    On imagine tes données en A pour les travailleurs et en B pour l'heure de début d'intervention.

    On va intercepter le changement de valeur dans une cellule et vérifier que cette cellule appartient à une des colonnes A ou B

    On va mémoriser dans deux variables les valeurs des cellules en A et B pour la ligne considérée

    On va utiliser SOMMEPROD en VBA et voir si cette fonction renvoie un nombre > 1 => déjà saisi

    Si déjà saisi, on annule

    Pour éviter un code risquant de boucler, on désactive la gestion d'évènements, et on la remet en fin de macro.

    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
    Private Sub Worksheet_Change(ByVal Target As Range)
      If Not Intersect(Target, Range("a:b")) Is Nothing Then VerifierDoublons Target
    End Sub
     
    Sub VerifierDoublons(Target As Range)
      Dim Plage1 As String
      Dim Plage2 As String
      Dim Travailleur As String
      Dim Heure As Date
     
      On Error GoTo Fin
     
      Application.EnableEvents = False
     
      If Target.Cells.Count = 1 Then
        Plage1 = Range("a2:a" & Range("a" & Rows.Count).End(xlUp).Row).Address
        Plage2 = Range("b2:b" & Range("a" & Rows.Count).End(xlUp).Row).Address
        Travailleur = Range("a" & Target.Row)
        Heure = Range("b" & Target.Row)
        If Evaluate("sumproduct((" & Plage1 & "=""" & Travailleur & """)*(" & Plage2 & "=" & Heure * 1 & "))") > 1 Then
          MsgBox "Déjà saisi"
          Application.Undo
        End If
      End If
     
    Fin:
      Application.EnableEvents = True
    End Sub
    [EDIT] J'ai oublié de préciser que ce code se place dans le module de la feuille considérée [EDIT]
    "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...
    ---------------

  3. #3
    Membre averti
    Inscrit en
    Janvier 2010
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 19
    Par défaut Re:Doublon
    Bonsoir,

    Merci pour le coup de main, il ne me reste plus qu'a mettre en application.

    A plus sur le forum

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

Discussions similaires

  1. [AC-2003] empêcher une requête ajout d'afficher des doublons dans une table
    Par facteur dans le forum VBA Access
    Réponses: 19
    Dernier message: 31/10/2012, 15h35
  2. Eliminer des Doublon dans une Table
    Par Soulama dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 03/02/2005, 14h27
  3. 1 Table, Des doublons, ne rertenir que certains d'entre eux
    Par Dragano dans le forum Langage SQL
    Réponses: 3
    Dernier message: 26/01/2005, 12h06
  4. Effacer des doublons
    Par ben53 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 12/07/2004, 17h56
  5. Réponses: 2
    Dernier message: 07/07/2004, 17h44

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