XL 2016 Mise en forme d'un export de logiciel dans un fichier Excel

Gils92

XLDnaute Nouveau
Bonjour à toustes,
Je récupère des données sous une forme inutilisable (Feuil1) et je voudrais les mettre en forme comme dans l'onglet Feuil2 avec une macro, sachant que l'export fait prés de 12.000 lignes.
Est-ce possible ?
 

Pièces jointes

  • EXPORT REEX.xlsx
    20.3 KB · Affichages: 17
Solution
J'ai trouvé. :)
Quand je "nettoyais" la base j'effaçais seulement la première cellule. Ensuite j'utilisais cette cellule pour le filtrage.
Mais comme avec la dernière modif j'utilise non pas les cellules A et B, mais B et C, le nettoyage n'avait plus d'effet.
Maintenait j'efface les cellules A,B,C lors du nettoyage avec :
VB:
Sub Nettoie()
' Supprime les lignes inutiles ( tout du moins essaye ! )
For i = 1 To UBound(T)
    If _
        T(i, 1) Like "*Contrats*" Or _
        T(i, 1) Like "*Page*" Or _
        T(i, 1) Like "*PARIS*" Or _
        T(i, 1) Like "*Tournée*" _
    Then
        T(i, 1) = "": T(i, 2) = "": T(i, 3) = ""
    End If
Next i
End Sub
C'est ce qu'on appelle un effet de bord. :eek:
Sorry.
Faites un feedback, en...

Gils92

XLDnaute Nouveau
Bonjour,
Peut être en modifiant cette ligne :
VB:
ElseIf T(N, 2) <> "" And T(N, 3) <> "" Then
On regarde non pas les colonnes A et C mais les colonnes B et C.
Il se produit ça
1729676378228.png
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Re,
Dans votre fichier un N) de contrat ne comporte pas "N° " mais probablement "N°".
Essayez cette PJ.
Si ça ne marche pas, mettez votre fichier en ligne.
J'ai modifié Découpe :
VB:
Sub Découpe(C$)
' Entrée : T 31/10/2024 N° 400118839
' Typ="T"  Ech=31/10/2024  Contrat=400118839
On Error GoTo FinDecoupe
Typ = Left(C, 1)
Ech = Mid(C, 3, 10)
Contrat = Split(C, "N°")(1)
FinDecoupe:
End Sub
 

Pièces jointes

  • EXPORT REEX (1).xlsm
    37.2 KB · Affichages: 2

Gils92

XLDnaute Nouveau
Re,
Dans votre fichier un N) de contrat ne comporte pas "N° " mais probablement "N°".
Essayez cette PJ.
Si ça ne marche pas, mettez votre fichier en ligne.
J'ai modifié Découpe :
VB:
Sub Découpe(C$)
' Entrée : T 31/10/2024 N° 400118839
' Typ="T"  Ech=31/10/2024  Contrat=400118839
On Error GoTo FinDecoupe
Typ = Left(C, 1)
Ech = Mid(C, 3, 10)
Contrat = Split(C, "N°")(1)
FinDecoupe:
End Sub
J'ai filtré la colonne A sur les cellules vides que j'ai rempli avec "Sté", ça marche mais c'est fastidieux.
Sinon, la dernière correction entraine des erreurs à chaque changement de page
 

Pièces jointes

  • Classeur1.xlsx
    17.4 KB · Affichages: 2

sylvanu

XLDnaute Barbatruc
Supporter XLD
Re,
Je ne comprends pas, votre fichier n'a rien à voir avec la structure du fichier initial.
Il n'y a plus de nom, de genre, de dates et n'a que 5 colonnes au lieu de 6.

Est il le résultat d'un filtrage ?
la dernière correction entraine des erreurs à chaque changement de page
Qu'entendez vous par "changement de page" ?
Sinon, la dernière correction entraine des erreurs
Comment splitter sur "N°" au lieu de "N° " peut il entrainer des erreurs ?
Si la colonne C est bien de type "D 31/01/2026 N° 255462818" on ne peut pas avoir d'erreur, cela donne le même résultat.

Je n'y comprends plus rien. :(
 

Gils92

XLDnaute Nouveau
Re,
Je ne comprends pas, votre fichier n'a rien à voir avec la structure du fichier initial.
Il n'y a plus de nom, de genre, de dates et n'a que 5 colonnes au lieu de 6.

Est il le résultat d'un filtrage ?

Qu'entendez vous par "changement de page" ?

Comment splitter sur "N°" au lieu de "N° " peut il entrainer des erreurs ?
Si la colonne C est bien de type "D 31/01/2026 N° 255462818" on ne peut pas avoir d'erreur, cela donne le même résultat.

Je n'y comprends plus rien. :(
Dans le logiciel d'origine, il y a une sorte de mise en forme pour l'impression, à chaque changement de page on a ça :
1729686759435.png
 

Gils92

XLDnaute Nouveau
Re,
Je ne comprends pas, votre fichier n'a rien à voir avec la structure du fichier initial.
Il n'y a plus de nom, de genre, de dates et n'a que 5 colonnes au lieu de 6.

Est il le résultat d'un filtrage ?

Qu'entendez vous par "changement de page" ?

Comment splitter sur "N°" au lieu de "N° " peut il entrainer des erreurs ?
Si la colonne C est bien de type "D 31/01/2026 N° 255462818" on ne peut pas avoir d'erreur, cela donne le même résultat.

Je n'y comprends plus rien. :(
Pardon, oui j'ai filtré sur les erreurs rencontrées
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Dans le logiciel d'origine, il y a une sorte de mise en forme pour l'impression,
Et c'est maintenant que vous le dites ?
Comment pouvais je le savoir ?
La structure du fichier est fondamental dans ce genre d'exercice puisque c'est lui qui définit le filtrage.
Vous auriez un petit fichier test vraiment représentatif ?
Cela risque de faire reprendre la macro au début. :(
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
J'ai trouvé. :)
Quand je "nettoyais" la base j'effaçais seulement la première cellule. Ensuite j'utilisais cette cellule pour le filtrage.
Mais comme avec la dernière modif j'utilise non pas les cellules A et B, mais B et C, le nettoyage n'avait plus d'effet.
Maintenait j'efface les cellules A,B,C lors du nettoyage avec :
VB:
Sub Nettoie()
' Supprime les lignes inutiles ( tout du moins essaye ! )
For i = 1 To UBound(T)
    If _
        T(i, 1) Like "*Contrats*" Or _
        T(i, 1) Like "*Page*" Or _
        T(i, 1) Like "*PARIS*" Or _
        T(i, 1) Like "*Tournée*" _
    Then
        T(i, 1) = "": T(i, 2) = "": T(i, 3) = ""
    End If
Next i
End Sub
C'est ce qu'on appelle un effet de bord. :eek:
Sorry.
Faites un feedback, en espérant qu'il sera positif.
 

Pièces jointes

  • Classeur2 V3.xlsm
    22.2 KB · Affichages: 3

Gils92

XLDnaute Nouveau
J'ai trouvé. :)
Quand je "nettoyais" la base j'effaçais seulement la première cellule. Ensuite j'utilisais cette cellule pour le filtrage.
Mais comme avec la dernière modif j'utilise non pas les cellules A et B, mais B et C, le nettoyage n'avait plus d'effet.
Maintenait j'efface les cellules A,B,C lors du nettoyage avec :
VB:
Sub Nettoie()
' Supprime les lignes inutiles ( tout du moins essaye ! )
For i = 1 To UBound(T)
    If _
        T(i, 1) Like "*Contrats*" Or _
        T(i, 1) Like "*Page*" Or _
        T(i, 1) Like "*PARIS*" Or _
        T(i, 1) Like "*Tournée*" _
    Then
        T(i, 1) = "": T(i, 2) = "": T(i, 3) = ""
    End If
Next i
End Sub
C'est ce qu'on appelle un effet de bord. :eek:
Sorry.
Faites un feedback, en espérant qu'il sera positif.
Super, ça a l'air de fonctionner, je le teste à nouveau demain matin, je vous tiens au courant
 

Discussions similaires

M
Réponses
9
Affichages
676
Maikales
M
Réponses
8
Affichages
382

Statistiques des forums

Discussions
314 426
Messages
2 109 478
Membres
110 488
dernier inscrit
glossaire