• Initiateur de la discussion Initiateur de la discussion michel2000
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

michel2000

XLDnaute Occasionnel
Bonsoir Forum;


Je n'ai rien trouvé pour résoudre ce qui suit:

Un classeur contenant 10 feuilles:

Existe-t-il une formule qui fait en sorte que par exemple toutes les colonne A des 10 feuilles ont pour format "Date (jj-mm-aaaa").

Je veux qu'en appelant cette formule que ci-haut s'exécute en une seule opération.

Je vous remercie de votre attention,
Michel
 
Re : Format des colonnes

Bonsoir Forum et vbacrumble;


Disons que les cellules A1:A20 des trois feuilles doivent être format Date
et que les cellules C1:C20 des trois feuilles doivent être format monétaire


Si je plaçais ce qui suit dans Thiswirkbook est-ce que c'est une bonne façon
d'opérer? Merci beaucoup de votre attention,
Michel

Code

Sheets("Feuil1").Select
Range("A1:A20").Select
Selection.NumberFormat = "dd/mm/yy;@"
Range("C1:C20").Select
Selection.NumberFormat = "#,##0.00 _$"



Sheets("Feuil2").Select
Range("A1:A20").Select
Selection.NumberFormat = "dd/mm/yy;@"
Range("C1:C20").Select
Selection.NumberFormat = "#,##0.00 _$"

Sheets("Feuil3").Select
Range("A1:A20").Select
Selection.NumberFormat = "dd/mm/yy;@"
Range("C1:C20").Select
Selection.NumberFormat = "#,##0.00 _$"
 
Re : Format des colonnes

Bonjour,

ci dessous code à placer dans le module "thisworkbook" :

Code:
Option Explicit
Private Sub Workbook_Open()
Dim s(), i As Byte
s = Array("Feuil1", "Feuil2", "Feuil3")
For i = LBound(s) To UBound(s)
    With Sheets(s(i))
        .Range("A1:A20").NumberFormat = "dd/mm/yy;@"
        .Range("C1:C20").NumberFormat = "#,##0.00 _$"
    End With
Next i
End Sub

bonne journée
@+
 
Re : Format des colonnes

Re

Trop rapide le tigre (bonjour Pierrot93)

Comme j'ai pondu mon oeuf VBA
je le dépose quand même
Code:
Option Explicit
Private Sub Workbook_Open()
Dim arrFeuilles
Dim arrAdresses
Dim arrFormats
Dim i As Byte, j As Byte
arrFeuilles = Array("Feuil1", "Feuil2", "Feuil3")
arrAdresses = Array("A1:A20", "C1:C20")
arrFormats = Array("dd/mm/yy;@", "#,##0.00 _$")
For i = 0 To UBound(arrFeuilles)
For j = 0 To 1
Worksheets(arrFeuilles(i)).Range(CStr(arrAdresses(j))).NumberFormat = arrFormats(j)
Next j
Next i
End Sub
 
Re : Format des colonnes

Bonsoir vbacrumble et Pierrot93

Super j'ai testé les 2 codes et tout fonctionne vraiment comme je le voulais.

Une dernière question avant de clore le sujet. Vbacrumble tu mentionnes "...
Mieux vaut éviter les Select..." Est-ce que tu peux m'expliquer la raison.

Merci beaucoup à vous deux et bonne soirée,
Michel
 
Re : Format des colonnes

Bonsoir michel2000

La raison est que la plupart du temps ce n'est pas utile de recourir à la Selection des "objets" à traiter.

Cela en plus ralentit le temps d'éxécution de la macro.

Donc, éviter au maximum les Select, Selection, Activate etc
limite d'une part la taille du code VBA
et accélère son exécution.
 
Dernière édition:
Re : Format des colonnes

Bonsoir vbacrumble;

D'accord j'ai bien compris. Maintenant je porterai attention de ne pas coder inutilement ce qui pourrait ralentir l'exécution ou surcharger un programme inutilement.

Je suis content car j'ai appris beaucoup avec ce fil.

Encore une fois merci beaucoup
Michel
 
Re : Format des colonnes

Re



Les Select et compagnie apparaissent souvent dans le code VBA
généré par le macro recorder.

Le jeu consiste alors pour nous, utilisateurs d'Excel, de simplifier en supprimant ces Select.

Exemple : je poste dans ce message la macro suivante faite
avec l'enregistreur de macro

Dans mon prochain message, je poste la version modifiée manuellement
en otant les Select
Code:
Sub Macro2()
' Macro2 Macro
' Macro enregistrée le 09/03/2009 par VBACrumble
    Range("A1").Select
    ActiveCell.FormulaR1C1 = "bonsoir michel2000"
    Range("A1").Select
    Selection.Columns.AutoFit
    With Selection.Font
        .Name = "Arial"
        .Size = 16
        .Strikethrough = False
        .Superscript = False
        .Subscript = False
        .OutlineFont = False
        .Shadow = False
        .Underline = xlUnderlineStyleNone
        .ColorIndex = xlAutomatic
    End With
    Selection.Columns.AutoFit
    Selection.Font.Bold = True
    Selection.Font.Italic = True
    Selection.Font.Underline = xlUnderlineStyleSingle
    Selection.Columns.AutoFit
    With Selection.Interior
        .ColorIndex = 6
        .Pattern = xlSolid
    End With
    Selection.Font.ColorIndex = 3
    With Selection
        .HorizontalAlignment = xlCenter
        .VerticalAlignment = xlCenter
        .WrapText = False
        .Orientation = 0
        .AddIndent = False
        .ShrinkToFit = False
        .MergeCells = False
    End With
    Selection.Borders(xlDiagonalDown).LineStyle = xlNone
    Selection.Borders(xlDiagonalUp).LineStyle = xlNone
    With Selection.Borders(xlEdgeLeft)
        .LineStyle = xlDouble
        .Weight = xlThick
        .ColorIndex = 3
    End With
    With Selection.Borders(xlEdgeTop)
        .LineStyle = xlDouble
        .Weight = xlThick
        .ColorIndex = 3
    End With
    With Selection.Borders(xlEdgeBottom)
        .LineStyle = xlDouble
        .Weight = xlThick
        .ColorIndex = 3
    End With
    With Selection.Borders(xlEdgeRight)
        .LineStyle = xlDouble
        .Weight = xlThick
        .ColorIndex = 3
    End With
End Sub
 
Re : Format des colonnes

Re

michel2000:
Voici la version allégée:

Tu peux tester les 2 macros , tu verras que le résultat sera le même.
Code:
Sub Macro2modifiee()
' Macro2 modifiée manuellement
' Macro enregistrée le 09/03/2009 par VBACrumble
    With Range("A1")
        .FormulaR1C1 = "bonsoir michel2000"
        With .Font
            .Name = "Arial"
            .Size = 16
            .Bold = True
            .Italic = True
            .Underline = xlUnderlineStyleSingle
            .ColorIndex = 3
        End With
        .Interior.ColorIndex = 6
        .Interior.Pattern = xlSolid
        .HorizontalAlignment = xlCenter
        .VerticalAlignment = xlCenter
        .Columns.AutoFit
        .BorderAround xlDouble, xlThick, 3
    End With
End Sub
 
Re : Format des colonnes

Bonjour vbacrumble;

Tes deux derniers exemples me démontrent bien le soin à apporter dans la conception et rédaction afin de ne pas alourdir inutilement.

En tout bon "autodidacte" j'utilisais toujours le macro recorder pour découvrir les codes mais je constate que je devrai dorénavant m'appliquer à "coder proprement".

Je ne voudrais pas abuser mais juste une dernière petite question.
"...arrFeuilles = Array("Feuil1", "Feuil2", "Feuil3")
arrAdresses = Array("A1:A20", "C1:C20")
arrFormats = Array("dd/mm/yy;@", "#,##0.00 _$")
..."

Si dans ce même classeur la feuille4 et feuille5, leur G1:G20 doivent avoir
le format DATE, comment dois-je procéder techniquement pour coder à l'intérieur de ton code .

J'ai tenté plusieurs expériences mais cela ne fonctionne pas et j'ai toutes sortes de messages d'erreur genre "Nom Ambigu" ou autre.

En comprenant ce dernier point je vais être vraiment content

Mille fois Merci et bonne journée
Michel

Merci beaucoup
 
Re : Format des colonnes

Bonsoir


J'ai tenté plusieurs expériences mais cela ne fonctionne pas et j'ai toutes sortes de messages d'erreur genre "Nom Ambigu" ou autre.


Il ne faut pas que dans ton module tes macros portent le même nom.

(Egalement pas de procédures évènementielles telle que WorkBook_Open
en double dans une feuille)

Je réutilise le code de Pierrot93 qui est plus concis

Essayes le code ci-dessous en prenant soin auparavant d'effacer *
ou de mettre en commentaire le WorkBook_Open existant.

*: tu peux couper/coller le code dans le bloc-notes (temporairement)
plutôt que de l'effacer.

Code:
Option Explicit
Private Sub Workbook_Open()
Dim s(), sii(), i As Byte, j As Byte
s = Array("Feuil1", "Feuil2", "Feuil3")
sii=Array("Feuil4", "Feuil5")
For i = LBound(s) To UBound(s)
    With Sheets(s(i))
        .Range("A1:A20").NumberFormat = "dd/mm/yy;@"
        .Range("C1:C20").NumberFormat = "#,##0.00 _$"
    End With
Next i
For j= LBound(sii) To UBound(sii)
With Sheets(sii(j))
        .Range("G1:G20").NumberFormat = "dd/mm/yy;@"
    End With
Next j
End Sub
 
Dernière édition:
Re : Format des colonnes

Bonsoir vbacrumble;

Je viens de tester ton code tout en suivant tes conseils et tout fonctionne très bien. Naturellement j'ai sauvegardé les codes et les conseils.

J'ai vraiment appris beaucoup de notions.

Encore une fois Merci Beaucoup d'avoir pris le temps de répondre à mes questions et je suis certain que beaucoup de "Forumeurs" vont consulter de fil.

Bonne Soirée
Michel
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
8
Affichages
1 K
P
Réponses
3
Affichages
2 K
punk_sportif
P
J
Réponses
22
Affichages
3 K
jui42
J
Retour