VBA : filtrage de données entre plusieurs fichiers
lagoutte_arnaud
Messages postés2Date d'inscriptionmercredi 15 novembre 2000StatutMembreDernière intervention13 mai 2005
-
11 mai 2005 à 11:20
lagoutte_arnaud
Messages postés2Date d'inscriptionmercredi 15 novembre 2000StatutMembreDernière intervention13 mai 2005
-
13 mai 2005 à 14:32
Salut,
je suis débutant dans VBA, et je dois résoudre un petit problème.
j'ai un fichier référence, et un fichier secondaire. je dois supprimer automatiquement toutes les lignes du fichier référence qui contiennent les identifiants présents dans le fichier secondaire.
je ne sais pas comment parcourir ces fichiers, quelle structure de boucle je dois utiliser.
je cherche toujours sous VBA mais c'est pas très excitant de parcourir toute la doc
merci d'avance
arnaud
A voir également:
VBA : filtrage de données entre plusieurs fichiers
lagoutte_arnaud
Messages postés2Date d'inscriptionmercredi 15 novembre 2000StatutMembreDernière intervention13 mai 2005 13 mai 2005 à 14:32
j'ai finalement pas eu de réponses de personnes de forum, mais étant donné que j'ai eu la solution par un ami, je vous la donne.
si jamais ça intéresse quelqu'un ?
'Fichier de sortie : DossierTravail FichierSortie
'Le pc devra avoir les extention des fichier visible :
'dans l'explorateur windows :'
'Outils, Options des dossiers, affichage, decocher "Masquer les extention don le type est connu"
Const DossierTravail As String = "c:"
' défini le répertoire contenant les fichiers source et le rapport d extraction
Const FichierSortie As String = "rapport_final.xls"
' défini le nom du fichier de sortie des données
Sub MacroTrieMotherDiagrams()
'
' MacroFlorianT
' Macro enregistrée le 11/05/2005 par TRAON Florian
'
Dim Ligne As Integer 'pointeur de ligne dans la feuille 2
Dim Memo As String 'Memoire de la valeur recherchée
Ligne = 2
Memo = 0
'cree un nouveau classeur
Workbooks.Add
ActiveWorkbook.SaveAs Filename:=DossierTravail & FichierSortie, FileFormat:= _
xlNormal, Password:="", WriteResPassword:="", ReadOnlyRecommended:=False _
, CreateBackup:=False
'copie les données dans le classeur
'____________
'ouvre le classeur de reference
Workbooks.Open Filename:=DossierTravail & "test_arno_12_7.xls" '<-------------------------------------------
'copie les données de test_arno_12_7.xls
Windows("test_arno_12_7.xls").Activate '<-------------------------------------------
Cells.Copy
Windows(FichierSortie).Activate
Sheets("Feuil1").Paste
'Ferme le classeur
Cells(1, 1).Copy 'vide vituellement la memoire
Workbooks("test_arno_12_7.xls").Close SaveChanges:=False '<-------------------------------------------
'____________
'ouvre le classeur de reference
Workbooks.Open Filename:=DossierTravail & "test_arno_20_2.xls" '<-------------------------------------------
'copie les données de test_arno_20_2.xls
Windows("test_arno_20_2.xls").Activate '<-------------------------------------------
Cells.Copy
Windows(FichierSortie).Activate
Sheets("Feuil2").Paste
'Ferme le classeur
Cells(1, 1).Copy 'vide vituellement la memoire
Workbooks("test_arno_20_2.xls").Close SaveChanges:=False '<-------------------------------------------
'____________
'Les données sont maitenant dans le meme classeur
'recherche toutes les valeurs de la colonne 1 de la feuille 2)
While (Workbooks(FichierSortie).Sheets("Feuil2").Cells(Ligne, 1).Value <> "")
Memo = Workbooks(FichierSortie).Sheets("Feuil2").Cells(Ligne, 1).Value
SuprLigne Memo, "Feuil1", 5 '"E" est la 5e colonne
Ligne = Ligne + 1 'passe a la ligne suivante
Wend
'____________
'Message de Fin
MsgBox "Fini ! ", vbInformation
End Sub
Sub SuprLigne(ValRecherche As String, NomFeuille As String, Optional IndexColRecherche As Long = 0)
'Cette fonction recherche une valeur dans une feuille (et dans une colone si elle est specifiée)
'et supprime la ligne qui contient cette valeur
On Error Resume Next 'utilise les erreurs pour sortir de la boucle
'Active la feuille de travail passé en paramètres
Workbooks(FichierSortie).Sheets(NomFeuille).Activate
Cells(1, 1).Select
'Trouve la première occurence de la recherche et supprime la ligne entière
Cells.Find(What:=ValRecherche, After:=ActiveCell, LookIn:=xlFormulas, LookAt:= _
xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:=False) _
.Activate
'recherche les occurences suivantes
While Err.Number = 0 'err.number est à 0 temps que la recherche reste valable (la chaine recherchée existe encore)
'Si il n'y a pas d'erreur : donc que l on a trouvé une occurence de la recherche
If Err.Number = 0 Then
'si c'est dans la bonne colonne ou si aucune colonne n'est specifiée If ((ActiveCell.Column ColRecherche) Or (ColRecherche 0)) Then
Selection.EntireRow.Delete 'supprime la ligne entière
End If
End If
Cells.FindNext.Activate 'trouve la suivante
Wend
Err.Clear 'efface les potentielles erreurs restantes
On Error GoTo 0 'remet correctement la gestion d'erreur
End Sub