Astuce du jour: Palette de couleur sur le click droit

Statut
La discussion n'est pas ouverte à d'autres réponses

MJ13

XLDnaute Barbatruc
Astuce du jour: Copier Coller Valeur Format...

Bonjour à tous

Voici le plan des différentes astuces présentes dans cette discussion (Mise à Jour le 21 03 2014):

Encadre Tableau

Mise en page feuille

Redimensionnement d'images

Capture Ecran

Encadrement tableau

Tri Tableau

Installer sur Win8 64 bits programmes anciens

Lancer nouvelle instance d'Excel

Astuces pour le forum

Supprimer les lignes en trop

Recherche Rapide Google

Tri Ascendant Descendant

Range Dossier suivant extension des fichiers V1 et V2


Résolution Ecran


Palette de couleur sur le click droit

Programmer le Bouton Marche/Arrêt

Résoudre le problème des Litviews

Copier Coller valeur format...



Quand , on programme en VBA, avec l'enregistreur de macros, on a souvent des lignes de codes superflues :).

En essayant de trouver un moyen simple pour encadrer un tableau de toutes les cellules on peut écrire:

Code VBA:
Selection.Borders.LineStyle = xlContinuous




Au lieu de:


Code VBA:
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
With Selection.Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlEdgeTop)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlEdgeBottom)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlEdgeRight)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlInsideVertical)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With Selection.Borders(xlInsideHorizontal)
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With





Je voulais le partager avec vous pour une fois que je trouve une astuce intéressante :eek:.
 
Dernière édition:

MJ13

XLDnaute Barbatruc
Re : Astuce du jour: Encadrement tableau VBA

Bonjour Pierrot, 00, Beru, David

Merci pour vos remarques :).

Tant qu'on y est une autre astuce pour mettre en page un tableau sur une page avec mise à la taille de la police (attention à l'amende) :eek:.

Code:
Sub MEP_Imprimante_1_page()
'Permet d'imprimer un tableau sur une page et
'd'avoir les renseignements en pieds de page avec la bonne taille
'quelque soit le zoom
Dim TaillePolice As Integer

    Application.PrintCommunication = True
    With ActiveSheet.PageSetup
        .PrintTitleRows = ""
        .PrintTitleColumns = ""
    End With
    
    'ActiveSheet.PageSetup.PrintArea = ""
    
    With ActiveSheet.PageSetup
        .LeftHeader = ""
        .CenterHeader = ""
        .RightHeader = ""
        .LeftFooter = "&32&D&T"
        .CenterFooter = "&32&Z&F&F&A"
        .RightFooter = "&32Page:&P/&N"
        .LeftMargin = Application.InchesToPoints(0.72)
        .RightMargin = Application.InchesToPoints(0.72)
        .TopMargin = Application.InchesToPoints(0.55)
        .BottomMargin = Application.InchesToPoints(0.55)
        .HeaderMargin = Application.InchesToPoints(0.32)
        .FooterMargin = Application.InchesToPoints(0.32)
        .PrintHeadings = False
        .PrintGridlines = False
        .PrintComments = xlPrintNoComments
        .PrintQuality = 600
        .CenterHorizontally = False
        .CenterVertically = False
        .Orientation = xlPortrait
        .Draft = False
        .PaperSize = xlPaperA4
        .FirstPageNumber = xlAutomatic
        .Order = xlDownThenOver
        .BlackAndWhite = False
        .Zoom = False
        .FitToPagesWide = 1
        .FitToPagesTall = 1
        .PrintErrors = xlPrintErrorsDisplayed
        .OddAndEvenPagesHeaderFooter = False
        .DifferentFirstPageHeaderFooter = False
        .ScaleWithDocHeaderFooter = True
        .AlignMarginsHeaderFooter = True
        .EvenPage.LeftHeader.Text = ""
        .EvenPage.CenterHeader.Text = ""
        .EvenPage.RightHeader.Text = ""
        .EvenPage.LeftFooter.Text = ""
        .EvenPage.CenterFooter.Text = ""
        .EvenPage.RightFooter.Text = ""
        .FirstPage.LeftHeader.Text = ""
        .FirstPage.CenterHeader.Text = ""
        .FirstPage.RightHeader.Text = ""
        .FirstPage.LeftFooter.Text = ""
        .FirstPage.CenterFooter.Text = ""
        .FirstPage.RightFooter.Text = ""
    End With
  
    Application.ExecuteExcel4Macro "PAGE.SETUP(,,,,,,,,,,,,{1,1})"
   Application.ExecuteExcel4Macro "PAGE.SETUP(,,,,,,,,,,,,{#N/A,#N/A})"
    MsgBox "Le zoom à l'impression est de" & ActiveSheet.PageSetup.Zoom
    
TaillePolice = Int((100 / ActiveSheet.PageSetup.Zoom) * 5)
    
    With ActiveSheet.PageSetup
        '.LeftFooter = "&32&D&T"
        .LeftFooter = "&" & TaillePolice & "&D&T"
        '.CenterFooter = "&32&Z&F&F&A"
        .CenterFooter = "&" & TaillePolice & "&Z&F&F&A"
        '.RightFooter = "&32Page:&P/&N"
        .RightFooter = "&" & TaillePolice & "Page:&P/&N"
    End With
   
   Application.PrintCommunication = True
End Sub




Si vous avez d'autres astuces du jour, n'hésitez pas :).
 

stefan373

XLDnaute Occasionnel
Re : Astuce du jour: Encadrement tableau VBA

Bonjour à tous,

Merci pour vos remarques :).

Donc je me permet, :) je l'ai essayé et chez moi cela plante :( à la ligne
Code:
 Application.PrintCommunication = True

Après un peu de recherche, je pense que cela ne fonctionne qu'a partir d' Excel 2010 et c'est domage, car cela avait l'air très intéressent :). Mais une petite question, ne faudrait-il pas mettre False au début et True à la fin de cette commande ?. :confused:

A+ Stéfan
 

MJ13

XLDnaute Barbatruc
Re : Astuce du jour: Encadrement tableau VBA

Bonjour Stefan

Mais une petite question, ne faudrait-il pas mettre False au début et True à la fin de cette commande ?

Merci pour le test :).

En fait j'aurais du mettre Excel 2013 mais il n' y est pas dans la liste :confused:.

Après avoir fait un test, le code si il n'est pas écrit ainsi, on peut avoir des problèmes mais je n'ai pas encore bien compris la logique du code, faut dire que j'ai un peu galèré :eek:. Mais si cela fonctionne, c'est vraiment pratique.

Après, sur XL2007, il suffit de désactiver les lignes de codes qui provoquent une erreur et tester.
 

MJ13

XLDnaute Barbatruc
Re : Astuce du jour: redimesnsionner ces images rapidement

Bonjour à tous


Le redimensionnement d'images avec la bibliothèque Windows Acquisition Library est bien. Mais je me suis aperçu d'un bug. Si l'image est petite (moins de 100 pixels), sa taille est toujours proche de 45 Ko. Donc si vous avez quelques milliers d'images à incorporer dans une feuille Excel, cela devient vite lourd.
Donc pour éviter ce problème, j'a cherché un peu et j'ai trouvé ici une solution avec Irfan view, un des viewer les plus pop :eek::

10 Useful Command-Line IrfanView Tools For Working With Images

Avec Irfan View, on peut reduire efficacement ces images avec une ligne de commande:

ex:

Code:
Sub RedimensionneImage()
Shell ("C:\Program Files\IrfanView\i_view32.exe c:\Temp\*.jpg /resize=(48,32) /aspectratio /resample /convert=c:\temp\*.png")
End Sub

Ansi, en 2 minutes, vous pourrez incoporer 1000 images sur une feuille.
 
Dernière édition:

MJ13

XLDnaute Barbatruc
Re : Astuce du jour: Encadrement tableau VBA

Bonjour à tous

Merci 00 :) pour le lien.

Sinon, je cherchai à lancer une scrutation de l'écran sous forme de fichiers Jpg quand je lance des macros pour savoir combien de temps dure le traitement en mon absence.

Voici le code avec Irfan View, très simple à mettre en oeuvre :eek::

Code:
Sub CaptureEcran()
Shell ("C:\Program Files\IrfanView\i_view32.exe /capture=0 /convert=c:\temp\capture_$U(%d%m%Y_%H%M%S).jpg")
End Sub
 
Dernière édition:

MJ13

XLDnaute Barbatruc
Re : Astuce du jour: Encadrement tableau VBA

Bonjour à tous

Dans le même ordre d'idée que le permier post pour encadrer une sélection sur le pourtour, on peut écrire (vu, que je viens d'en avoir besoin :eek:):

Code:
Selection.Borders(xlEdgeLeft).LineStyle = xlContinuous
Selection.Borders(xlEdgeRight).LineStyle = xlContinuous
Selection.Borders(xlEdgeTop).LineStyle = xlContinuous
Selection.Borders(xlEdgeBottom).LineStyle = xlContinuous
 

DoubleZero

XLDnaute Barbatruc
Re : Astuce du jour: Encadrement tableau VBA

Bonjour, le Fil :), le Forum,

Pour encadrer une sélection, on peut aussi utiliser :

Code:
Sub Sélection_contour_uniquement()
Selection.BorderAround xlContinuous, xlMedium, xlColorIndexAutomatic
End Sub

A bientôt :)
 

MJ13

XLDnaute Barbatruc
Re : Astuce du jour: Encadrement tableau VBA

Re

Ah, merci 00 :) pour le around.

Avec F1, cela m'a permis de mieux maîtriser pour les futurs développements. Ce qui pourrrait donner.


Code:
Sub Encadre_Contour_Fin_Rouge()
Selection.BorderAround _
 Color:=RGB(255, 0, 0), Weight:=2   '2 xlThin '4 xlThick '-4138  xlMedium '1 xlHairline
End Sub
 
Statut
La discussion n'est pas ouverte à d'autres réponses

Discussions similaires

Réponses
5
Affichages
1 K
Réponses
8
Affichages
641

Statistiques des forums

Discussions
312 103
Messages
2 085 306
Membres
102 859
dernier inscrit
Diallokass