Macro de mise en forme !!

Nessie

XLDnaute Occasionnel
Bonjour,

On m'a demandé aujourd'hui de créer une macro pour faire de la mise en forme de fichier Excel.

Je m'explique : 2 logiciel comptables qui ne communiquent pas entre eux !
Il s'agit d'exporter au format excel un journal du logiciel A, de le remettre en forme au fromat journal du logiciel B puis de l'intégrer au logiciel B.

Ce qui me fait peur c'est l'opération de mise en forme car il s'agira de :
- supprimer des colonnes,
- effacer des données dans une colonne,
- trier un colonne et l'étendre à toute la sélection
- appliquer un format date, etc...

Une seule macro peut-elle faire tout cela ?
Si oui, help !

Merci par avance
 

Victor21

XLDnaute Barbatruc
Re : Macro de mise en forme !!

Bonjour, Nessie.

Effectuez l'opération manuellement après avoir activé l'enregistreur de macro.
Et revenez avec un extrait du fichier B Excel en exemple (Même disposition, données anonymisées, mais identiques dans la forme)après importation et l'enregistrement de la macro en nous signalant, en cas de problème, où "ça coince".
:)
 

Nessie

XLDnaute Occasionnel
Re : Macro de mise en forme !!

Merci Victor,

En fait, après avoir posté, j'ai repensé à la manip et c'est bête, il suffit juste d'enregistrer une macro classique, comme tu me l'as suggéré !Pfff !
Question bête (et de 2) : dans mon cas, faut-il que je crée un classeur spécialement dédié à cette transformation ? Car il me semble que l'export du logiciel A se fait directement sous format excel (à confirmer) en ouvrant directement excel. Il n'y aura donc pas la macro...
 

Victor21

XLDnaute Barbatruc
Re : Macro de mise en forme !!

Bonjour, Nessie.

Une macro stockée dans le classeur des macros personnelles est disponible dès qu'Excel est ouvert.
Voyez-vous mieux le rapport avec votre question ?
Car il me semble que l'export du logiciel A se fait directement sous format excel (à confirmer) en ouvrant directement excel. Il n'y aura donc pas la macro...
 

Nessie

XLDnaute Occasionnel
Re : Macro de mise en forme !!

Bonjour, Nessie.

Une macro stockée dans le classeur des macros personnelles est disponible dès qu'Excel est ouvert.
Voyez-vous mieux le rapport avec votre question ?

Viiiii désolée !
Une fois de plus, j'écris plus vite que je ne réfléchis ! Je suis désolée. Le classeur des macros personnelles bien sûr !!!!! repfffff pour moi !
Du coup, je n'ose plus poser de question ! mdr !
 

Nessie

XLDnaute Occasionnel
Re : Macro de mise en forme !!

En fait si, je vais poser une question, voire 2. Je vous joins le fichier export du logiciel A à "macrotiser".
- Pour la mise en forme (outre toutes les autres manip qui ne me posent aucun problème), à un moment je dois mettre la colonne B au format date xx/xx/xx (ou xx/xx/xxxx, peu importe).
Le truc c'est que je n'arrive pas à changer automatiquement la colonne qui doit passer de xxxxxxx à xx/xx/xxxx ?

- Par ailleurs, je dois effectuer un tri de la colonne J de sorte que les C (crédit) et D (débit) se regroupent pour ensuite déplacer les valeurs situées dans la colonne K correspondant uniquement au crédit (C) dans la colonne d'après (en ayant pris soin bien évidemment de supprimer ce qu'il y a dans la colonne d'après

- je dois ensuite supprimer la colonne comportant les C et D (car le logiciel B ne reconnait pas cette colonne supplémentaire).

Ce qui me chiffonne c'est qu'en supprimant la colonne de C et D, à l'exécution de la macro pour un nouveau classeur, il bug et je me demande si ce n'est pas du à la suppression de la colonne des C et D.

J'ai réussi à trouver un code pour déplacer mes valeurs d'une colonne à une autre (j'ai adapté le code d'origine à mon cas) mais je n'arrive pas à l'intégrer dans ma macro. Le macro s'exécute mais pas le code VBA. J'ai appliqué ce code dans la fenêtre VBA pendant l'enregistrement de la macro en même temps que toutes mes autres mises en forme.

Voici le code :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
        
        'si la cellule contient C
    If Target.Text = "C" Then
        'Déactive la gestion des évènement
        Application.EnableEvents = False
        'Place la valeur de K dans L
        Range("L" & Target.Row) = Range("K" & Target.Row)
        'Efface le contenu de K
        Range("K" & Target.Row).ClearContents
        Application.EnableEvents = True
    End If
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

End Sub
 

Pièces jointes

  • RAC022012.xlsx
    10.4 KB · Affichages: 149
Dernière édition:

Victor21

XLDnaute Barbatruc
Re : Macro de mise en forme !!

Bonjour, Nessie.

Peut-être un climat local ?
VB:
Sub Macro1()
    Columns("B:B").TextToColumns Destination:=Range("B1"), DataType:=xlDelimited, _
        TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
        Semicolon:=False, Comma:=False, Space:=False, Other:=False, FieldInfo _
        :=Array(1, 4), TrailingMinusNumbers:=True
End Sub
 

Discussions similaires

Statistiques des forums

Discussions
312 215
Messages
2 086 330
Membres
103 188
dernier inscrit
evebar