Remplacer - correction par VBA

VBA_DEAD

XLDnaute Occasionnel
Bonjour le forum

je voudrias de corriger un fichier par macro.
Pour resumer :
je recois n file et parfois il y a des erreurs.
Quelqu`un me renvoie les corrections et je dois ajuster le file avant de le charger ds nos bases de donnees.
Il y a une combinaison unique de 3 conditions pour identifier le montant a remplacer. bref pas de doublon si on tient compte de 3 elements

J`ai fait une exemple avec des commentaires.
Est ce quelqu`un a deja eu ce probl;eme car je galere pour faire mes corrections manuellement. J`ai des fichiers de +100000lignes avec 40/50 correctiobns a passer en manuel. c`est pas cool:(

Merci pour votre aide eventuelle... et bonnes vacances a ceux qui sont de repos

A+

VBA_DEAD
 

Pièces jointes

  • Remplacer.zip
    3.2 KB · Affichages: 21
  • Remplacer.zip
    3.2 KB · Affichages: 21
  • Remplacer.zip
    3.2 KB · Affichages: 23

gbinforme

XLDnaute Impliqué
Re : Remplacer - correction par VBA

Bonjour à tous,

VBA_DEAD à dit:
car je galere pour faire mes corrections manuellement. J`ai des fichiers de +100000lignes avec 40/50 correctiobns a passer en manuel.

Faut pas exagérer car les feuilles ne font que 65536 lignes !

Voilà ton fichier corrigé avec une macro "correction" à lancer.

En fait pour que ton exemple fonctionne il faut tenir compte de 4 colonnes.

j'ai créé la feuille corrigée si tu veux autrement tu le dis.

@+
 

Pièces jointes

  • Remplacer.xls
    35.5 KB · Affichages: 66
  • Remplacer.xls
    35.5 KB · Affichages: 65
  • Remplacer.xls
    35.5 KB · Affichages: 65
Dernière édition:

Robert

XLDnaute Barbatruc
Repose en paix
Re : Remplacer - correction par VBA

Bonjour le fil, bonjour le forum,

Une proposition que j'envoie quand même, malgré la célérité de Gbinforme...
 

Pièces jointes

  • Remplacer_v1.xls
    41.5 KB · Affichages: 71

VBA_DEAD

XLDnaute Occasionnel
Re : Remplacer - correction par VBA

Bonjour GBinform and Robert,

10 000 lignes! Erreur de frappe :D

Par contre avec le nouveau Windows on peut aller vers + de lignes Lol

Je regarde vos propositions et vous reviens

meci a vous 2 pour votre aide.

a tout a l`heure

VBA_DEAD
 

VBA_DEAD

XLDnaute Occasionnel
Re : Remplacer - correction par VBA

Bon ben j`ai teste et c`est superbe. je vais fiare un max des 2 :
j`ajoute la feuille an auto et ca ajoute la couleur aussi.

Une question au passage :
J`ai une listbox (ds userform) ou je charge mes comptes (existe N comptes avec N doublons parfois car comme indique ds mon exemple, on peut avoir 1 client qui achete plusieurs produits).
Au file excel j`ajoute un petit plus :
je selectionne le compte client et un onglet se cree avec les achat du client.

Mon probleme est la chargement des numeros de comptes ds la listbox ss doublon.
Mon code pour remplir la listbox est le suivant
(avec numeros compte ds colonne I ds la vraie vie)
c`est un code que j`ai recuperer sur le site mais ca m`enleve pas les doublon bref ma liste box s`alimente avec autant de comptes que de lignes et je cherche a avoir une listbox avec compte ss doublons et triee.

Private Sub UserForm_Initialize()
Dim Cell As Range
Dim i As Integer

Set ThisBook = ThisWorkbook
With ThisBook
Set WS1 = .Worksheets("SSD")
End With
Set Plage = WS1.Range("I2:" _
& WS1.Range("I65536").End(xlUp).Address)
ReDim Tab1(1 To Plage.Count)
i = 0
For Each Cell In Plage
i = i + 1

With Cell
Tab1(i) = .Text
End With
Next

TriLB1
End Sub

le tri ici - - - -
Private Sub TriLB1()
Dim ValMin As Integer, ValSup As Integer
Dim i As Integer, j As Integer, ii As Integer
Dim t1 As String, t2 As String
ValMin = LBound(Tab1)
ValSup = UBound(Tab1) ' - 1
For i = ValMin To ValSup
For j = ValMin + ii To ValSup
If Tab1(i) > Tab1(j) Then
t1 = Tab1(j): t2 = Tab1(j)
Tab1(j) = Tab1(i): Tab1(j) = Tab1(i)
Tab1(i) = t1: Tab1(i) = t2
End If
Next j
ii = ii + 1
Next i
ListBox1.List = Tab1
End Sub

Pouvez vous m`aider pour enlever leas doublons??

Merci en tout cas pour votre gros coup de main
VBA_DEAD
 

gbinforme

XLDnaute Impliqué
Re : Remplacer - correction par VBA

VBA_DEAD à dit:
Une question au passage : .....
Mon probleme est la chargement des numeros de comptes ds la listbox ss doublon. .....
Pouvez vous m`aider pour enlever leas doublons??

Pour charger ta listbox sans doublons avec la colonne I (9), je te propose ceci :

Code:
Private Sub UserForm_Initialize()
Dim i As Long    ' index list
Dim l As Long    ' nombre de lignes

With ThisWorkbook.Worksheets("SSD")
    l = .Range("I65536").End(xlUp).Row  ' lignes présentes
    .Cells(2, 9).Resize(l, 1).Copy           ' copie des lignes
    ActiveSheet.Paste Destination:=.Cells(2, 256).Resize(l, 1) ' en dernière colonne
    Application.CutCopyMode = False     ' fin copie et tri des lignes  
    .Cells(2, 256).Resize(l, 1).Sort Key1:=.Cells(2, 256), Order1:=xlAscending, _
    Header:=xlNo, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
For i = 2 To l                                   ' chargement listebox
    If .Cells(i, 256) <> .Cells(i + 1, 256) Then
        ListBox1.AddItem .Cells(i, 256)   ' suppression des doubles
    End If
Next i
.Cells(1, 256).EntireColumn.Delete      ' suppression colonne de tri
End With
End Sub
 

Statistiques des forums

Discussions
312 239
Messages
2 086 494
Membres
103 234
dernier inscrit
matteo75654548