Importation de données sans doublons [Fermé]

Messages postés
7
Date d'inscription
samedi 24 janvier 2015
Statut
Membre
Dernière intervention
27 janvier 2015
- - Dernière réponse : Rankie
Messages postés
7
Date d'inscription
samedi 24 janvier 2015
Statut
Membre
Dernière intervention
27 janvier 2015
- 27 janv. 2015 à 22:59
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
Afficher la suite 

7 réponses

Messages postés
1650
Date d'inscription
dimanche 21 octobre 2012
Statut
Membre
Dernière intervention
10 décembre 2016
318
0
Merci
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 :

http://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.
Messages postés
15958
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
11 novembre 2019
2820
0
Merci
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 http://cjoint.com/
et coller le lien proposé dans le message de réponse

Dans l'attente



michel_m
Messages postés
15958
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
11 novembre 2019
2820 > Rankie
Messages postés
7
Date d'inscription
samedi 24 janvier 2015
Statut
Membre
Dernière intervention
27 janvier 2015
-
Bonjour,
désolé mais mon ordi ne lit pas les " .rar".... merci de joindre avec zip
Rankie
Messages postés
7
Date d'inscription
samedi 24 janvier 2015
Statut
Membre
Dernière intervention
27 janvier 2015
> michel_m
Messages postés
15958
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
11 novembre 2019
-
http://cjoint.com/?EAAiSojfmeU

Je viens de créer un fichier zip. merci
michel_m
Messages postés
15958
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
11 novembre 2019
2820 > Rankie
Messages postés
7
Date d'inscription
samedi 24 janvier 2015
Statut
Membre
Dernière intervention
27 janvier 2015
-
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.
Rankie
Messages postés
7
Date d'inscription
samedi 24 janvier 2015
Statut
Membre
Dernière intervention
27 janvier 2015
> michel_m
Messages postés
15958
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
11 novembre 2019
-
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
michel_m
Messages postés
15958
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
11 novembre 2019
2820 > Rankie
Messages postés
7
Date d'inscription
samedi 24 janvier 2015
Statut
Membre
Dernière intervention
27 janvier 2015
-
et pour la feuille "assist" quelle numéro assist3 ?
Messages postés
15958
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
11 novembre 2019
2820
0
Merci
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"
http://cjoint.com/?3AAo0nWbYvZ
Messages postés
7
Date d'inscription
samedi 24 janvier 2015
Statut
Membre
Dernière intervention
27 janvier 2015
0
Merci
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
Messages postés
15958
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
11 novembre 2019
2820
0
Merci
J'avais mal lu ta demande: je regarde dans la journée
Messages postés
15958
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
11 novembre 2019
2820
0
Merci
re,

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

Je serai absent à partir de Mercredi pm pour au mons une semaine...
michel_m
Messages postés
15958
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
11 novembre 2019
2820 -
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
pijaku
Messages postés
12253
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
19 juillet 2019
2218 > michel_m
Messages postés
15958
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
11 novembre 2019
-
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...
Rankie
Messages postés
7
Date d'inscription
samedi 24 janvier 2015
Statut
Membre
Dernière intervention
27 janvier 2015
-
Merci beaucoup, j'apprécie vraiment le coup de main. Bravo!
Messages postés
12253
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
19 juillet 2019
2218
0
Merci
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 

Rankie
Messages postés
7
Date d'inscription
samedi 24 janvier 2015
Statut
Membre
Dernière intervention
27 janvier 2015
-
Merci, super sympa, j'essaie cela demain.