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 :

Changer la valeur d'un doublon par une autre valeur existante


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Webmarketer
    Inscrit en
    Août 2020
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Maroc

    Informations professionnelles :
    Activité : Webmarketer
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2020
    Messages : 9
    Par défaut Changer la valeur d'un doublon par une autre valeur existante
    Bonjour, j'ai mis en exécution ce code pour chercher les doublons et ouvrir ensuite un MsgBox au cas ou la condition est vraie.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Private Sub Worksheet_Change(ByVal Target As Range)
     
    On Error Resume Next
     
    Range("B3:B" & Range("B" & Rows.Count).End(xlUp).Row).AdvancedFilter Action:=xlFilterInPlace, Unique:=True
     
    If Application.Subtotal(103, Columns(2)) <> Application.CountA(Columns(2)) Then
        MsgBox "bla bla bla"
    End If
     
    End Sub
    J'aimerais en ajouter un code pour changer la valeur de la cellule qui contient le doublon par une autre valeur d'une autre cellule dans la même feuille.

    Par exemple : le doublon se trouve dans la cellule B17 et j'aimerais changer sa valeur par celle de la cellule A1

  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
    Salut.

    Ton problème n'est pas suffisamment détaillé et le code donné ne l'illustre pas.

    Si tu supprimes les doublons par filtre avancé (en 365, il y a une solution plus simple à mettre en place avec RemoveDuplicates...), tu n'as forcément plus de doublons à l'arrivée, et il devient donc délicat d'identifier les doublons que tu viens de supprimer... CQFD!

    De plus, UN exemple n'est bien entendu pas suffisant pour déduire une règle de gestion. Pourquoi B17, pourquoi A1? Quelle sera la paire de cellules à utiliser pour B18? etc...


    Une explication détaillée avec, soyons fous!, une copie d'écran expliquant ta situation actuelle et le résultat escompté sera probablement plus fructueuse.

    Au passage, les filtres avancés, ça a vraiment vieilli et les versions actuelles d'Excel offrent des solutions moins lourdes.
    "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
    Homme Profil pro
    Webmarketer
    Inscrit en
    Août 2020
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Maroc

    Informations professionnelles :
    Activité : Webmarketer
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2020
    Messages : 9
    Par défaut
    Bonjour Mr Pierre Fauconnier et merci pour votre attention à mon problème.

    Je me rends compte que je me suis mal exprimé, vu que mon niveau en VBA est nul, j'essaye de faire de mon mieux pour présenter mon problème.

    Le code suivant (trouvé sur internet) qui fonctionne parfaitement pour moi me permet de vérifier si une référence est en double dans la colonne (B) de ma feuille excel et me renvoie un MsgBox quand il existe un doublon comme décrit ci-dessous:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Private Sub Worksheet_Change(ByVal Target As Range)
     
    On Error Resume Next
     
    Range("B3:B" & Range("B" & Rows.Count).End(xlUp).Row).AdvancedFilter Action:=xlFilterInPlace, Unique:=True
     
    If Application.Subtotal(103, Columns(2)) <> Application.CountA(Columns(2)) Then
        MsgBox "bla bla bla"
    End If
     
    End Sub
    Ce que je veux faire est d'attacher un nouveau code à celui-ci qui change automatiquement la dernière valeur trouvée en double dans la Colonne (B) par une valeur qui se trouve en permanence dans la cellule A1 (Peut importe la cellule qui contient la valeur en double dans la colonne (B) doit se changer par la valeur de la cellule A1)

    Pour info: la cellule A1 contient le dernière référence utilisée et j'utilise un code pour l'incrémenter à chaque fois un doublon a été détecté, donc copier coller sa valeur à la place du doublon détecté.

    d'abord j'espère que mon problème est détaillé suffisamment pour se faire comprendre, et si se trouve un code plus léger et efficace pour appliquer la détection d'un doublon et changement automatique de sa valeur par celle de la cellule A1 je serai ouvert à toute suggestion.
    Images attachées Images attachées  

  4. #4
    Expert confirmé
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Billets dans le blog
    7
    Par défaut
    Bonjour,

    VBA inutile dans ce cas.

    Sur la base d'un tableau structuré de cette forme, débutant en A1.

    Nom : Capture_doublon_20201022.JPG
Affichages : 140
Taille : 14,5 Ko

    Tu peux considérer une colonne supplémentaire, ici MATOS2
    avec pour formule

    =SI((EQUIV([@MATOS];[MATOS];0)<>LIGNE()-1);G$1;[@MATOS])
    La cellule G1, ici, retourne la valeur fixe "TOTO" (pour toi A1).

    Cette façon de procéder te fera sauvegarder ta base de départ, sur laquelle tu pourras toujours rebondir dans la suite de ton projet.

    Ici, la notion de tableau structuré prend toute son importance.
    En effet, la plage de recherche évoluera automatiquement en fonction des nouveaux enregistrements à venir.
    Et la fonction s'incrémentera d'elle même.
    Plus trivialement: NamesAdd = OUT, End(xlUp) = OUT

Discussions similaires

  1. [XL-2010] Changer valeur d'une cellule par une autre automatiquement
    Par Netsky.m dans le forum Excel
    Réponses: 19
    Dernier message: 07/01/2018, 02h21
  2. Distinguer des doublons par une autre colonne
    Par rombos dans le forum Requêtes
    Réponses: 3
    Dernier message: 31/08/2016, 21h00
  3. Réponses: 2
    Dernier message: 12/03/2008, 13h44
  4. Réponses: 2
    Dernier message: 21/12/2006, 00h16
  5. remplacement d'une valeur par une autre
    Par hugoos dans le forum Langage
    Réponses: 9
    Dernier message: 20/09/2005, 21h43

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