Importation de données sans doublons

Rankie Messages postés 8 Statut Membre -  
Rankie Messages postés 8 Statut Membre -
Bonjour,
je débute en programmation avec macro excel.
J'ai développé une macro pour exporter les données d'un fichier A vers un fichier B. A chaque fois que ma collègue ferme son fichier, cela envoie le contenu de sa feuille (en fait un tableau) vers un autre fichier situé dans un autre répertoire. Le problème, l'export concerne aussi bien les données déjà enregistrées (dont ayant fait l'objet d'export) que celles du jour (donc jamais exportée). De son coté elle doit garder sa base intègre pour faire des stats, comment exporter que les données qui n'ont jamais l'objet d'un export précédent vers le fichier B ?
J'espère avoir été clair, j'ai besoin d'aide, merci

7 réponses

  1. Utilisateur anonyme
     
    Bonjour,

    L'idée dans ta macro c'est de choisir quelle colonne identifie les données de manière unique. Ca peut être plusieurs colonnes et comparer chaque donnée pour voir si elle correspond ou pas, les fonctions de parcours te seront utiles comma par exemple :

    https://www.developpez.net/forums/d605223/logiciels/microsoft-office/excel/contribuez/boucles-parcourir-colonne-ligne-plage-donnees-2-methodes/

    Ceci est un autre débat mais ...

    Quand les gens auront compris qu'Excel n'est pas une base de données on aura fait un très grand pas. Ce n'est clairement pas fait pour ça et quand je vois la complexité et les bidouillages pour arriver à faire quelque chose qui est tout naturel dans la gestion d'une base de données, autant apprendre au départ à se servir des outils adéquats même s'ils sont peut être plus complexes.
    0
  2. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    Bonjour,

    Pour te proposer quelque chose il faudrait que:

    -tu dises combien de lignes et de colonnes comporte ton exportation

    -au besoin, joindre un extrait (et non un exemple)
    pour cela
    mettre le classeur sans données confidentielles en pièce jointe sur https://www.cjoint.com/
    et coller le lien proposé dans le message de réponse

    Dans l'attente

    0
    1. Rankie Messages postés 8 Statut Membre
       
      Bonjour, merci de ta réponse aussi rapide
      Mon problème doit te sembler bien simple
      Je voudrais simplement exporter de Devis_validés_G (feuille BD devis) vers le fichier Exportdevis que les lignes qui n'ont jamais été exportées.
      Pour cela j'ai rajouté une colonne Export qui est à "N", je souhaiterai que seule les lignes ou cette valeur est à N soient exportées et alors quand c'est fait la valeur passe à "O"
      Merci pour ton aide, je trouve ici l'entrainde vraiment bien


      https://www.cjoint.com/?3Azk3zLKcD5
      0
    2. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320 > Rankie Messages postés 8 Statut Membre
       
      Bonjour,
      désolé mais mon ordi ne lit pas les " .rar".... merci de joindre avec zip
      0
    3. Rankie Messages postés 8 Statut Membre > michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention  
       
      https://www.cjoint.com/c/EAAiSojfmeU

      Je viens de créer un fichier zip. merci
      0
    4. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320 > Rankie Messages postés 8 Statut Membre
       
      Exportation dans quelle feuille : assist X ?...

      Nombre de ligne réel (environ) dans la feuille BD devis ? le choix d'une méthode varie suivant le nombre.
      0
    5. Rankie Messages postés 8 Statut Membre > michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention  
       
      Il doit avoir sur cette feuille BD devis à la fin de l'année (je compte faire une purge tous les ans) autour de 1000 enregistrements
      0
  3. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    Re,
    ci joint proposition d'import "avec les 1" depuis le classeur exportdevis
    (on pourra le faire à partit de dvis_validés si tu y tiens) car tu as indiqué: purge tous les ans et on a plus "quand elle ferme le fichier"
    https://www.cjoint.com/?3AAo0nWbYvZ
    0
  4. Rankie Messages postés 8 Statut Membre
     
    Bonsoir,
    En fait j'exporte le contenu de BD devis de Devis_validés_G (boutons export) vers le fichier exportdevis sur la feuille assist3 (ce fichier est toujours fermé, seule la macro l'ouvre pour y enregistrer les données et puis le ferme), je voudrais de pas exporter des données déja exportées lors d'un précédent export. je ne comprends pas ta macro
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    J'avais mal lu ta demande: je regarde dans la journée
    0
  7. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    re,

    proposition rectifiée
    https://www.cjoint.com/?3ABkowOUcxA

    Je serai absent à partir de Mercredi pm pour au mons une semaine...
    0
    1. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
       
      BRAVO: belle mentalité
      http://www.commentcamarche.net/forum/affich-31438194-exporter-sans-doublons

      C'est plus que décevant de donner des coups de main avec des individus comme toi
      0
      1. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773 > michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention  
         
        Salut Michel,

        Deux choses :
        - je supprime le doublon (après copié-collé du code que Patty5083 a trouvé ici),
        - j'ai repris ta fonction remplaçant FindNext dans ma fiche sur la Méthode Find. ICI.
        Merci à toi donc...
        0
    2. Rankie Messages postés 8 Statut Membre
       
      Merci beaucoup, j'apprécie vraiment le coup de main. Bravo!
      0
  8. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
     
    Réponse de Patty5083 le 27 janv. 2015 à 11:40
    Collée ici suite à suppression doublon.

    Bonjour
    Je ne sais pas si tu as la solution, mais j'ai essayé cela, ça a l'air de marcher : trier par la colonne export,récupérer toutes les lignes comportant "N" en allongeant chaque fois la sélection...Je ne suis pas une pro, mais j'aime bien chercher
    Voilà le résultat que tu peux peut-être améliorer :

    Sub Exportdevis()
    '
    ' Exportdevis Macro
    ' Exporter base de données (BD Devis) vers fichier de consolidation : Export devis
    '
    CptN = 0
    'A partir du fichier Devis validés G
    'Selection de la feuille "BD Devis et selection de la plage à exporter "BD_Devis_export" et lancement fonction copier
     Sheets("BD Devis").Select
     NbLigDV = Application.CountA(Sheets("BD Devis").Range("B:B"))
     ActiveWorkbook.Worksheets("BD Devis").Sort.SortFields.Add Key:=Range("Q2:Q" & NbLigDV _
            ), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
        With ActiveWorkbook.Worksheets("BD Devis").Sort
            .SetRange Range("B1:Q" & NbLigDV)
            .Header = xlYes
            .MatchCase = False
            .Orientation = xlTopToBottom
            .SortMethod = xlPinYin
            .Apply
        End With
     For i = 2 To NbLigDV
        Cell = "Q" & i
        If Range(Cell).Value = "N" Then
            CptN = CptN + 1
            If CptN = 1 Then
            'récupérer 1ère ligne selectionnée
                NumSel = i
            End If
            Range(Cell).Value = "O"
            If CptN = 1 Then
                Range("B" & i, "P" & i).Select
            Else
                Range("B" & NumSel, ActiveCell.Offset(i - NumSel, 15)).Select
            End If
        End If
     Next
     Selection.Copy
     CptN = CptN + 1
        With ActiveWorkbook.Worksheets("BD Devis").Sort
            .SetRange Range("B1:Q" & CptN)
            .Header = xlYes
            .MatchCase = False
            .Orientation = xlTopToBottom
            .SortMethod = xlPinYin
            .Apply
        End With
     'Range("BD_Devis_export").Select
     'Selection.Copy
    'Ouverture fichier Export devis et sélection de la feuille assistante 3 "Assist3"
      Workbooks.Open Filename:= _
            "C:\Users\Toto\Desktop\Exportdevis.xlsm"
            Sheets("Assist3").Select
    'Aller à la cellule correspondant à la fin du tableau et lancer la commance coller valeur&format
        Range("A" & Rows.Count).End(xlUp).Offset(1).Select
        Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
            xlNone, SkipBlanks:=False, Transpose:=False
        Application.CutCopyMode = False
    'Fermer le fichier Export devis
        Workbooks("Exportdevis.xlsm").Close True
    'Sur le fichier "Devis validés G"
        Workbooks("Devis_validés_G.xlsm").Activate
    'Les données de BD devis exportées sont colorées en marron
        Sheets("BD Devis").Select
        Range("BD_Devis_export").Select
        With Selection.Font
            .ThemeColor = xlThemeColorAccent2
            .TintAndShade = 0
        End With
     'Aller à la feuille menu et selectionner la cellule T21 et y inscrire la date et l'heure du moment (attention format cellule)
        Sheets("Menu").Select
        Range("T21").Select
        ActiveCell.FormulaR1C1 = "=NOW()"
        Range("T21").Select
     'Copier la cellule sur T22 (valeur)
        Selection.Copy
        Range("T22").Select
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
    'Effacer la cellule T21
        Range("T21").Select
        Selection.ClearContents
    'Se positionner sur B3
        Range("B3").Select
    
    End Sub 

    0
    1. Rankie Messages postés 8 Statut Membre
       
      Merci, super sympa, j'essaie cela demain.
      0