XL 2013 VBA export de fichier+ modification de colonne

looky62

XLDnaute Occasionnel
Bjr la communauté,

Je vous partage mon fichier où je n'arrive plus a progresser dans l évolution de mon projet si qq un d'entre vous pourrez m'aider

Ci joint mon pb
j'ai un fichier source que j'importe par une macro nommé source ( pr simplifier elle n'est pas en VBA ici)
Ensuite j'ai un fichier " A modifier" que j importe ici dans l onglet 'a Modifier" , dans la colonne D, j'ai des "Non" que je dois insérer dans mon fichier source, à la place des "Oui"
et ensuite idéalement exporter le classeur " dans "résultat" et l exporter en xls, (ça c pas le plus dur!)

Où je bloque c la manière de faire, soit par une recherche V, ou un copier coller et je supprime les anciens av un systéme de doublon mais l'idéal est de les remplacer ds la colonne D::: car peut être mes colonnes s'enrichiront!
 

Pièces jointes

  • TEST MACRO VG.xlsm
    61.4 KB · Affichages: 6

vgendron

XLDnaute Barbatruc
ah oui effectivement.. en fait, la macro telle qu'ell est passe son temps à mettre OUI puis remettre Non à chaque fois qu'on change de code 'à modifier"

changement de macro ici;
VB:
Sub DeuxièmeCas()
Dim TabSource() As Variant
Dim TabModif() As Variant

With Sheets("A modifier")
    TabModif = .Range("A1").CurrentRegion.Value
End With

With Sheets("Source")
    TabSource = .Range("A1").CurrentRegion.Value
End With
For j = LBound(TabSource, 1) + 1 To UBound(TabSource, 1) 'on met tout à N
    TabSource(j, 4) = "N"
Next j
For i = LBound(TabModif, 1) + 1 To UBound(TabModif, 1) 'on ne remet à O que les codes à modifier
    For j = LBound(TabSource, 1) + 1 To UBound(TabSource, 1)
        If TabSource(j, 1) = TabModif(i, 1) Then
            TabSource(j, 4) = "O"
        End If
    Next j
Next i
Sheets("Resultat").Range("A1").Resize(UBound(TabSource, 1), UBound(TabSource, 2)) = TabSource
End Sub
 

looky62

XLDnaute Occasionnel
ah oui effectivement.. en fait, la macro telle qu'ell est passe son temps à mettre OUI puis remettre Non à chaque fois qu'on change de code 'à modifier"

changement de macro ici;
VB:
Sub DeuxièmeCas()
Dim TabSource() As Variant
Dim TabModif() As Variant

With Sheets("A modifier")
    TabModif = .Range("A1").CurrentRegion.Value
End With

With Sheets("Source")
    TabSource = .Range("A1").CurrentRegion.Value
End With
For j = LBound(TabSource, 1) + 1 To UBound(TabSource, 1) 'on met tout à N
    TabSource(j, 4) = "N"
Next j
For i = LBound(TabModif, 1) + 1 To UBound(TabModif, 1) 'on ne remet à O que les codes à modifier
    For j = LBound(TabSource, 1) + 1 To UBound(TabSource, 1)
        If TabSource(j, 1) = TabModif(i, 1) Then
            TabSource(j, 4) = "O"
        End If
    Next j
Next i
Sheets("Resultat").Range("A1").Resize(UBound(TabSource, 1), UBound(TabSource, 2)) = TabSource
End Sub
TOP c'est exactement ça ! , ça marche impeccable,
Si je peux abuser, j'aimerais que mes utilisateurs puissent modifier le chemin du fichier où il se trouve par exemple sous leur PC afin de faire tourner la Macro mais sans pouvoir modifier le reste au risque de faire une bétise!
Workbooks.Open Filename:= _
"C:\Users\XXXXX\Downloads\Export.csv"

Peut on mettre une protection sur certains modules VBA et d'autres NON? si oui je déplacerai le chemin du fichier sur un autre module!

Sur mon onglet TDB , j'aimerais figer mes formes afin qu'il ne puisse pas les bouger, en les groupant , mais aussi mettre une protection de la feuille sans pour autant que mes boutons soient figés, Est ce possible
Merci encore pr ton aide
 

looky62

XLDnaute Occasionnel
ah oui effectivement.. en fait, la macro telle qu'ell est passe son temps à mettre OUI puis remettre Non à chaque fois qu'on change de code 'à modifier"

changement de macro ici;
VB:
Sub DeuxièmeCas()
Dim TabSource() As Variant
Dim TabModif() As Variant

With Sheets("A modifier")
    TabModif = .Range("A1").CurrentRegion.Value
End With

With Sheets("Source")
    TabSource = .Range("A1").CurrentRegion.Value
End With
For j = LBound(TabSource, 1) + 1 To UBound(TabSource, 1) 'on met tout à N
    TabSource(j, 4) = "N"
Next j
For i = LBound(TabModif, 1) + 1 To UBound(TabModif, 1) 'on ne remet à O que les codes à modifier
    For j = LBound(TabSource, 1) + 1 To UBound(TabSource, 1)
        If TabSource(j, 1) = TabModif(i, 1) Then
            TabSource(j, 4) = "O"
        End If
    Next j
Next i
Sheets("Resultat").Range("A1").Resize(UBound(TabSource, 1), UBound(TabSource, 2)) = TabSource
End Sub
Bjr Venģdron

Merci encore, j ai un nv cas si ds mon fichier à modifier j ai nv site qui ne sont pas ds mon fichier source comment puis je faire pour aller les coller ds un nv onglet nv site

Est ce que vs pourriez m aider ?
 

looky62

XLDnaute Occasionnel
ah oui effectivement.. en fait, la macro telle qu'ell est passe son temps à mettre OUI puis remettre Non à chaque fois qu'on change de code 'à modifier"

changement de macro ici;
VB:
Sub DeuxièmeCas()
Dim TabSource() As Variant
Dim TabModif() As Variant

With Sheets("A modifier")
    TabModif = .Range("A1").CurrentRegion.Value
End With

With Sheets("Source")
    TabSource = .Range("A1").CurrentRegion.Value
End With
For j = LBound(TabSource, 1) + 1 To UBound(TabSource, 1) 'on met tout à N
    TabSource(j, 4) = "N"
Next j
For i = LBound(TabModif, 1) + 1 To UBound(TabModif, 1) 'on ne remet à O que les codes à modifier
    For j = LBound(TabSource, 1) + 1 To UBound(TabSource, 1)
        If TabSource(j, 1) = TabModif(i, 1) Then
            TabSource(j, 4) = "O"
        End If
    Next j
Next i
Sheets("Resultat").Range("A1").Resize(UBound(TabSource, 1), UBound(TabSource, 2)) = TabSource
End Sub
Sur un autre pb, où vous m'aviez bien aidez, j'ai un nv cas de figure où je n'arrive pas a résoudre,
Les 2 cas fonctionnent correctement, j'ai un troisiéme cas où dans onglet a modifier, il ne retrouve aucune référence a ma source, où j'aimerai les isoler ds un nouveau onglet par exemple "Nouveau" comment puis je faire?
Sub PremierCas()
Dim TabSource() As Variant
Dim TabModif() As Variant
With Sheets("A modifier")
TabModif = .Range("A1").CurrentRegion.Value
End With
With Sheets("Source")
TabSource = .Range("A1").CurrentRegion.Value
End With
For i = LBound(TabModif, 1) + 1 To UBound(TabModif, 1)
For J = LBound(TabSource, 1) + 1 To UBound(TabSource, 1)
If TabSource(J, 1) = TabModif(i, 1) Then
TabSource(J, 7) = "O"
End If
Next J
Next i
Sheets("Résultat").Range("A1").Resize(UBound(TabSource, 1), UBound(TabSource, 2)) = TabSource
End Sub
Sub DeuxièmeCas()
Dim TabSource() As Variant
Dim TabModif() As Variant
With Sheets("A modifier")
TabModif = .Range("A1").CurrentRegion.Value
End With
With Sheets("Source")
TabSource = .Range("A1").CurrentRegion.Value
End With
For J = LBound(TabSource, 1) + 1 To UBound(TabSource, 1) 'on met tout à N
TabSource(J, 7) = "N"
Next J
For i = LBound(TabModif, 1) + 1 To UBound(TabModif, 1) 'on ne remet à O que les codes à modifier
For J = LBound(TabSource, 1) + 1 To UBound(TabSource, 1)
If TabSource(J, 1) = TabModif(i, 1) Then
7 TabSource(J, 7) = "O"
End If
Next J
Next i
Sheets("Résultat").Range("A1").Resize(UBound(TabSource, 1), UBound(TabSource, 2)) = TabSource
End Sub
 

Pièces jointes

  • TEST MACRO VG-1 (5).xlsm
    80.9 KB · Affichages: 2

vgendron

XLDnaute Barbatruc
Hello
si j'ai bien compris, les codes à modifier qui ne sont pas dans la source doivent etre notés dans la feuille "nouveau"

ca donne la macro 3eme cas
(note: j'ai mis la correction de l'autre post pour l'enregistrement en csv)
 

Pièces jointes

  • TEST MACRO VG-2.xlsm
    85 KB · Affichages: 1

Statistiques des forums

Discussions
312 192
Messages
2 086 054
Membres
103 109
dernier inscrit
boso_vs_viking