[REF] Wiki 4 de MichelXld (Fonctions, Evenements, Dates et calendriers, Flash , Ooo)

MichelXld

XLDnaute Barbatruc
Les sujets abordés dans cette page
Les fonctions mathématiques et trigonométriques , Les impressions , Les temporisations , Les fonctions , Les evenements , Excel , Les cellules , Copier & Coller , Les dates et les calendriers , Les spécificités Macintosh , Générer des fichiers Flash , Open Office .​




Les fonctions mathématiques
  • Afficher la racine carré d'un nombre par la fonction Sqr
    Sub Test()​
    Msgbox Sqr(9) ' 3​
    Msgbox Sqr(50) ' 7,07106781186548​
    Msgbox Sqr(0) ' 0​
    End Sub​
  • La fonction Sgn permet de déterminer le signe d'un nombre
    Les valeurs renvoyées :​
    Si supérieur à zéro : 1​
    Si égal à zéro : 0​
    Si inférieur à zéro : -1​
    Sub Test()​
    Msgbox Sgn(20.4) ' 1​
    Msgbox Sgn(-44) ' -1​
    Msgbox Sgn(0) '0​
    End Sub​
  • Utiliser les fonctions des feuilles Excel par Vba
    Par exemple calculer la moyenne de la plage A1:A5​
    Sub calculMoyenne()​
    Msgbox Application.Worksheetfunction.Average(Range("A1:A5"))​
    End Sub​
  • Calculer la somme de la plage A1:A5 par macro
    Sub calculSomme()​
    Msgbox Application.Worksheetfunction.Sum(Range("A1:A5"))​
    End Sub​
  • Convertir des Fahrenheit en Celsius
    Sub conversion_Fahrenheit_Celsius()​
    Dim Fahr As Variant​
    Fahr = inputBox("Saisir la température en Fahrenheit :", _​
    "Conversion Fahrenheit en Celsius", 0)​
    If Fahr = "" Then Exit Sub​
    msgBox Fahr & " Fahrenheit = " & Format((5 / 9) * (Fahr - 32), "0.000") & " Celsius ."​
    End Sub​
  • Calculer la surface d'un cercle
    Sub surfaceCercle()​
    Dim Rayon As Variant​
    Rayon = inputBox("Saisir le rayon :", "Calcul surface d'un cercle", 0)​
    If Rayon = "" Then Exit Sub​
    If Sgn(Rayon) > 0 Then msgBox "La surface est : " & _​
    Format(Application.worksheetFunction.Pi * Rayon ^ 2, "0.0000"), , _​
    "Surface cercle-Rayon=" & Rayon​
    End Sub​
  • Calculer le volume d'un cylindre droit
    Sub volumeCylindreDroit()​
    Dim Rayon As Variant, Hauteur As Variant​
    Rayon = inputBox("Saisir le rayon :", "Calcul volume d'un cylindre droit ", 0)​
    If Rayon = "" Then Exit Sub​
    Hauteur = inputBox("Saisir la hauteur :", "Calcul volume d'un cylindre droit ", 0)​
    If Hauteur = "" Then Exit Sub​
    If Sgn(Rayon) > 0 And Sgn(Hauteur) > 0 Then msgBox "Le volume est : " & _​
    Format(Application.worksheetFunction.Pi * Rayon ^ 2 * Hauteur, "0.0000"), , _​
    "volume cylindre droit-Rayon=" & Rayon & " Hauteur=" & Hauteur​
    End Sub​
  • Calculer le volume d'une sphère
    Sub volumeSphere()​
    Dim Rayon As Variant​
    Dim vS As Double​
    Rayon = inputBox("Saisir le rayon :", "Calcul volume d'une sphère ", 1)​
    If Rayon = "" Then Exit Sub​
    vS = Application.worksheetFunction.Pi * (Rayon ^ 3) * 4 / 3​
    msgBox "Le volume est : " & Vs​
    End Sub​
  • Vérifier si la valeur de la cellule A1 est un nombre premier
    Sub verificationNombrePremier()​
    Dim Valeur As Long, Diviseur As Long​
    Valeur = Range("A1")​
    Diviseur = 1​
    If Valeur > 1 Then​
    Do​
    Diviseur = Diviseur + 1​
    Loop While Valeur Mod Diviseur <> 0​
    End If​
    If Diviseur =Valeur Then​
    msgBox Valeur & " est un nombre premier", , "Resultat"​
    Else​
    msgBox Valeur & " n'est pas un nombre premier", , "Resultat"​
    End If​
    End Sub​
  • Chercher les 3 plus grandes valeurs d'une plage
    Sub troisPlusgrandesValeurs()​
    Dim Plage As Range​
    Dim i As Byte​
    'les valeurs à rechercher sont dans la colonne A​
    Set Plage = Columns(1)​
    For i = 1 To 3​
    'resultat s'affiche dans la colonne B​
    Cells(i, 2) = Application.worksheetFunction.Large(Plage, i)​
    Next i​
    End Sub​
  • La difference entre la fonction Round et Application.worksheetFunction.Round
  • Vérifier si un nombre est un multiple de 10
    Dim maVariable As Integer​
    maVariable = 50​
    If maVariable Mod 10 = 0 Then msgBox "est un multiple de 10"​
  • Quelle valeur ajouter à un nombre pour obtenir un multiple de 10
    Dim maVariable As Integer​
    maVariable = 32​
    If maVariable Mod 10 <> 0 Then​
    msgBox 10 - (maVariable Mod 10)​
    Else​
    msgBox 0​
    End If​
La Trigonométrie
  • Afficher le cosinus , le Sinus et la Tangente d'un angle
    L'argument x entre parentheses exprime la valeur d'un angle en radians​
    Pour convertir des radians en degrés, multipliez-les par 180/pi​
    Sub test()​
    Dim x As Double​
    'exemple pour un angle de 30 degrés​
    'transformation en radians​
    x = 30 * Application.Worksheetfunction.Pi / 180​
    'résultats​
    Msgbox Cos(x) 'cosinus​
    Msgbox 1 / Cos(x) 'secante​
    Msgbox Sin(x) 'sinus​
    Msgbox 1 / Sin(x) 'cosecante​
    Msgbox Tan(x) 'tangente​
    Msgbox 1 / Tan(x) 'cotangente​
    End Sub​
Les impressions
  • Imprimer une feuille
    Sub imprimerUneFeuille()​
    Sheets("feuil2").printOut​
    End Sub​
  • Imprimer toutes les feuilles du classeur
    Dim Ws As Worksheet​
    For Each Ws In thisWorkbook.Worksheets​
    Ws.printOut​
    Next​
  • Imprimer une plage de cellules
    Sub imprimerPlageCellules()​
    Sheets("feuil1").Range("A1:D10").printOut​
    End Sub​
  • Aperçu de la Feuille nommée "Feuil2" avant impression
    Sub previsualiserAvantPrint()​
    Sheets("Feuil2").printPreview​
    End Sub​
  • Effectuer l'aperçu avant impression en utilisant les boites de dialogues intégrées d'Excel
    Application.Dialogs(xlDialogPrintPreview).Show​
    Remarque :​
    L'argument False permet de rendre inactifs les boutons "mise en page" et "Marges"​
    Application.Dialogs(xlDialogPrintPreview).Show False​
  • Imprimer la page active et les tous les classeurs liés
    Sub imprimerPageActiveEt_Liensclasseurs()​
    Dim Lien As Hyperlink​
    Dim I As Byte​
    Application.screenUpdating = False​
    Activesheet.printOut​
    For Each Lien In activeSheet.Hyperlinks​
    If Right(Range(Lien.Range.Address).Hyperlinks(1).Address, 4) = ".xls" Then​
    Range(Lien.Range.Address).Hyperlinks(1).Follow newWindow:=False​
    For I = 1 To activeWorkbook.Sheets.Count​
    activeWorkbook.Sheets(I).printOut​
    Next I​
    activeWorkbook.Close​
    End If​
    Next​
    Application.screenUpdating = True​
    End Sub​
  • Imprimer une feuille sans couleur de fond
  • Choix par inputBox du nombre de copies à imprimer
    Sub imprimeClasseur()​
    Dim X As Byte​
    On Error goTo gestionErreur​
    X = inputBox("Saisir le nombre de copies à effectuer . ", "Impression")​
    activeWorkbook.printOut Copies:=X, Collate:=True​
    Exit Sub​
    gestionErreur:​
    If Err = 13 Then msgBox "Saisie non valide ."​
    End Sub​
  • Imprimer une Feuille en noir et blanc
    Sub impressionNoirEtBlanc()​
    With Worksheets("Feuil1")​
    .pageSetup.blackAndWhite = True 'parametrage N&B​
    .printOut 'imprimer​
    .pageSetup.blackAndWhite = False'réinitialisation​
    End With​
    End Sub​
  • Changer temporairement l'imprimante active
  • Afficher l'aperçu des sauts de page , de la feuille active
    Sub afficherSautsDePage()​
    activeWindow.View = xlPageBreakPreview​
    End Sub​
  • Masquer l'aperçu des sauts de page , de la feuille active
    Sub masquerLesSautsDePage()​
    activeWindow.View = xlNormalView​
    End Sub​
  • Afficher la boite de dialogue d'impression, en précisant le nombre de copies
    'Dans l'exemple le nombre de copies par défaut =3​
    Sub boiteDialogueImpression()​
    Application.Dialogs(xlDialogPrint).Show , , , 3​
    End Sub​
  • Afficher la boite de dialogue pour le choix de l'imprimante
    Sub boiteDialogueChoixImprimante()​
    Application.Dialogs(Excel.xlBuiltInDialog.xlDialogPrinterSetup).Show​
    End Sub​
  • Sélectionner l'imprimante pour l'édition
    If Application.Dialogs(xlDialogPrinterSetup).Show = True Then Feuil1.printOut​
  • Empècher l'impression
    Private Sub Workbook_beforePrint(Cancel As Boolean)​
    Cancel = True​
    End Sub​
  • Signaler la fin d'impression par un msgBox
  • Suivre l'impression des documents
    La macro "Suivi_Impression_V02" permet d'afficher dans la barre de statut des informations sur le document en cours d'édition :​
    le nombre de pages déja imprimées​
    le nombre total de pages à imprimer​
    le nom du document en cours d'impression​
    La macro "Temporisation" permet de rafraichir régulierement les informations( toutes les 2 secondes dans l'exemple )​
    La macro "Finir" termine la procedure lorsque la file d'attente d'impression est vide​
    voir la procedure du : 23-11-04 00:46 dans le fil de discussion​
    Un autre exemple :​
    Lien supprimé
  • Lister les imprimantes installées et préciser laquelle est active
    Sub listeImprimantes_et_Statut()​
    'testé avec Excel2002 et WinXP​
    Dim objWMIService As Object, colInstalledPrinters As Object, objPrinter As Object​
    Dim nomPC As String, Resultat As String​
    nomPC = "."​
    Set objWMIService = getObject("winmgmts:" & _​
    "{impersonationLevel=impersonate}!\\" & nomPC & "\root\cimv2")​
    Set colInstalledPrinters = objWMIService.execQuery("Select * from Win32_Printer")​
    For Each objPrinter In colInstalledPrinters​
    Resultat = Resultat & objPrinter.Name & " imprimante active : " & objPrinter.Default & vbLf​
    Next​
    msgBox Resultat​
    End Sub​
  • Afficher les propriétés des imprimantes installées
    Sub proprietesImprimantes()​
    Dim objWMIService As Object, colItems As Object​
    Dim objItem As Object​
    Dim strComputer As String​
    Dim i As Byte​
    On Error Resume Next​
    strComputer = "."​
    Set objWMIService = getObject("winmgmts:\\" & strComputer & "\root\cimv2")​
    Set colItems = objWMIService.execQuery("Select * from Win32_printerConfiguration", , 48)​
    For Each objItem In colItems​
    i = i + 1​
    Cells(1, i) = "bitsPerPel: " & objItem.bitsPerPel​
    Cells(2, i) = "Caption: " & objItem.Caption​
    Cells(3, i) = "Collate: " & objItem.Collate​
    Cells(4, i) = "Color: " & objItem.Color​
    Cells(5, i) = "Copies: " & objItem.Copies​
    Cells(6, i) = "Description: " & objItem.Description​
    Cells(7, i) = "deviceName: " & objItem.deviceName​
    Cells(8, i) = "displayFlags: " & objItem.displayFlags​
    Cells(9, i) = "displayFrequency: " & objItem.displayFrequency​
    Cells(10, i) = "ditherType: " & objItem.ditherType​
    Cells(11, i) = "driverVersion: " & objItem.driverVersion​
    Cells(12, i) = "Duplex: " & objItem.Duplex​
    Cells(13, i) = "formName: " & objItem.formName​
    Cells(14, i) = "horizontalResolution: " & objItem.horizontalResolution​
    Cells(15, i) = "ICMIntent: " & objItem.ICMIntent​
    Cells(16, i) = "ICMMethod: " & objItem.ICMMethod​
    Cells(17, i) = "logPixels: " & objItem.logPixels​
    Cells(18, i) = "mediaType: " & objItem.mediaType​
    Cells(19, i) = "Name: " & objItem.Name​
    Cells(20, i) = "Orientation: " & objItem.Orientation​
    Cells(21, i) = "paperLength: " & objItem.paperLength​
    Cells(22, i) = "paperSize: " & objItem.paperSize​
    Cells(23, i) = "paperWidth: " & objItem.paperWidth​
    Cells(24, i) = "pelsHeight: " & objItem.pelsHeight​
    Cells(25, i) = "pelsWidth: " & objItem.pelsWidth​
    Cells(26, i) = "printQuality: " & objItem.printQuality​
    Cells(27, i) = "Scale: " & objItem.Scale​
    Cells(28, i) = "SettingID: " & objItem.SettingID​
    Cells(29, i) = "specificationVersion: " & objItem.specificationVersion​
    Cells(30, i) = "TTOption: " & objItem.TTOption​
    Cells(31, i) = "verticalResolution: " & objItem.verticalResolution​
    Cells(32, i) = "XResolution: " & objItem.Xresolution​
    Cells(33, i) = "YResolution: " & objItem.Yresolution​
    Columns(i).autoFit​
    Next​
    End Sub​
Afficher les propriétés de la zone d'impression d'une imprimante (marges horizontales et verticales)



  • Modifier la mise en page avant impression
    Sub miseEnPageAvantImpression()​
    With Feuil1.pageSetup​
    .leftMargin = Application.inchesToPoints(0.5)​
    .rightMargin = Application.inchesToPoints(0.75)​
    .topMargin = Application.inchesToPoints(1.5)​
    .bottomMargin = Application.inchesToPoints(1)​
    .headerMargin = Application.inchesToPoints(0.5)​
    .footerMargin = Application.inchesToPoints(0.5)​
    End With​
    Feuil1.printPreview​
    End Sub​
  • Arreter l'impression en cours et vider la file d'attente
  • Définir la zone d'impression sur une plage de cellules
    activeSheet.pageSetup.printArea = "$A$1:$E$10"​
  • Adapter la zone d'impression à une seule feuille
    With Sheets(1).pageSetup​
    .printArea = "A1:M100"​
    .Zoom = False​
    .fitToPagesWide = 1​
    .fitToPagesTall = 1​
    End With​
  • Réinitialiser la zone d'impression à la feuille complete
    activeSheet.pageSetup.printArea = ""​
    Une autre possibilité :​
    activeSheet.pageSetup.printArea = False​
  • Vérifier si l'imprimante est parametree pour imprimer en Noir et Blanc ou en couleur
    ( Voir le message du 18/08/2005 20:54 )​
  • Répéter l'insertion des 4 premieres lignes dans toutes les pages imprimées
    menu Fichier​
    Mise en page​
    onglet "Feuille"​
    dans le champ "Lignes à repeter en haut" , tu selectionnes les 4 lignes qui devront apparaître sur chaque page imprimée​
    tu peux aussi saisir directement dans ce champ $1:$4​
  • Centrer le contenu de la feuille lors de l'impression
    With Feuil1​
    .pageSetup.centerHorizontally = True​
    .pageSetup.centerVertically = True​
    .printOut​
    End With​
  • Imprimer un fichier texte
    Shell "notepad.exe /P""C:\monRepertoire\leFichier.txt""", 1​
  • Ouvrir le port d'impression pour éditer un texte
    Sub imprimerTexte()​
    Open "LPT1:" For Output As #1​
    Print #1, "test d'impression."​
    Print #1, "test 2eme ligne."​
    Close #1​
    End Sub​
  • Imprimer le 2eme graphique contenu dans le Feuil1
    Feuil1.chartObjects(2).Chart.printOut​
  • Imprimer la Feuil1 d'un Addin (.xla)
    With Workbooks("test.xla")​
    .isAddin = False​
    .Worksheets("Feuil1").printOut Copies:=1, Collate:=True​
    .isAddin = True​
    End With​
  • Imprimer la première page en mode Paysage et la deuxième page en mode Portrait
    With Feuil1​
    .pageSetup.Orientation = xlLandscape​
    .printOut From:=1, To:=1​
    .pageSetup.Orientation = xlPortrait​
    .printOut From:=2, To:=2​
    End With​
Les temporisations
  • Effectuer une pause dans la procédure
    Declare Sub Sleep Lib "kernel32" (byVal dwMilliseconds As Long)​
    Sub macroAvecPause()​
    'le debut de la macro​
    Sleep 1000 'pause en millisecondes​
    'la suite de la macro​
    End Sub​
  • Paramétrer la durée d'une action : 5 secondes dans cet exemple
    t = Timer + 5: Do Until Timer > t: doEvents: Loop​
  • La méthode onTime permet d'éxécuter les procedures à un moment précis( exemples issus de l'aide Excel)
    Exécuter my_Procedure dans 15 secondes.​
    Application.onTime Now + timeValue("00:00:15"), "my_Procedure"​
    Exécuter my_Procedure à 17 heures.​
    Application.onTime timeValue("17:00:00"), "my_Procedure"​
    Annuler le paramétrage de onTime de l'exemple précédent.​
    Application.onTime earliestTime:=timeValue("17:00:00"), Procedure:="my_Procedure", Schedule:=False​
  • Relancer une macro de façon récursive toutes les 2 secondes , tant qu'une condition n'est pas remplie
    'la macro incrémente la cellule B1 d'une unité toutes les 2 secondes​
    ' saisir la valeur 1 dans la cellule A1 pour terminer la procedure !!​
    '***
    Sub lancerLaProcedure()​
    Temporisation​
    End Sub​
    '***
    ''**
    Sub Temporisation()​
    'timer toutes les 2 secondes​
    Application.onTime Now + timeValue("00:00:02"), "maMacro"​
    End Sub​
    Sub maMacro()​
    Range("B1") = Range("B1") + 1 'incementation de la cellule B1​
    If Range("A1") = 1 Then ' terminer la procedure si la cellule A1=1​
    Finir​
    Exit Sub​
    End If​
    Temporisation​
    End Sub​
    Sub Finir()​
    On Error Resume Next​
    Application.onTime Now + timeValue("00:00:01"), "maMacro", , Schedule:=False​
    End Sub​
    '*
  • Un compte à rebours pour fermer un Userform
    Lien supprimé
Les fonctions
  • La fonction Val et les valeurs décimales :
    Pour extraire les données décimales avec la fonction Val , il faut remplacer la virgule par un point​
  • Utiliser la fonction DROITEREG ( LINEST) par macro
    Dim y_connus(), x_connus()​
    y_connus = Array(5, 2, 1)​
    x_connus = Array(6, 3, 4)​
    Range("A1") = worksheetFunction.linEst(y_connus, x_connus)​
  • Lancer une procédure contenue dans une macro complémentaire .XLA
    Cet exemple lance une macro issue de l'utilitaire d'analyse - VBA (ATPVBAEN.XLA)​
    msgBox Application.Run("ATPVBAEN.XLA!WORKDAY", 12/11/2005, 10, 5)​
  • Utiliser une fonction matricielle SOMMEPROD par macro
    La macro correspond à cette formule:​
    SOMMEPROD((E58:E183=H60)(C58:C183=I60)(B58:B183=J60)*(F58:F183))​
    Les arguments H60, I60 et J60 seront maintenant des données saisie dans les Textbox d'un Userform​
    msgBox Evaluate("=SUMPRODUCT((E58:E183 =""" & textBox1.Text & """) * " & _​
    "(C58:C183 =""" & textBox2.Text & """) * (B58:B183 =""" & textBox3.Text & """) * (F58:F183))")​
  • La fonction Switch: Renvoyer la donnée associée à un mot
    Sub Test()​
    msgBox valeurEquivalente("Vert")​
    End Sub​
    Function valeurEquivalente(Couleur As String)​
    valeurEquivalente = Switch(Couleur = "Bleu", 5, Couleur = "Vert", 4, Couleur = "Rouge", 3)​
    End Function​
  • La fonction IIf : Renvoyer l'un ou l'autre de deux arguments selon l'évaluation d'une expression.
    (informations issues de l'aide en ligne Excel)​
    IIf(Expr, Truepart, Falsepart)​
    Expr : Expression à évaluer.​
    Truepart : Valeur ou expression renvoyée si la valeur de Expr est True.​
    Falsepart : Valeur ou expression renvoyée si la valeur de Expr est False.​
    Exemple : Attribuer une donnée à la cellule A1 en fonction du contenu de la variable Cible​
    Dim Cible As String​
    Cible = "Bleu"​
    Range("A1") = IIf(Cible = "Vert", "x", "y")​
    Remarque :L'argument Falsepart est évalué même si la valeur de Expr est Vraie .​
Les evenements
  • Débuter : comment afficher un message à l'ouverture du classeur
    Lien supprimé
  • Empecher l'affichage du menu contextuel lors du clic droit dans la feuille
    Private Sub Workbook_sheetBeforeRightClick(byVal Sh As Object, _​
    byVal Target As Range,Cancel As Boolean)​
    Cancel = True​
    End Sub​
  • Emettre un son lors du clic sur un lien hypertexte , à partir d'Excel2000
    Private Sub Workbook_sheetFollowHyperlink(byVal Sh As Object, byVal Target As Hyperlink)​
    Beep​
    End Sub​
  • Utilisez la propriété enableEvents pour désactiver les procédures évenementielles et pour éviter certaines boucles infinies
    Private Sub Workbook_sheetChange(byVal Sh As Object, byVal Target As Excel.Range)​
    Application.enableEvents = False​
    ...ma macro…​
    'TRES IMPORTANT : ne pas oublier de remettre la valeur True en fin de macro​
    Application.enableEvents = True​
    End Sub​
  • Appeler l'evenement Click d'un commandButton ( placé dans une feuille ) depuis une autre macro
    Application.Run ("Feuil1.commandButton1_Click")​
  • Afficher un message lors du clic sur la cellule E10
    Private Sub Worksheet_selectionChange(byVal Target As Range)​
    If Not Application.Intersect(Target, Range("E10")) Is Nothing Then msgBox "bonjour"​
    End Sub​
    d'autres exemples très détaillés , par @+Thierry​
    Déclencher une action si la Feuil1 est activée​
    ( affichage d'un USF dans l'exemple)​
    Private Sub Workbook_sheetActivate(byVal Sh As Object)​
    If Sh.Name = "Feuil1" Then userForm1.Show​
    End Sub​
  • Réinitialiser le menu contextuel ( clic droit dans la feuille )
    Une démo de Didier myDearFriend​
    La procédure permet de supprimer les menus personnalisés présents dans le menu contextuel​
    Lien supprimé
    Un autre exemple​
    Sub reinitialiserMenuContextuelDisparu()​
    Application.commandBars("cell").Reset​
    End Sub​
  • Intercepter l'evenement changement de la couleur du fond des cellules
    Option Explicit​
    Dim x As Integer​
    Dim Cell As String​
    Private Sub Worksheet_selectionChange(byVal Target As Range)​
    On Error Resume Next​
    If Cell = "" Then​
    x = Target.Interior.colorIndex​
    Cell = Target.Address​
    Exit Sub​
    End If​
    If Range(Cell).Interior.colorIndex <> x Then _​
    msgBox "la couleur de la cellule " & Cell & " a changé"​
    x = Target.Interior.colorIndex​
    Cell = Target.Address​
    End Sub​
  • Déclencher une procédure evenementielle contenue dans un USF ,depuis une macro qui possede une variable
    le préfixe "Private" doit etre préalablement oté dans la macro de l'userForm​
    Private Sub Worksheet_Change(byVal Target As Range)​
    callByName userForm1, "commandButton" & Range("A1") & "_Click", vbMethod​
    End Sub​
  • Remplacer le menu contextuel ( clic droit de la souris ) par l'affichage de la palette de couleurs
    La cellule active est coloriee par la couleur sélectionnée​
    Private Sub Worksheet_beforeRightClick(byVal Target As Range, Cancel As Boolean)​
    Dim x As Long​
    Cancel = True​
    Application.Dialogs(xlDialogPatterns).Show​
    x = activeCell.Interior.colorIndex​
    If x = xlColorIndexAutomatic Then x = xlColorIndexNone​
    activeCell.Interior.colorIndex = x​
    End Sub​
  • Remplacer le menu contextuel par un inputbox qui permet de choisir entre 3 couleurs, pour colorier la cellule active
    Private Sub Worksheet_beforeRightClick(byVal Target As Range, Cancel As Boolean)​
    Dim Reponse As Variant​
    Cancel = True​
    Reponse = Application.inputBox("Saisissez une valeur entre 1 et 3" & vbLf & vbLf & _​
    "1 = Rouge" & vbLf & "2 = Vert" & vbLf & "3 = Bleu", "Colorier la cellule active", 1)​
    If Not isNumeric(Reponse) And Len(Reponse) <> 1 Then Exit Sub​
    If Reponse > 0 And Reponse < 4 Then activeCell.Interior.colorIndex = Reponse + 2​
    End Sub​
Excel
  • Afficher la version d'excel
    Sub versionExcel()​
    msgBox Application.Version​
    End Sub​
  • Fermer l'application Excel
    Sub Ferme()​
    application.Quit​
    End Sub​
  • Liste des raccourcis clavier d'Excel
  • Modifier le nom de l'utilisateur Excel
    Menu Outils​
    Options​
    Onglet Général​
    Nom d'utilisateur​
  • Moifier le nom de l'utilisateur Excel par macro
    Application.userName = "Mon Nom"​
  • Les spécifications et limites d'Excel (Excel2002)
    65536 lignes​
    256 colonnes​
    Nombre maximal de couleurs par classeur : 56​
    4 000 styles de cellules​
    1024 caractères dans une cellule​
    32767 caractères dans la barre de formule​
    7 niveaux de fonctions imbriquées​
    2048 plages sélectionnées​
    1024 caractères pour la longueur du contenu des formules​
    Précision numérique : 15 chiffres​
    Plus grand chiffre autorisé à taper dans une cellule : 9,99999999999999E+307​
    Plus grand chiffre positif autorisé : 1,79769313486231E+308​
    Plus petit chiffre négatif autorisé : -2,2251E-308​
    Plus petit chiffre positif autorisé : 2,229E-308​
    Plus grand chiffre négatif autorisé : -1E-307​
    Longueur du contenu des formules : 1 024 caractères​
    Itérations : 32 767​
    Arguments dans une fonction : 30​
    Date la plus ancienne autorisée pour les calculs : 1er janvier 1900 (1er janvier 1904 en cas d'utilisation du système de date basé sur 1904)​
    Date la plus récente autorisée pour les calculs : 31 décembre 9999​
    Durée maximale pouvant être entrée = 9999:59:59​
    Ouverture des classeurs Limité par la quantité de mémoire disponible​
    Largeur des colonnes : 255 caractères​
    Hauteur des lignes : 409 points​
    Sauts de page : 1 000 horizontaux et verticaux​
    Longueur du contenu des cellules (texte) : 32 767 caractères. Affichage de 1 024 uniquement dans une cellule et 32 767 dans la barre de formule.​
    Nombre maximal de feuilles par classeur Limité par la quantité de mémoire disponible​
    Nombre maximal de couleurs par classeur : 56​
    Formats de nombre personnalisés Entre 200 et 250, selon la version linguistique d'Excel que vous avez installée.​
    Noms dans un classeur Limité par la quantité de mémoire disponible​
    Volets dans une fenêtre : 4​
    Feuilles liées Limité par la quantité de mémoire disponible​
    Scénarios Limité par la quantité de mémoire disponible .251 scénarios seulement sont affichés dans un rapport de synthèse​
    Changement de cellules dans un scénario : 32​
    Cellules variables dans le Solveur : 200​
    Fonctions personnalisées Limité par la quantité de mémoire disponible​
    Plage de zoom De 10 pour cent à 400 pour cent​
    Références de tri 3 pour un tri simple, illimité lors de l'utilisation de tris séquentiels​
    Niveaux d'annulation 16​
    Barres d'outils personnalisées dans un classeur Limité par la quantité de mémoire disponible​
    Boutons de barres d'outils personnalisées Limité par la quantité de mémoire disponible​
    D'autres informations completes sur les spécifications et limites d'Excel​
    Le lien sur Internet
  • Modifier le parametre d'annulation des dernieres actions dans le classeur( valeur = 16 par défaut dans Excel )
  • Ouvrir le premier fichier de la liste des classeurs récemments utilisés
    Application.recentFiles(1).Open​
  • Stopper une macro qui ne veut plus s'arreter
    Ctrl + Pause​
  • Débuter : Comment créer une macro dans un classeur
    Lien supprimé
  • La fonction intégrée de récupération automatique ( à partir d'Excel 2002 ).
    La fonction de récupération automatique enregistre une copie de tous les fichiers Excel ouverts à intervalle régulier défini par l'utilisateur. Il est ainsi possible de récupérer les fichiers si Excel se ferme inopinément, au cours d'une coupure de courant, par exemple.​
    Cette fonction est disponible dans le menu Options , puis l'onglet "Enregistrer"​
  • La suppression des métadonnées d'Office 2003/XP
    Lors de la diffusion de documents électroniques Office, ces derniers peuvent contenir des informations que vous ne souhaitez pas partager publiquement, telles que des informations considérées “cachées” ou des informations qui vous permettent de collaborer lors de la rédaction ou de la modification de documents à plusieurs.​
    Microsoft propose un outil pour supprimer ces métadonnées.​
Les cellules
  • Verifier si la cellule active est ecrite en format gras
    Private Sub worksheet_selectionChange(byVal Target As Excel.Range)​
    If Target.Font.Bold = True Then​
    msgBox "oui"​
    Else: msgBox "non"​
    End If​
    End Sub​
  • Compter le nombre de cellules vides dans la plage A1:F1
    msgBox Application.countBlank(Sheets("Feuil1").Range("A1:F1"))​
  • Afficher le numéro de ligne de la cellule active
    msgBox activeCell.Row​
  • Afficher le numéro de colonne de la cellule active
    msgBox activeCell.Column​
  • Creer une liste deroulante dans une cellule
    Sub creerListeDeroulante()​
    Dim Valeur As String​
    Valeur = activeCell.Address​
    With Range(Valeur).Validation​
    .Add Type:=xlValidateList, Formula1:="choix1,choix2"​
    End With​
    End Sub​
    Un autre exemple​
    Sub listeDeroulante()​
    Dim Plage As Object​
    Dim Valeur As String​
    Dim Cible As String​
    Valeur = activeCell.Address​
    Set Plage = Application. _​
    inputBox("Sélectionnez une plage pour definir la liste de choix : ", Type:=8)​
    If Plage Is Nothing Then Exit Sub​
    Cible = Plage.Address​
    With Range(Valeur).Validation​
    .Add Type:=xlValidateList, Formula1:="=" & Cible​
    End With​
    End Sub​
  • Afficher un message si la cellule active se trouve dans une plage cible
    Private Sub worksheet_selectionChange(byVal Target As Excel.Range)​
    If Not Intersect(Target, Range("A1:F10")) Is Nothing Then msgBox "le forum XLD"​
    End Sub​
  • Changer le nom d'une cellule avec boucle
    Sub changeNomsconditionnel()​
    Dim Nom As Object​
    Dim Cible As String​
    Dim i As Integer, j As Integer​
    Set Nom = activeWorkbook.Names​
    For i = activeWorkbook.Names.Count To 1 Step -1​
    If Nom(i).nameLocal = "test" Then​
    Cible = Nom(i).refersToLocal​
    Nom(i).Delete​
    activeWorkbook.Names.Add Name:="essai", refersTo:=Cible​
    End If​
    Next i​
    End Sub​
    ou en plus direct , sans boucle​
    Sub changeNomsconditionnel2()​
    Dim Nom As Object​
    Dim Cible As String​
    Set Nom = activeWorkbook.Names​
    Cible = Nom("extraction").refersToLocal​
    Nom("extraction").Delete​
    activeWorkbook.Names.Add Name:="extraction", refersTo:=Cible​
    End Sub​
  • faire clignoter des cellules de façon conditionnelle
    Une autre solution , fournie par Didier , myDearFriend​
  • Position auto des cellules nommées en haut à gauche de l'écran quand elles sont sélectionnées
    Lien supprimé
  • Lister les noms du classeur dans la cellule A1
    Range("A1").listNames​
  • Afficher le nom de la cellule A1
    msgBox Range("A1").Name.Name​
    Remarque : la macro renvoie une erreur si la cellule n'est pas nommée​
  • Lister les cellules et les plages nommées dans l'ordre d'index des feuilles et créer une table des matières avec liens hypertextes
  • Lister les cellules et les plages nommées dans un Userform , puis cliquez dans la liste pour atteindre la cellule
    Lien supprimé
  • Modifier la largeur de la colonne A
    Sub largeurColonne()​
    Columns(1).columnWidth = 23​
    End Sub​
  • Enregistrer une plage de cellules en image au format Jpg
  • Supprimer les retours à la ligne vides dans une cellule
  • Visualiser toutes les cellules fusionnées
    Sub visualiserCellulesFusionnees()​
    Dim cell As Range​
    For Each cell In Feuil1.usedRange.Cells​
    If cell.mergeCells = True Then cell.mergeArea.Interior.colorIndex = 6​
    Next cell​
    End Sub​
  • Visualiser toutes les cellules contenant des formules , dans la Feuil1
    Sub emplacementFormules()​
    Dim Cell As Range​
    For Each Cell In Feuil1.usedRange.Cells​
    If Cell.hasFormula Then Cell.Interior.colorIndex = 4​
    Next Cell​
    End Sub​
  • Nommer des cellules non adjacentes , issues d'un filtre automatique
    Sub nommerZoneFiltree()​
    activeWorkbook.Names.Add Name:="Zone1", _​
    refersTo:="=Feuil1!" & Feuil1.autoFilter.Range.specialCells(xlCellTypeVisible).Address​
    End Sub​
  • Lister uniquement les noms de la Feuil1
  • Ajouter une option personnalisée dans le menu contextuel , lors du clic droit dans une cellule
    un exemple proposé par Hervé​
  • Supprimer tous les noms dans le classeur actif
    Dim Nom As Name​
    For Each Nom In activeWorkbook.Names​
    Nom.Delete​
    Next Nom​
  • Empecher la sélection des cellules contenant des formules
    'procédure évenementielle , à placer au niveau de la feuille​
    Private Sub Worksheet_selectionChange(byVal Target As Range)​
    Dim Cell As Range​
    For Each Cell In Selection​
    If Cell.hasFormula Then Selection.Cells(1, 1).Offset(, 1).Select​
    Next​
    End Sub​
  • La propriété currentRegion : exemple pour boucler sur les cellules contigues à la cellule A1
    Dim Plage As Range, Cell As Range​
    Set Plage = Range("A1").currentRegion​
    For Each Cell In Plage​
    Debug.Print Cell​
    Next Cell​
  • Masquer ou Afficher les lignes 5 à 10
    Rows("5:10").entireRow.Hidden = True ' masquer​
    Rows("5:10").entireRow.Hidden = False ' afficher​
  • Insérer une formule dans la cellule B1 , par macro
    Remarque : la formule doit etre écrite en anglais dans la macro​
    Range("B1").Formula = "=LINEST(G11:G14,F11:F14,FALSE,TRUE)"​
    Si vous écrivez la formule en français dans la macro ,utilisez "formulaLocal" :​
    Range("B1").formulaLocal = "=DROITEREG(G11:G14;F11:F14;FAUX;VRAI)"​
  • Protéger une plage de cellules dans la feuille
    Sélectionnes toutes les cellules de la feuille​
    Clic droit​
    Selectionnes "format celllules" dans le menu contextuel %% Il faut décocher l'option "verouillé" dans l'onglet protection %% Cliques sur OK pour valider​
    Ensuite tu sélectionnes uniquement la plage de cellules que tu souhaites protéger​
    Clic droit​
    Selectionnes "format celllules" dans le menu contextuel​
    Tu coches l'option "verouillé" dans l'onglet protection​
    Cliques sur OK pour valider​
    Ensuite​
    Menu Outils​
    Protection feuille​
    Protéger feuille​
    Assures toi que l'option "proteger la feuille et le contenu des cellules verouillées" est cochée​
    Saisie ton mot de passe ( en option )​
    Revalides le mot de passe une 2eme fois​
    Cliques sur OK​
  • Protéger les cellules qui contiennent des formules dans la feuille Feuil1
    Sub protegerCellulesContenantFormules()​
    On Error Resume Next​
    With Feuil1​
    .unProtect "XLD" 'le mot de passe est facultatif​
    .Cells.Locked = False​
    .Cells.specialCells(xlCellTypeFormulas).Locked = True​
    .enableSelection = xlUnlockedCells​
    .Protect "XLD" 'le mot de passe est facultatif​
    End With​
    End Sub​
  • Comment aller à la ligne dans une cellule
    Combines les touches du clavier : Alt + Entrée​
    ou​
    actives le renvoi automatique dans la cellule​
    Clic droit dans la cellule​
    Format de cellule​
    sélectionnes l'onglet "Alignement"​
    coches l'option "renvoyer à la ligne automatiquement"​
    cliques sur OK pour valider​
    Appliquer un renvoi à la ligne automatique dans la cellule A1 , par Macro​
    Range("A1").wrapText = True​
  • Effectuer un décalage par rapport à une cellule : la propriété Offset
    La propriété Offset permet d'appliquer un décalage par rapport à une cellule de référence​
    La synthaxe est Range("B2").Offset("numero de ligne", "numero de colonne")​
    par exemple :​
    Range("B2").Offset(-1, 2) = "test"​
    le mot "test" va s'afficher 1 ligne plus haut et 2 colonnes sur la droite par rapport à la cellule B2 , soit en cellule D1​
  • Supprimer toutes les formules dans le classeur actif
    Sub supprimeFormulesClasseur()​
    Dim i As Byte​
    On Error Resume Next​
    For i = 1 To Sheets.Count​
    activeWorkbook.Sheets(i).Cells.specialCells(xlCellTypeFormulas).Delete​
    Next i​
    End Sub​
  • Vérifier si la cellule active est sur un numéro de ligne pair
    If activeCell.Row Mod 2 = 0 Then msgBox "oui"​
  • Effacer le contenu des cellules dans la Feuil1, sans modifier les formats
    Sheets("Feuil1").Cells.clearContents​
  • Accéder à la valeur d'une cellule nommée, d'un autre classeur ouvert.
    msgBox Workbooks("classeur.xls").Names("nom").refersToRange.Value​
  • Controler la présence d'une validation (Menu Donnees / Validation) dans la cellule A1
    Sub controlePresenceValidation()​
    Dim Vl As Range​
    On Error Resume Next​
    Set Vl = Cells.specialCells(xlCellTypeAllValidation)​
    On Error goTo Fin​
    If Not Intersect(Vl, Range("A1")) Is Nothing Then​
    msgBox "Il y a une Validation dans la cellule"​
    Else​
    msgBox "Il n'y a pas de validation dans la cellule"​
    End If​
    Exit Sub​
    Fin:​
    msgBox "Il n'y a pas de validation dans la feuille"​
    End Sub​
  • Empecher la sélection des cellules dans la Feuil1 (Alain Vallon)
    With Sheets("Feuil1")​
    .enableSelection = xlUnlockedCells​
    .Protect​
    End With​
  • Verrouiller ou déverouiller la cellule A1 en fonction de la valeur d'une Checkbox
    Private Sub checkBox1_Click()​
    If Feuil1.checkBox1.Value = True Then​
    With Feuil1​
    .Unprotect​
    .Cells.Locked = False​
    .Range("A1").Interior.colorIndex = 6​
    .Range("A1").Locked = True​
    .enableSelection = xlUnlockedCells​
    .Protect​
    End With​
    Else​
    With Feuil1​
    .Unprotect​
    .Range("A1").Locked = False​
    .Range("A1").Interior.colorIndex = 3​
    End With​
    End If​
    End Sub​
  • Afficher la formule contenue dans la cellule A1
    Sub afficherFormlule()​
    Range("A1") = "'" & Range("A1").formulaLocal​
    End Sub​
    Puis réutiliser la formule pour afficher le résultat​
    Sub afficherResultat()​
    Range("A1").formulaLocal = Mid(Range("A1"), 1)​
    End Sub​
  • Identifier les cellules qui contiennent la fonction SOUSTOTAL
    Dim Cell As Range​
    For Each Cell In Range("C1:C20")​
    If Cell.hasFormula And inStr(1, Cell.formulaLocal, "SOUS.TOTAL", vbTextCompare) > 0 Then Cell.Interior.colorIndex = 4​
    Next​
Copier Coller
  • Copier une feuille dans une nouveau classeur
    Workbooks("Classeur1.xls").Sheets("maFeuille").Copy​
  • Copier la selection dans la cellule A1 de la feuille2
    Sub copierVersFeuille2()​
    Selection.Copy Sheets("feuil2").Range("A1")​
    End Sub​
  • Copier une plage de cellules dans un nouveau classeur et le sauvegarder
  • Vider le contenu du presse papier
    Sub viderPressePapier()​
    'nécéssite d'activer la référence Microsoft Form 2.0 Object Library​
    Dim Cible As dataObject​
    Set Cible = New dataObject​
    Cible.setText ""​
    Cible.putInClipboard​
    Set Cible = Nothing​
    End Sub​
  • Récupérer le contenu du presse papier dans une variable
    Sub recupererDonneePressePapier()​
    'nécéssite d'activer la référence Microsoft Form 2.0 Object Library​
    Dim Resultat As String​
    With New dataObject​
    .getFromClipboard​
    Resultat = .getText(1)​
    End With​
    msgBox Resultat​
    End Sub​
  • Ouvrir un classeur pour copier une de ses feuilles dans un autre document existant puis refermer le classeur
  • Récupérer une image contenue dans le presse papier pour l'enregistrer sur le disque
  • Réaliser une capture d'écran par macro
    Private Declare Sub keybd_event Lib "user32" ( _​
    byVal bVk As Byte, byVal bScan As Byte, byVal dwFlags As Long, _​
    byVal dwExtraInfo As Long)​
    Private Sub commandButton1_Click()​
    keybd_event vbKeySnapshot, 1, 0&, 0&​
    doEvents​
    Range("A1").Select​
    activeSheet.Paste​
    End Sub​
  • Coller des données de la "Feuil1" dans une feuille "data" qui est protégée
    Worksheets("data").Unprotect​
    Worksheets("Feuil1").Rows("3:3").Copy​
    Worksheets("data").Activate​
    Worksheets("data").Paste _​
    Destination:=Worksheets("data").Range("A1").End(xlDown).Offset(1, 0)​
    Worksheets("data").Protect​
  • Empecher l'utilisation du Copier / Coller dans un classeur
    Procédures à placer au niveau de Thisworkbook​
    Private Sub Workbook_sheetActivate(byVal Sh As Object)​
    Application.cutCopyMode = False​
    End Sub​
    Private Sub Workbook_sheetSelectionChange(byVal Sh As Object, byVal Target As Range)​
    Application.cutCopyMode = False​
    End Sub​
  • Bug possible lors de l'utilisation de l'argument xlPasteColumnWidths avec Excel 200 et 2002:
    Si vous avez un message d'erreur en utilisant cette synthaxe dans une macro :​
    activeSheet.Range("A1").pasteSpecial Paste:=xlPasteColumnWidths, _​
    Operation:=xlPasteSpecialOperationNone, skipBlanks:=False, Transpose:=False​
    Vous pouvez remplaçer xlPasteColumnWidths par la valeur 8 . Par exemple :​
    activeSheet.Range("A1").pasteSpecial Paste:=8, _​
    Operation:=xlPasteSpecialOperationNone, skipBlanks:=False, Transpose:=False​
Une démo copyPasteSpecial par Myta


Les dates et les calendriers
  • Un message à la fermeture du classeur si la date du jour est Vendredi
    Private Sub Workbook_beforeClose(Cancel As Boolean)​
    If weekDay(Date, vbSunday) = 6 Then msgBox "Nous sommes Vendredi"​
    End Sub​
    'Date renvoie la date du jour​
    'en indiquant vbSunday ,cela precise que le dimanche est le premier​
    'jour de la semaine​
    'Weekday renvoie donc le numero du jour dans la semaine ,par rapport au dimanche​
    'le vendredi est donc le 6eme jour de la semaine​
  • Supprimer la ligne si la date est dépassée
    Si les dates saisies dans la colonne A sont dépassées de 5 jours par rapport à la date du jour , les lignes sont supprimées​
    Sub suppressionSelonDate()​
    Dim Cible As Integer, j As Integer​
    Cible = Range("A65536").End(xlUp).Row​
    Application.screenUpdating = False​
    For j = Cible To 1 Step -1​
    If Cells(j, 1) < Date - 5 Then Rows(j).Delete​
    Next​
    Application.screenUpdating = True​
    End Sub​
  • Afficher la date du jour
    msgBox Date​
  • Afficher la date du jour avec un format personnalisé
    msgBox Format(Date, "dddd dd mmmm yyyy")​
  • Fonctions pour obtenir le jour , le mois ou l'annee d'une date cible
    msgBox Day("26 mai 1965")​
    msgBox Month("26 mai 1965")​
    msgBox Year("26/05/1965")​
  • Verifier si un format de date est valide
    If isDate("26/05/1965") = True Then​
    msgBox "Ok"​
    Else​
    msgBox "Le donnée n'est pas valide ."​
    End If​
  • Gestion des interventions d'un parc d'ambulances
    Lien supprimé
  • Vérifier le nombre de jours ouvrés entre les dates d'expedition et de livraison , avec une option de statistiques sur le nombre de dépassements
    Lien supprimé
  • Naviguer dans les feuilles en choisissant une date dans l'objet Calendar
    Lien supprimé
  • Un calendrier d'aide à la saisie des dates dans Excel , par myDearFriend
    Lien supprimé
    Le fichier texte qui est joint explique comment installer la macro complémentaire .XLA et décrit toutes les options de cet outil indispensable​
  • Afficher le premier jour du mois , pour une Date saisie dans la cellule A1
    Sub premierJourDuMois()​
    Dim Annee As Date, Mois As Date​
    Annee = Year(Range("A1"))​
    Mois = Month(Range("A1"))​
    msgBox Format(dateSerial(Annee, Mois, 1), "dddd dd mmmm yyyy")​
    End Sub​
    Pour afficher le dernier jour du mois précédent​
    msgBox Format(dateSerial(Annee, Mois, 1) - 1, "dddd dd mmmm yyyy")​
  • Trouver le dernier jour de chaque mois , dans une liste de dates
    Lien supprimé
  • Utilisation des formats d'heure dans une macro
    exemple qui supprime les lignes si l'heure dans la colonne F est comprise entre 08h00 et 18h00​
    (format des cellules hh:mm:ss )​
    Dim x As Integer​
    Dim Cible As Date​
    For x = Range("F65536").End(xlUp).Row To 1 Step -1​
    Cible = Cells(x, 6)​
    If Cible >= #8:00:00 AM# And Cible <= #6:00:00 PM# Then Rows(x).Delete​
    Next x​
  • La fonction monthName : afficher le nom d'un mois à partir de son index
    '1=Janvier , 2=Février , 3=Mars …etc…​
    msgBox monthName(2)​
    'L'argument True permet d'afficher le mois en abrégé​
    msgBox monthName(11, True)​
  • Rechercher dans la plage A1:A10 la date la plus proche du 17/10/2005
    Sub rechercheDateProche()​
    Dim Cell As Range​
    Dim Cible As Double, valeurProche As Double, Ecart As Double​
    Cible = 9999999999​
    For Each Cell In Range("A1:A10")​
    Ecart = Abs(CLng(CDate("17/10/2005")) - CLng(Cell))​
    If Ecart < Cible Or Ecart = 0 Then​
    Cible = Ecart​
    valeurProche = Cell​
    End If​
    Next​
    msgBox CDate(valeurProche)​
    End Sub​
  • Afficher l'heure universelle ( méridien de Greenwich ) , un exemple proposé par Michel_m
    Sub donner_heureGmt()​
    'Lien supprimé
    Dim datetime As Object​
    Set datetime = createObject("Wbemscripting.swbemdatetime")​
    datetime.setvardate (formatDateTime(Time))​
    msgBox "heure GMT:" & datetime.getvardate(False)​
    End Sub​
  • Calendriers Et Plannings 2005 , par Monique et Celeda
    Pour que votre plaisir de comptabiliser votre temps ou celui des autres, commence bien avant votre réalisation, Calendriers et Plannings - CEP - vous offre toute une panoplie de classeurs contenant toutes les formules possibles et inimaginables indispensables, à garder sous les yeux pour élaborer vos propres calendriers simples ou compliqués, rapides ou volutifs, avec ou sans couleurs​
    Alors qu'ils s'appellent, Agendas, Calendriers, Semainiers, Gestion du Temps, Feuilles de route, Cycle de Travail, Grille horaire, planifiés, temporels, arrêtez de courir, respirez, soufflez et téléchargez CEP​
  • Retrouver le mois à partir du numéro de semaine et l'index du jour.
    'adapté de Daniel Maher, mpfe​
    Dim Annee As Integer, Semaine As Integer, Jour As Integer​
    Dim Cible As Date​
    Semaine = 9​
    Annee = 2006​
    Jour = 1 'Lundi= 0 , Mardi=1 , Mercredi=2 ...et…​
    Cible = dateSerial(Annee, 1, 3) - Weekday(dateSerial(Annee, 1, 3)) - 5 + (7 * Semaine) + Jour​
    msgBox Format(Cible, "mmmm")​
    'une autre possibilité​
    msgBox monthName(Month(Cible))​
  • Vérifier le paramètre de format Date sur le poste de travail
    Sub testParametresDate()​
    msgBox Application.International(xlDateOrder)​
    'Ordre des éléments de la date:​
    '0 = mois-jour-année​
    '1 = jour-mois-année​
    '2 = année-mois-jour​
    End Sub​
Les Spécificités d' Excel sur Macintosh
  • De nombreuses informations interessantes sur la Wiki Page de Jean-Marie : MacVba
Utiliser la librairie Mingx et Excel pour générer des fichiers Flash ( format .SWF )



Lien supprimé

Vous trouverez dans le fichier zippé un lien vers le site très bien documenté d'Eric Schrafstetter​



Une alternative à Microsoft Office : Open Office
  • Exemples d'actions sur un document power Point dans Open Office
  • Afficher toutes les images d'un répertoire , dans le style planche contact
  • Sauvegarder chaque feuille d'un classeur OOo Calc , dans un fichier texte différent
  • Activer une feuille et incrémenter d'une unité la valeur de la cellule A1
  • Comment créer une boite de dialogue ( équivalent de Userform )
  • Récupérer la position d'un textFrame dans un document Writer, puis modifier l'emplacement
  • Alimenter par macro une Listbox dans une feuille
    Le lien sur Internet
  • Quelques exemples d'actions sur les onglets d'un classeur OOo Calc
    Ce lien n'existe plus
  • Trier les onglets d'un classeur Calc
    Ce lien n'existe plus
  • Quelques exemples de sauvegarde OOo par macro
    Ce lien n'existe plus
  • Definir l'alignement du texte pour une cellule dans un tableau Writer
    Exemple pour une cellule spécifique​
    Le lien sur Internet
    Exemple pour toutes les cellules du tableau​
    Le lien sur Internet
  • La gestion des répertoires avec OOo
    Ce lien n'existe plus
  • Les formes automatiques dans Open Office
    Ce lien n'existe plus
  • Les notes dans Open Office ( l'équivalent des commentaires dans Excel)
    Ce lien n'existe plus
  • Créer un modèle dans Calc et personnaliser le styliste
    Ce lien n'existe plus
  • La gestion des impressions par macro
    Ce lien n'existe plus
  • Remplir les cellules d'une feuille depuis une boite dialogue ( exemple d'un bon de commande )
    Ce lien n'existe plus
    Ce lien n'existe plus
  • Copier une feuille dans le meme classeur et effacer le contenu d'une plage de cellules
    Ce lien n'existe plus
  • Ajouter une feuille dans le classeur , la renommer et la positionner à la fin
  • Masquer démasquer les onglets du classeur
    Ce lien n'existe plus
  • Transformer une plage de cellules en majuscule
    Ce lien n'existe plus
  • Afficher une barre de progression dans la barre de statut
    Ce lien n'existe plus
  • Sortir de la procédure si cellule A1 est vide
    Ce lien n'existe plus
  • Gerer l'evenement "selection de cellules" dans une feuille
    Ce lien n'existe plus
  • Comment utiliser une Checkbox dans la feuille
    Ce lien n'existe plus
  • Créer un tableau dans Writer et reformater la premiere ligne
    Ce lien n'existe plus
  • Quelques exemples d'utilisation des fonctions dans Calc
  • Adapter l'affichage d'une boite de dialogue en plein écran, en fonction de la taille de l'écran
  • Lister dans une boite de dialogue tous les noms de fichiers d'un répertoire, puis ouvrir le fichier sélectionné
    Ce lien n'existe plus
    Ce lien n'existe plus
  • Boucler sur tous les paragraphes d'un document Writer , puis effectuer une suppression conditionnelle
    Ce lien n'existe plus
  • Remplacer la chaine de caractères sélectionnée dans un textField .
  • Regrouper des éléments par numéro d'équipe , sans espaces dans les colonnes de résultat.
    Un autre exemple qui utilise Index Equiv entre 2 feuilles​
  • Une palette de couleurs : afficher les équivalences RGB , Hex et Long d'un code couleur .
  • Consultez la FAQ Open Office.
    Le lien sur Internet
Si vous constatez des erreurs dans la page n'hesitez pas à m'en faire part .
Toutes vos idees sont les bienvenues .
Michel , Mise à jour le 25 Novembre 2006
 
Dernière modification par un modérateur:

Discussions similaires

Réponses
1
Affichages
119