Comment insérer plusieurs formats de cellules dans une macro?

Sebasti1

XLDnaute Nouveau
Bonjour à tous,

Je n'ai pas trouvé ma réponse dans les différents forum que j'ai pu visiter sur le net, alors je viens poser ma question ici.

Afin de faciliter certaines tâches fastidieuses de mon quotidien, j'ai créé une petite macro qui me rassemble les données de X fichiers excels dans un seul et même tableau.

Mon souci est le suivant:
En admettant que mon tableau ait 5 colonnes, j'ai besoin de 4 formats différents:
Colonne 1 format texte
Colonne 2 et 3 format numéric avec deux décimales
Colonne 4 format numéric avec 5 décimales
Colonne 5 format date

Lorsque je crée la macro (via l'enregistreur) si je fais le "formatage" des colonnes avant l'import des données, seul le format 5 décimales est appliqué à l'ensemble des colonnes.
Si je mets ce même "formatage" en fin de macro, le résultat est identique.

Il semble que la macro ne veuille pas intégrer tout les formats que je lui demande.

Y-a-t-il une astuce?

Ci-dessous, le code dans VBA:

Columns("A:A").Select
Range("A3").Activate
Selection.NumberFormat = "@"
Range("D:D,F:F").Select
Range("F3").Activate
Selection.NumberFormat = "#,##0.00"
Columns("G:G").Select
Range("G3").Activate
Selection.NumberFormat = "dd/mm/yy;@"
Columns("H:H").Select
Range("H3").Activate
Selection.NumberFormat = "0.00000"

Merci d'avance pour votre aide.

Séb
 

Gorfael

XLDnaute Barbatruc
Re : Comment insérer plusieurs formats de cellules dans une macro?

Salut Sebasti1 et le forum
Utilises les balises, ça facilite la lecture !
Code:
Range("A:A").NumberFormat = "@"
Range("D:D,F:F").NumberFormat = "#,##0.00"
range("G:G").NumberFormat = "dd/mm/yy;@"
range("H:H").NumberFormat = "0.00000"
Attention : ça ne concerne que la page active au moment de l'exécution du code. Avec un lambeau de code...
A+
 
Dernière édition:

Robert

XLDnaute Barbatruc
Repose en paix
Re : Comment insérer plusieurs formats de cellules dans une macro?

Bonjour Seb bienvenu, bonjour le forum

Essaie comme ça :
Code:
With Sheets("Feuil1")
    .Columns(1).NumberFormat = "@"
    Application.Union(.Columns(4), .Columns(6)).NumberFormat = "#,##0.00"
    .Columns(7).NumberFormat = "dd/mm/yy;@"
    .Columns(8).NumberFormat = "0.00000"
End With

[Édition]
Bonjour Gorfael, Caillou on s'est croisé
 

Sebasti1

XLDnaute Nouveau
Re : Comment insérer plusieurs formats de cellules dans une macro?

Bonjour à tous,

Merci pour vos réponses.
J'étais off deux jours, du coup du boulot à rattraper, je vous reviens au plus vite pour vous dire si cà fonctionne.

A+
 

Sebasti1

XLDnaute Nouveau
Re : Comment insérer plusieurs formats de cellules dans une macro?

Bonjour,

Gorfael, j'ai essayé ton code, le résultat est exactement celui que je voulais (seule la feuille finale était concernée par la mise en page).
Donc un grand merci.
N'étant pas un pro d'excel, j'aimerais juste comprendre pourquoi l'enregistreur de macro ne me donne pas le même résultat?
Est-ce que je n'utilisais pas le bon procédé lors de l'enregistrement?

Et sinon c'est quoi les balises?

Merci encore et A+
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : Comment insérer plusieurs formats de cellules dans une macro?

Bonjour le fil, bonjour le forum,

L'enregistreur de macro enregistre TOUT ce que tu fais et donc parfois des choses inutiles. Il est recommandé, pour la rapidité de l'exécution du code, d'éviter les Select. Il est clair que l'enregisteur de macro va coder ta sélection de la colonne et l'activation d'une cellule :
Code:
Columns("A:A").Select
Range("A3").Activate
Selection.NumberFormat = "@"
mais tu obtiens le même résultat avec :
Code:
Range("A:A").NumberFormat = "@"
Petit à petit tu vas acquerir suffisamment d'expérience pour savoir qu'elle partie du code, créé par l'enregistreur, tu peux supprimer. Mais l'utilisation de cet l'enregistreur reste un excellent outil d'apprentissage.

Les balises permettent de séparer les codes du reste du texte (comme j'ai fait ci-dessus). Mais il ne faut pas utiliser la Réponse rapide il faut utiliser le bouton Aller en mode avancé ou le racourci clavier [Alt]+[X]. Là tu verras parmis les icônes un # qui ouvre et ferme les balises CODE. Place tes lignes de code entre ces deux balises.
C'est vrai que le code est bien plus lisible quand il est balisé...
 

Sebasti1

XLDnaute Nouveau
Re : Comment insérer plusieurs formats de cellules dans une macro?

Bonjour Robert,

Je comprends mieux pourquoi l'enregistreur est une solution mais pas toujours la solution, le VBA c'est tout neuf pour moi ( 2 semaines de pratique)!!

En tous cas, merci pour ta réponse, j'ai mis en pratique les balises pour une nouvelle requête, il est clair que c'est beaucoup plus lisible.

Bonne journée
 

Discussions similaires

Statistiques des forums

Discussions
312 211
Messages
2 086 292
Membres
103 171
dernier inscrit
clemm