Modification d'une macro

guenfood

XLDnaute Occasionnel
Bonjour,

J'ai actuellement une macro sur un fichier excel qui me permet de "matcher" 2 fichiers.

Je reporte le code ci-dessous :
Code:
Sub Match()

' -------------------------
' déclaration des variables
' -------------------------

Dim fichier1 As String             ' variable de type chaîne
Dim fichier2 As String
Dim fichier3 As String
Dim chemin As String

' ------------------------
' ouverture des 2 fichiers
' ------------------------
fichier1 = "BNPP.xls"
fichier2 = "ASTERION.xls"
fichier3 = "ALLER.xls"
chemin = "S:\APAC FLUX DOMESTIQUES\Domaine ACOM\POINTAGE MICROFICHES\Test match microfiches\"                        ' **** A CORRIGER SELON BESOIN
Workbooks.Open Filename:=chemin + fichier3
Workbooks.Open Filename:=chemin + fichier2
Workbooks.Open Filename:=chemin + fichier1
Application.ScreenUpdating = False
Workbooks("ALLER.xls").Activate
    Range("A4:K" & Range("A65536").End(xlUp).Row).Cut
Workbooks("BNPP.xls").Activate
Range("A65536").End(xlUp).Offset(1, 0).Select
ActiveSheet.Paste
Workbooks("ALLER.xls").Close savechanges:=True
Workbooks("ASTERION.xls").Activate
Derlig = Range("A65536").End(xlUp).Row
For Each Cel In Range("F2:F" & Derlig)
If Cel.Value <> "" Then
Lig = Cel.Row
Num = Cells(Lig, 2)
Etat = Cells(Lig, 13)
Workbooks("BNPP.xls").Activate
On Error Resume Next
Range("E1").Select
With Range("E1:E65536")
.Find(Etat).Activate
End With
If ActiveCell.Offset(0, -4).Value = Num Then
ActiveCell.EntireRow.Delete
Workbooks("ASTERION.xls").Activate
Cells(Lig, 1).EntireRow.Delete
End If
End If
Workbooks("ASTERION.xls").Activate
Next Cel
Application.ScreenUpdating = True
Workbooks("ASTERION.xls").Close savechanges:=False
Workbooks("BNPP.xls").Close savechanges:=True
End Sub

Actuellement, les informations comprises dans le fichier ASTERION.XLS pour lesquelles la cellule F est remplie sont effacées.
Ce qu'il me faudrait, c'est qu'au lieu d'être effacées, elles soient coupées et collées dans un nouveau fichier excel nommé ETIQUETTES.XLS

Par la suite, je souhaiterai que les informations qui sont collées dans ETIQUETTES.XLS me remplissent une feuille (pour faire des étiquettes) par rapport aux informations comprises dans les cellules M et cellules F.
La cellule F correspondant au nombre de documents et la cellule M reprenant un code (exemple : 'COL25010M336301J151623000014X01). Ce qui devra être repris sur mes étiquettes dans ce code sont les caractères COL25 correpondant au Nom, J correpondant au mois (A= Janvier, B = Février.... J=Octobre) et le 15 derrière le J correpondant au jour (J15 = 15 Octobre).

Merci par avance pour vos lumières.
 

skoobi

XLDnaute Barbatruc
Re : Modification d'une macro

Actuellement, les informations comprises dans le fichier ASTERION.XLS pour lesquelles la cellule F est remplie sont effacées.
Ce qu'il me faudrait, c'est qu'au lieu d'être effacées, elles soient coupées et collées dans un nouveau fichier excel nommé ETIQUETTES.XLS
Bonsoir,
en gras ce qu'il faut insérer pour déplacer vers le fichier ETIQUETTES.XLS (que tu dois créer et ouvrir)
Code:
Sub match()

' -------------------------
' déclaration des variables
' -------------------------

Dim fichier1 As String             ' variable de type chaîne
Dim fichier2 As String
Dim fichier3 As String
Dim chemin As String
[B][COLOR="Red"]Dim match As Worksheet
Set match = Workbooks("ETIQUETTES.XLS").Sheets(1)[/COLOR][/B]
' ------------------------
' ouverture des 2 fichiers
' ------------------------
fichier1 = "BNPP.xls"
fichier2 = "ASTERION.xls"
fichier3 = "ALLER.xls"
chemin = "S:\APAC FLUX DOMESTIQUES\Domaine ACOM\POINTAGE MICROFICHES\Test match microfiches\"                        ' **** A CORRIGER SELON BESOIN
Workbooks.Open Filename:=chemin + fichier3
Workbooks.Open Filename:=chemin + fichier2
Workbooks.Open Filename:=chemin + fichier1
Application.ScreenUpdating = False
Workbooks("ALLER.xls").Activate
    Range("A4:K" & Range("A65536").End(xlUp).Row).Cut
Workbooks("BNPP.xls").Activate
Range("A65536").End(xlUp).Offset(1, 0).Select
ActiveSheet.Paste
Workbooks("ALLER.xls").Close savechanges:=True

Workbooks("ASTERION.xls").Activate
Derlig = Range("A65536").End(xlUp).Row
For Each cel In Range("F2:F" & Derlig)
Debug.Print cel.Address(False, False)
    If cel.Value <> "" Then
        Lig = cel.Row
        Num = Cells(Lig, 2)
        Etat = Cells(Lig, 13)
        Workbooks("BNPP.xls").Activate
        On Error Resume Next
        Range("E1").Select
        With Range("E1:E65536")
        .Find(Etat).Activate
        End With
        If ActiveCell.Offset(0, -4).Value = Num Then
            ActiveCell.EntireRow.Delete
            Workbooks("ASTERION.xls").Activate
            [B][COLOR="Red"]Cells(Lig, 1).EntireRow.Cut match.Range("a65536").End(xlUp).Offset(1, 0)[/COLOR][/B]
'            Cells(Lig, 1).EntireRow.Delete
        End If
    End If
    
    Workbooks("ASTERION.xls").Activate
Next cel
Application.ScreenUpdating = True
Workbooks("ASTERION.xls").Close savechanges:=False
Workbooks("BNPP.xls").Close savechanges:=True
End Sub

Par la suite, je souhaiterai que les informations qui sont collées dans ETIQUETTES.XLS me remplissent une feuille (pour faire des étiquettes) par rapport aux informations comprises dans les cellules M et cellules F.

Il faudrait que tu crés ce fichier et que tu nous le renvoie avec la feuille ayant la mise en forme que tu désires.
Le fichier Matchage.xls a quel rôle dans tout celà?

Pense à enlever la ligne:
' Cells(Lig, 1).EntireRow.Delete
 
Dernière édition:

guenfood

XLDnaute Occasionnel
Re : Modification d'une macro

Merci beaucoup.
Ca m'a l'air pas mal.

Par contre, il faut impérativement que mon fichier "ETIQUETTES.XLS" soit ouvert. sinon j'ai un message d'erreur.
De plus, lorsque mon fichier ETIQUETTES est rempli avec la donnée J26, il faudrait que cela m'inscrive 26/10/Année (J équivalent à Octobre, A à Janvier, B à février...)
Est-il possible que tu me mettes sur le code que tu as modifié en face à quoi cela correspond et ce que cela fait ?
Comme cela ca me permet d'apprendre un peu et de continuer à modifier les choses, car j'aimerais que sur mon fichier ETIQUETTES, j'ai aussi de repris les chiffres de la colonne F de mon fichier ASTERION.

Merci encore pour ton aide.
 
Dernière édition:

guenfood

XLDnaute Occasionnel
Re : Modification d'une macro

Re-,

Après plusieurs tests, je m'aperçois que toutes les lignes de mon fichier "ASTERION.XLS" pour lesquels la colonne F est renseignée ne sont pas repris dans mon fichier "ETIQUETTES.XLS".

Je sèche, et plus ca va, plus j'ai l'impression de monter une usine à gaz.
Alors que cette macro est sensée nous simplifier la tâche et empêcher de faire un pointage manuel qui prend presque 2h par jour.

J'espère qu'une âme compatissante viendra à ma rescousse.
Merci par avance.
 

skoobi

XLDnaute Barbatruc
Re : Modification d'une macro

Re,
Après plusieurs tests, je m'aperçois que toutes les lignes de mon fichier "ASTERION.XLS" pour lesquels la colonne F est renseignée ne sont pas repris dans mon fichier "ETIQUETTES.XLS".

désolé, c'est un oubli rectifié (mis dans la feuille 2 du fichier étiquette)

Est-il possible que tu me mettes sur le code que tu as modifié en face à quoi cela correspond et ce que cela fait ?

J'ai commenté le code.

Je sèche, et plus ca va, plus j'ai l'impression de monter une usine à gaz.

Il faudrait pour celà que tu expliques exactement ce que tu veux faire (ça vaudrait le coût vù les 2h de gagné) car je te rappelle que ton code fait d'autre actions sur les fichiers "BNPP" et "ALLER" que je mais en commentaire pendant mon test vù que tu n'as pas envoyé ces fichiers (à raison je suppose).

Par contre, il faut impérativement que mon fichier "ETIQUETTES.XLS" soit ouvert

Oui mais il est possible de l'ouvrir dans le code si tu préfères.
voici l'instruction à ajouter au début de ta macro:

Code:
Workbooks.Open "C:\ETIQUETTES.xls"
C:\ est à changé par ton chemin vers le fichier bien-sûr.

A te relire
 

Pièces jointes

  • Etiquette v2.zip
    22.3 KB · Affichages: 34

guenfood

XLDnaute Occasionnel
Re : Modification d'une macro

Merci encore pour ton aide.

Ce que mon tableau est sensé faire est repris dans le post suivant : https://www.excel-downloads.com/threads/matchage-sur-2-tableaux-selon-criteres.78720/

Ca c'était avant. Maintenant, il faut EN PLUS que les données de mon fichier ASTERION.XLS m'enrichissent mon fichier ETIQUETTES.XLS pour les données pour lesquelles la colonne F est enrichie avec les données que j'ai stipulé.

Ainsi mon fichier BNPP.XLS reprend les documents qui sont toujours en production chez notre prestataire, et le fichier ETIQUETTES.XLS les documents que l'on a reçu (avec nom du document, sa date, et le nombre de documents reçus pour chacun (chiffre de la colonne F du fichier ASTERION)).

PS : Je constate que lorsque mon fichier ETIQUETTES.XLS est rempli, la date n'est pas enrichie sous la forme 30/10/2007, mais garde le format J30 2007. De plus, cette donnée J30 doit être reprise de la colonne M de mon fichier ASTERION.XLS (exemple : 'SCI31010M041201J270129107119X01 Ici c'est le J27 qui doit être extrait). Mais avec le fichier que tu m'as envoyé, j'ai lancé la mcro, et mon fichier ETIQUETTES.XL n'est enrichi qu'avec J30, alors que je devrai avoir du J27, du J28...
Il me fallait aussi le nombre de documents repris dans mon fichier ETIQUETTES. Information présente dans la colonne F du fichier ASTERION.
J'espère que cela est assez clair. Sinon, je suis prêt à donner davantage d'informations.
 
Dernière édition:

skoobi

XLDnaute Barbatruc
Re : Modification d'une macro

Merci encore pour ton aide.

De plus, cette donnée J30 doit être reprise de la colonne M de mon fichier ASTERION.XLS (exemple : 'SCI31010M041201J270129107119X01 Ici c'est le J27 qui doit être extrait.

Re,
cette donnée ce trouve toujours au même endroit dans la chaîne de texte, c'est-à-dire démarre à la 16eme position?
Dis autrement: le "code" de la colonne M est toujours de cette forme:
3 lettres-5 chiffres-1 lettre-6chiffres puis le fameux J30?

Il me fallait aussi le nombre de documents repris dans mon fichier ETIQUETTES. Information présente dans la colonne F du fichier ASTERION.

Regarde le dernier envoie, c'est fait.

Bonne après-midi.
 

guenfood

XLDnaute Occasionnel
Re : Modification d'une macro

Je confirme ce que tu suppose, le code de la colonne M est toujours identique.

Pour ce qui est du nombre de documents, j'ai testé ce matin avec ton dernier fichier, mais ca n'a pas marché. Cela ne me l'a pas repris..
 

guenfood

XLDnaute Occasionnel
Re : Modification d'une macro

Je n'ai que 2 feuilles sur le fichier ETIQUETTES.
Et sur la deuxième j'ai bien toutes les infos qui sont reprises dans les différentes colonnes.
Mais les données qu'il me faut doivent être sur la feuille1 dans mes cellules pour impression ultérieure.
 

Statistiques des forums

Discussions
312 213
Messages
2 086 307
Membres
103 174
dernier inscrit
OBUTT