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!
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
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
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
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
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