Bonjour à tous,

J’ai un fichier source 2010 STD Activities status feuille 2010
J’ai un fichier de synthèse Analyse NQC imports+NQC avec la feuille std

Le fichier source évolue tous les jours (les données changent) . L’objectif de la macro est de copier les lignes sous certaines conditions et de les insérer (dans la feuille 2010) sous une certaine forme.

Jusqu’ici ça fonctionne très bien

Mon problème est que je souhaite mettre à jour la feuille std régulièrement. Si la ligne est déjà copiée, j’aimerais que la nouvelle ligne vienne se copier dessus la précédente sur la feuille (std)
Si la ligne n’existe pas alors l’insérer.
Pour les deux fichiers j’ai une valeur commune colonne A pour la feuille STD et colonne B pour la feuille 2010 (Fichier source).

Est ce que quelqu’un à une idée car je n’y arrive plus (je suis débutante)

Merci d'avance
Delphine


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
40
41
42
43
Sub ReporterV2()
 
Dim dest As Worksheet, origine As Worksheet
Dim LastLig As Long, NewLig As Long
Dim c As Range
Dim valeur As String
Set origine = Workbooks("2010 STD Activities status.xls").Sheets("2010")
valeur = InputBox("Entrée période", "Choix de la période")
If valeur <> "" Then
    Application.ScreenUpdating = False
    With origine
        .AutoFilterMode = False
        LastLig = .Cells(.Rows.Count, "A").End(xlUp).Row
        With .Range("A4:X" & LastLig)
            .AutoFilter field:=17, Criteria1:=valeur
            .AutoFilter field:=24, Criteria1:=">0"
            .AutoFilter field:=9, Criteria1:="STD"
        End With
        If .Range("A4:A" & LastLig).SpecialCells(xlCellTypeVisible).Count > 1 Then
            Set dest = Worksheets("std")
            NewLig = dest.Cells(dest.Rows.Count, "A").End(xlUp).Row + 1
            For Each c In .Range("A5:A" & LastLig).SpecialCells(xlCellTypeVisible)
                If c.Offset(0, 23).Font.Color = vbBlue Then
                    dest.Cells(NewLig, 1).Value = .Cells(c.Row, 2).Value
                    dest.Cells(NewLig, 2).Value = .Cells(c.Row, 7).Value
                    dest.Cells(NewLig, 3).Value = .Cells(c.Row, 8).Value
                    dest.Cells(NewLig, 6).Value = .Cells(c.Row, 10).Value
                    dest.Cells(NewLig, 8).Value = .Cells(c.Row, 12).Value
                    dest.Cells(NewLig, 17).Value = .Cells(c.Row, 17).Value
                    dest.Cells(NewLig, 13).Value = .Cells(c.Row, 24).Value
                    dest.Cells(NewLig, 9).Value = .Cells(c.Row, 9).Value
                    dest.Cells(NewLig, 10).Value = .Cells(c.Row, 29).Value
                    dest.Cells(NewLig, 4).Value = UCase(dest.Cells(NewLig, 1).Value) & UCase(dest.Cells(NewLig, 2).Value)
                    dest.Cells(NewLig, 4).Value = Replace(Cells(NewLig, 3).Value, " ", "")
                    NewLig = NewLig + 1
                End If
            Next c
            Set dest = Nothing
            .AutoFilterMode = False
        End If
    End With
End If
End Sub