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 :

création d'une macro pour mettre à jour une BDD


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Femme Profil pro
    Inscrit en
    Novembre 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Novembre 2012
    Messages : 5
    Par défaut création d'une macro pour mettre à jour une BDD
    Bonjour

    étant débutante en VBA, vous êtes mon unique chance de parvenir à réaliser ce travail..
    Je vous explique, j'ai un extrait (200 lignes) d'une base de données. J'ai pour mission de supprimer les doublons. Rapidement on remarque qu'il existe plusieurs lignes d'une même société, parfois avec une adresse identique (cas 1), parfois avec une adresse différente (cas 2).
    Dans le cas 1, il s'agirait de garder la ligne qui contient le plus d'informations importantes (n° de téléphone, mail, nom du contact, adresse, ...)
    Dans le cas 2, il s'agirait de conserver de tout car on considèrerait alors qu'il s'agit de lignes bien distinctes.
    Je joins à ce message l'extrait en question en espérant grandement que quelqu'un pourra me sauver
    Merci d'avance !
    Morgane
    Fichiers attachés Fichiers attachés

  2. #2
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut heu
    bonjour Morganne

    comme ca vite fait je vois 2 boucle imbriquée
    la premier boucle sur tout les nom
    la deuxieme boucle sur les nom et les addresses
    en comparant nom et adresse on supprime les adresse en double
    exemple vite fait et regarde les commentaire dans le code c'st plus qu'important

    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
    39
     
    Dim nom As String, adresse As String, i As Long, e As Long    ' declaration des variable
        Sub tri_les_doublon_par_le_nom_et_les_adresse()
     
        ' on apelle la verif des espaces apres la derniere lettre du nom  avant de faire le tri
       Application.ScreenUpdating = fase    ' pour eviter de voir syntiller ton ecran
         verification_des_espaces_apres_les_noms
     
        For i = 2 To Range("d" & Rows.Count).End(xlUp).Row    '1 ere boucle sur la colonne des nom
     
            nom = Cells(i, "d")    'a chaque tour de boucle la variable nom prend la valeur de la celulle"D" en ligne "i"
            adresse = Cells(i, "d").Offset(0, 1)    'a chaque tour de boucle la variable adresse prend la valeur de la celulle"e" en ligne "i"
     
            For e = 3 To Range("d" & Rows.Count).End(xlUp).Row    '2eme boucle sur la colonne"d"
    '1ere condition
    'si la cellule "D" en ligne e =  nom et celle d'a coté a droite = adresse
                If Cells(e, "d").Value = nom And Cells(e, "d").Offset(0, 1).Value = adresse Then
                    '2eme Condition
                    'si la ligne e est differnete de i alors on supprime la ligne
                    If Cells(e, "d").Row <> Cells(i, "d").Row Then
                        Cells(e, "d").EntireRow.Delete
                    End If
                End If
            Next e
        Next i
    End Sub
    ' ATTENTION' ATTENTION' ATTENTION' ATTENTION' ATTENTION' ATTENTION' ATTENTION' ATTENTION
    ' ATTENTION L'ORS DE L'ESSAI DE MA MACRO IL Y AVAIT DES ERREURS POUR LA SIMPLE ET BONNE RAISON QUE LES NOM MEME SI IL ONT L'AIR PAREIL
    'il y a un espace qui sui le nom sur certains nom identique alors forcement il est pris comme différent
     
    'exemple:
     
    '"toto"
    '"toto "
    ' alors avant de faire le tri on verifie les espaces apres la derniere lettre du nom
    Function verification_des_espaces_apres_les_noms()
    For i = 2 To Range("d" & Rows.Count).End(xlUp).Row
    If Right(Cells(i, "d"), 1) = " " Then Cells(i, "d") = Left(Cells(i, "d"), Len(Cells(i, "d")) - 1)
    Next
    encore une fois fait attention au espaces qui suivent les nom dans les cellules bien que maintenant la macro se charge de corriger le probleme

    au plaisir
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  3. #3
    Futur Membre du Club
    Femme Profil pro
    Inscrit en
    Novembre 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Novembre 2012
    Messages : 5
    Par défaut
    bonjour et merci bcp pour cette solution !

    cela fonctionne bien et j'en suis ravie !
    maintenant, penses tu qu'il serait possible que la macro puisse comparer les adresses 1, 2 et 3 pour éviter les doublons sur ce point la ?

    merci encore !
    au plaisir

    Morgane

    ou alors, ne serait ce pas intéressant de trier suivant la date de création de la ligne ?
    si j'ai deux lignes concernant la société X, ayant la même adresse, préférer de concerver la ligne ayant été créée en dernier ? la plus récente quoi...
    Merci !

  4. #4
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    bonjour morganne

    oulala ne t'emballe pas je n'etait pas sur ton fichier la

    de toute facon a mon avis c'est possible

    de comparer les adresse 1,2,3

    maintenant pour les dates je n'est pas ton fichier sous les yeux je vais regarder

    maintenant a tu compris au moins quelque chose dans ce code

    car l'interet du forum c'est pas de faire ton travail mais de t'aider

    je regarde ca et je reviens plus tard

    au plaisir
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  5. #5
    Futur Membre du Club
    Femme Profil pro
    Inscrit en
    Novembre 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Novembre 2012
    Messages : 5
    Par défaut
    oui oui je pense l'avoir à 75 % compris (les 25 % restant, je vais les bucher !) j'apprends énormément !
    c'est vraiment très gentil, merci !

  6. #6
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    re

    ton fichier c'est un foutoir je ne sais pas qui le rempli mais y aucune rigueur

    les nom identique peuvent avoir des accents ou pas ce qui rend la macro inoperente de ce coté la puisque le moindre caracvtere different rend la valeur unique

    ensuite les espaces ou non a lafin des nom et adresse

    non vraiment

    en vba on peut faire beaucoup de chose mais excel ne devine pas

    bon je continu je crois avoir une solution mais amon avis la macro ne fonctionnera pas longtemps si tu continu a remplir tes lignes de la meme maniere alors je pense que pour le bien de tous et surtout le peu de cheveux qu'il me reste je transformer tout les noms en majuscule de facon a ce qu'il n'y est plus d'accent ect.....

    a tu compris

    avec ton niveau en vba et un tableau pareil tu n'y serait jamais arrivé

    bon ma crise est passé je reviens avec une new version

    au plaisir
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  7. #7
    Futur Membre du Club
    Femme Profil pro
    Inscrit en
    Novembre 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Novembre 2012
    Messages : 5
    Par défaut
    et oui, j'avoue que c'est vraiment le bazard! ce n'est pas moi qui l'ai rempli sinon, je peux dire qu'il serait bcp mieux renseigné !

    merci encore et infinimment

    morgane

Discussions similaires

  1. Mettre du code pour mettre à jour une zone
    Par AgriPhilou dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 01/06/2008, 13h25
  2. Soucis pour mettre à jour une liste déroulante.
    Par Fbzn_office dans le forum VBA Access
    Réponses: 1
    Dernier message: 06/03/2008, 19h22
  3. Réponses: 1
    Dernier message: 16/05/2007, 20h31
  4. Réponses: 8
    Dernier message: 09/01/2007, 16h30
  5. Réponses: 2
    Dernier message: 06/04/2006, 21h18

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