Importation de données sans doublons

Fermé
Rankie Messages postés 7 Date d'inscription samedi 24 janvier 2015 Statut Membre Dernière intervention 27 janvier 2015 - 24 janv. 2015 à 23:46
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

7 réponses

Utilisateur anonyme
25 janv. 2015 à 00:06
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
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
25 janv. 2015 à 08:18
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
Rankie Messages postés 7 Date d'inscription samedi 24 janvier 2015 Statut Membre Dernière intervention 27 janvier 2015
25 janv. 2015 à 10:51
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
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303 > Rankie Messages postés 7 Date d'inscription samedi 24 janvier 2015 Statut Membre Dernière intervention 27 janvier 2015
26 janv. 2015 à 08:29
Bonjour,
désolé mais mon ordi ne lit pas les " .rar".... merci de joindre avec zip
0
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 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023
26 janv. 2015 à 08:35
https://www.cjoint.com/c/EAAiSojfmeU

Je viens de créer un fichier zip. merci
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303 > Rankie Messages postés 7 Date d'inscription samedi 24 janvier 2015 Statut Membre Dernière intervention 27 janvier 2015
26 janv. 2015 à 08:47
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
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 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023
26 janv. 2015 à 09:29
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
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
26 janv. 2015 à 14:45
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
Rankie Messages postés 7 Date d'inscription samedi 24 janvier 2015 Statut Membre Dernière intervention 27 janvier 2015
Modifié par Rankie le 26/01/2015 à 21:43
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
27 janv. 2015 à 08:06
J'avais mal lu ta demande: je regarde dans la journée
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
27 janv. 2015 à 10:05
re,

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

Je serai absent à partir de Mercredi pm pour au mons une semaine...
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
Modifié par michel_m le 27/01/2015 à 11:55
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
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743 > michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023
27 janv. 2015 à 12:20
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
Rankie Messages postés 7 Date d'inscription samedi 24 janvier 2015 Statut Membre Dernière intervention 27 janvier 2015
27 janv. 2015 à 22:58
Merci beaucoup, j'apprécie vraiment le coup de main. Bravo!
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743
27 janv. 2015 à 12:22
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
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
Merci, super sympa, j'essaie cela demain.
0