Excel Downloads
Forum

Précédent   Excel Downloads Forums > Excel > Questions les plus fréquentes (FAQ) et didacticiels


Réponse
 
LinkBack Outils de la discussion
Vieux 08/03/2008, 22h41   #1 (permalink)
XLDnaute Barbatruc
 
Date d'inscription: février 2005
Messages: 3 829
Post [REF] Wiki Page 7 de MichelXld

Les sujets abordés dans cette page :
  • Les commentaires , La gestion des erreurs , L'aide en ligne Excel , Les recherches dans un classeur, Les tableaux , Les pages html et internet , Windows Media Player , Le PC et le systême d'exploitation ,Piloter Flash , les types de boucles .
Lien vers la wiki page 1 :Les feuilles , Les graphiques , Les images , Les propriétés des classeurs , Les sauvegardes , Les formes automatiques , Aleatoire , Les barres d'outils et les barres de menus , Les boites de dialogues intégrées , Les classeurs .
Lien vers la wiki page 2 : Les userforms : Les Checkbox , Les Labels , Les combobox , Les Commandbutton , Les Listbox ,Les Multipages , Les Frames , Les Textbox , Les imagesList , Les Treeview , Les Listview , Les Images , Les Webbrowser , Les calendriers , Les progressbar , Les Spreadsheet , Les Chartspaces , Les commonDialog , Les MSFlexGrid.
Lien vers la wiki page 3 :Piloter d'autres applications depuis Excel , Piloter ( Word , Outlook , Power Point ) , Les fichiers texte
Lien vers la wiki page 4 : 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
Lien vers la wiki page 5 : Les formules Excel , Les audits de formules , Les répertoires et les fichiers .
Lien vers la wiki page 6 : Les doublons , Les tris et les filtres , Les variables , Piloter les fichiers fermés (Excel , Access ,les fichiers DBF) .
Lien vers la wiki page 7 : Les commentaires , La gestion des erreurs , L'aide en ligne Excel , Les recherches dans un classeur, Les tableaux , Les pages html et internet , Windows Media Player , Le PC et le systême d'exploitation ,Piloter Flash , les types de boucles.
Lien vers la wiki page 8 : Piloter MSN Messenger et Windows Messenger , Les objets dans le feuille , Les liens hypertextes , Les formats , Visual basic editor , Les chaines de caractères , Les modules de classe.
Lien vers la wiki page 9 : Les mises en forme conditionnelles , Les Tableaux et graphiques Croisés Dynamiques , Gérer les fichiers XML depuis Excel , Piloter Open Office depuis Excel.
Lien vers la wiki page 10 : Le Publipostage Word / Excel.
Lien vers la wiki page 11 : Utiliser la librairie Windows Image Acquisition Automation Library v2.0 depuis Excel.

Les commentaires
  • Compter le nombre de commentaires dans la feuille active
    msgBox activeSheet.Comments.Count
  • Liste des commentaires dans une feuille
    Sub listeCommentairesfeuille()
    Dim Cmnt As Comment
    Dim Liste As String
    On Error goTo Fin
    For Each Cmnt In activeSheet.Comments
    Liste = Liste & Cmnt.Parent.Address & " = " & Cmnt.Text & Chr(10) & Chr(10)
    Next Cmnt
    msgBox Liste
    Exit Sub
    Fin:
    If Err.Number = 91 Then msgBox "Il n'y a pas de commentaires dans la feuille . "
    End Sub
  • Ajouter un commentaire dans la cellule A1 , puis le mettre en forme
    Sub formatCommentaire()
    Range("A1").addComment
    Range("A1").Comment.Text Text:="Le Forum :" & Chr(10) & "XLD" & Chr(10) & ""
    With Range("A1").Comment.Shape
    .Width = 100 ' dimensions commentaire
    .Height = 120
    .oLEFormat.Object.Font.Size = 14 ' taille texte
    .oLEFormat.Object.Interior.colorIndex = 3 ' couleur de fond
    .textFrame.Characters.Font.colorIndex = 4
    .textFrame.Characters.Font.Bold = True ' ecriture gras
    .oLEFormat.Object.Font.Name = "Bangle" ' type de police
    End With
    End Sub
  • Extraire toutes les valeurs numeriques d'un commentaire
    Sub sommeDansCommentaire()
    Dim i As Byte
    Dim Cible As String
    Dim Nombre As Double, Total As Double
    Cible = Range("A1").Comment.Text 'recuperation valeur commentaire
    Cible = Application.Substitute(Cible, ",", ".") 'pour que fonction Val puisse reconnaitre decimales
    Cible = Application.Substitute(Cible, " ", "x") ' pour gerer deux nombres qui se suivent
    For i = 1 To Len(Cible)
    If isNumeric(Mid(Cible, i, 1)) Then
    Nombre = Val(Mid(Cible, i, Len(Cible) - i + 1))
    msgBox Nombre
    Total = Total + Nombre
    i = i + Len(Str(Nombre)) - 1
    End If
    Next
    msgBox "Le total du commentaire : " & Total
    End Sub
  • Controler s'il y a un commentaire dans la cellule A1
    Sub controleSiCommentaire()
    If Range("A1").Comment Is Nothing Then
    msgBox "il n'y a pas un commentaire dans la cellule A1"
    Else
    msgBox "il y a un commentaire dans la cellule A1"
    End If
    End Sub
  • Copier le commentaire de la cellule A1dans le commentaire de la cellule A2
    Sub collageCommentaire()
    Range("A1").Copy
    Range("A2").pasteSpecial Paste:=xlPasteComments
    End Sub
  • Boucler sur les commentaires de la feuille et y colorer en rouge les chaines de caracteres égal à "XLD"
    Sub modificationCommentaires()
    Dim Cmnt As Comment
    Dim Cible As String
    Dim i As Integer, Valeur As Integer
    If activeSheet.Comments.Count = 0 Then Exit Sub
    For Each Cmnt In activeSheet.Comments
    Cible = Cmnt.Text
    For i = 1 To Len(Cible)
    Valeur = inStr(i, Cible, "XLD", vbTextCompare)
    If Valeur = 0 Then
    Exit For
    Else
    Cmnt.Shape.textFrame.Characters(Valeur, 6).Font.colorIndex = 3
    i = Valeur + 7
    End If
    Next i
    Next Cmnt
    End Sub
  • Adapter la taille d'un commentaire en fonction du texte qu'il contient
    Range("A1").Comment.Shape.textFrame.autoSize = True
  • Des commentaires conditionnels : une démo de Didier , myDearFriend
    Le lien sur le forum XLD
    Le fichier zippé
  • Créer un commentaire dans la cellule A1 et y insérer une image
    With Range("A1")
    .addComment
    .Comment.Shape.Fill.userPicture "C:\Image2.jpg"
    End With
  • Insérer une image dans un commentaire et redimensionner le commentaire à la taille de cette image
    Sub ajoutImageCommentaire()
    Dim Nom As Variant, Repertoire As Variant
    Dim C As Range
    Repertoire = activeWorkbook.Path & "\Photos\"
    For Each C In Selection
    Nom = C.Value
    If Not C = "" Then
    With C
    .addComment
    .Comment.Shape.Fill.userPicture Repertoire & Nom & ".jpg"
    .Comment.Visible = False 'Masque le commentaire
    End With
    With C.Comment.Shape
    .Width = Val(dimensionsImage(Repertoire, Nom & ".jpg", 27))
    .Height = Val(dimensionsImage(Repertoire, Nom & ".jpg", 28))
    End With
    End If
    Next
    End Sub
    Public Function dimensionsImage(Chemin As Variant, nomImage As Variant, Itm As Integer)
    Dim objShell As Object, strFileName As Object
    Dim objFolder As Object
    Set objShell = createObject("Shell.Application")
    Set objFolder = objShell.nameSpace(Chemin)
    Set strFileName = objFolder.Items.Item(nomImage)
    dimensionsImage = objFolder.getDetailsOf(strFileName, Itm)
    Set objShell = Nothing
    Set strFileName = Nothing
    Set objFolder = Nothing
    End Function
La gestion des erreurs
  • La liste des codes erreur
    CodeErreurVba
  • On Error goTo
    Cette instruction permet d'indiquer l'emplacement de la procédure qui gère les erreurs . Lorsqu'une erreur survient la macro passe à la ligne spécifiée : "errorHandler" dans l'exemple ci dessous
    Sub maMacro()
    On Error goTo errorHandler 'placé en début de macro : si une erreur survient, on va à la ligne "errorHandler"
    '…
    'La procedure
    '…
    Exit Sub' permet d'éviter la partie gestion d'erreur , si la macro s'est déroulés sans encombre
    errorHandler:
    msgBox Err.Number & vbLf & Err.Description' indique le numéro et la description de l'erreur survenue
    '(voir le chapitre suivant pour plus de détails sur les codes d'erreur )
    End Sub
  • On Error Resume Next
    Cette instruction , placée en début de macro , Permet en cas d'erreur de continuer la procédure en passant directement à la ligne suivante
    A utiliser avec précaution car vous ne serez pas informé qu'une erreur est survenue et vous ne pourrez pas localiser l'origine du problème dans le cas où le "bug" serait préjudiciable au résultat final de votre macro
  • On Error goTo 0
    Permet de désactiver la gestion d'erreur dans la procédure en cours
  • Afficher la description d'un code erreur spécifique
    Debug.Print Error(75)
  • Afficher la description d'une erreur survenue lors du déroulement d'une macro
    Sub Test()
    Dim X As Single
    On Error goTo errorHandler
    X = 5 / 0 'exemple : la division par 0 va creer une erreur
    '....
    errorHandler:
    Debug.Print Err.Description
    End Sub
  • Gérer les erreurs dans une macro , afficher des informations et ouvrir l'aide associée
    Sub testErreur()
    On Error goTo errorHandler
    'la procedure qui va bugguer , par exemple une division par 0:
    Dim x As Integer
    x = 2 / 0
    errorHandler:
    msgBox "Code Erreur : " & Err.Number & vbLf & "Description: " & Err.Description & _
    vbLf & Err.Source & vbLf & "Index de l'aide VBA :" & Err.helpContext & vbLf & Err.helpFile
    msgBox "Cliquez sur le bouton AIDE pour afficher l'aide en ligne", vbMsgBoxHelpButton, , Err.helpFile, Err.helpContext
    End Sub
  • Récupérer le numéro de ligne qui a provoqué une erreur (utilisation de la fonction ERL)
    Visualiser la macro
L'aide en ligne Excel
  • L'aide en ligne Excel
    Lorsque vous etes dans visual Basic Editor , vous pouvez accéder à l'aide intégrée d'Excel : Plaçez le curseur de la souris sur un des termes de votre macro , ensuite appuyez sur la touche "F1"
  • Afficher l'aide en ligne Excel
    Sub afficherAideExcel()
    Application.Help "XLMAIN10.chm" 'excel2002
    End Sub
  • Afficher l'aide en ligne VBA
    Sub afficherAideVBAexcel()
    Application.Help "vbLR6.chm" 'excel2002
    End Sub
  • Gestion des erreurs dans les formules Excel2002
    Rechercher toutes les erreurs dans la Feuil1
    Private Sub Worksheet_Calculate()
    'testé sous XP
    Dim Valeur As Range
    Dim Resultat As String, Message As String
    For Each Valeur In Sheets("Feuil1").usedRange
    If worksheetFunction.isErr(Valeur) = True Then
    Valeur.showErrors
    Select Case Valeur
    Case CVErr(xlErrDiv0)
    Resultat = "#DIV/0!"
    Case CVErr(xlErrNA)
    Resultat = "#N/A"
    Case CVErr(xlErrName)
    Resultat = "#NOM?"
    Case CVErr(xlErrNull)
    Resultat = "#NULL!"
    Case CVErr(xlErrNum)
    Resultat = "#NOMBRE!"
    Case CVErr(xlErrRef)
    Resultat = "#REF!"
    Case CVErr(xlErrValue)
    Resultat = "#VALEUR!"
    End Select
    msgBox "Il y a une erreur de type " & Resultat _
    & " dans la formule de la cellule " & Valeur.Address
    End If
    Next
    Message = msgBox("Voulez vous ouvir l'aide en ligne Excel ? ", _
    vbYesNo, "Informations complementaires sur les types d'erreur")
    If Message = vbYes Then Application.Help "XLMAIN10.chm", 60309
    '( source classeur "Fonctions 2000_XP.xls" de Ti )
    'adapter le nom du fichier et l' helpcontextId selon la version d'excel
    'If Message = vbYes Then Application.Help "XLMAIN09.chm", 60309'pour Excel2000
    End Sub
    'ensuite pour supprimer les fleches d'audit ( macro à placer dans un module )
    Sub effacerFlechesAudit()
    Worksheets("Feuil1").clearArrows
    End Sub
  • Lister les cellules contenant des erreurs dans la plage de cellule A1:A100
    Sub identifierCellulesContenantErreurs()
    Dim Plage As Range, Cible As Range
    Set Plage = Range("A1:A100")
    On Error Resume Next
    Set Cible = Plage.specialCells(xlCellTypeFormulas, xlErrors)
    If Not Cible Is Nothing Then msgBox Cible.Address(0, 0)
    End Sub
  • Utiliser le bouton d'aide dans un msgBox (vbMsgBoxHelpButton)
    Le lien sur le forum XLD
  • Utiliser un fichier d'aide(.chm) personnel dans Excel
    Lors de la distribution de vos projets , il peut etre interessant d'associer des fichiers d'aide spécifiques qui seront mis à la disposition des utilisateurs.
    Visualiser 3 exemples de macros pour afficher ces fichiers d'aide
    Des informations complémentaires sur le site de Microsoft :
    http://support.microsoft.com/default.aspx?scid=kb%3Bfr%3B209843
    http://www.microsoft.com/technet/prodtechnol/office/office2000/solution/part2/ch13.mspx?mfr=true
    Parmi les outils de création disponibles , il existe HTML Help Workshop, téléchargeable sur le site Microsoft.
    http://msdn.microsoft.com/library/default.asp?url=/library/en-us/htmlhelp/html/hwMicrosoftHTMLHelpDownloads.asp
Les recherches dans un classeur
  • Chercher un mot ou une valeur dans tous les classeurs ouverts
    Option Base 1
    Sub chercherMots_tousClasseursOuverts()
    Dim i As Integer, j As Integer, K As Integer, X As Integer
    Dim Cible As String
    Dim Cell As Range
    Dim firstAddress As String, Resultat As String
    Dim Tableau()
    Application.screenUpdating = False
    'Effacer les résultats précédents
    thisWorkbook.Sheets(1).usedRange.Cells.clearConten ts
    'Mot à chercher
    Cible = inputBox(" Saisir le mot à rechercher : ", "Recherche", "Le mot")
    If Cible = "" Then Exit Sub
    'Boucle sur tous les classeurs ouverts
    For K = 1 To Workbooks.Count
    Workbooks(K).Activate
    'boucle sur toutes les feuilles de chaque classeur
    For i = 1 To Sheets.Count
    Sheets(i).Activate
    With Sheets(i).usedRange.Cells
    Set Cell = .Find(Cible, Lookin:=xlValues)
    If Not Cell Is Nothing Then
    firstAddress = Cell.Address
    Do
    Cell.Select
    'Mise en tableau des résultats trouvés
    X = X + 1
    reDim Preserve Tableau(3, X)
    Tableau(1, X) = Workbooks(K).Name
    Tableau(2, X) = Sheets(i).Name
    Tableau(3, X) = "Cellule " & Cell.Address
    Set Cell = .findNext(After:=activeCell)
    Loop While Not Cell Is Nothing And Cell.Address <> firstAddress
    End If
    End With
    Next i
    Next K
    If X <> 0 Then
    thisWorkbook.Activate
    For j = 1 To X
    With thisWorkbook.Sheets(1)
    Range("A65536").End(xlUp).Offset(1, 0) = Tableau(1, j)
    Range("B65536").End(xlUp).Offset(1, 0) = Tableau(2, j)
    Range("C65536").End(xlUp).Offset(1, 0) = Tableau(3, j)
    End With
    Next j
    Else
    msgBox "aucune valeur trouvée"
    End If
    Application.screenUpdating = True
    End Sub
  • Rechercher un mot pouvant contenir des majuscules ou des minuscules
    Pour effectuer une recherche par VBA indépendamment de la casse (XLD=xld) , il faut saisir tout en haut du module ( avant la première macro ) : "Option Compare Text"
    Exemple :
    Option Compare Text
    Sub maMacro()
    .....
    End Sub
    Pour que la recherche soit sensible à la casse , utilisez : Option Compare Binary
    Exemple :
    Option Compare Binary
    Sub maMacro()
    .....
    End Sub
Les tableaux
  • Des informations très complétes au sujet des tableaux , sur la Wiki Page de Zon
    LeKiKideZon
  • Transférer un tableau vers un fichier texte
    Le lien sur le forum XLD
  • Transférer un tableau dans une Feuille Excel
    Sub tableauVersFeuilleExcel()
    Dim i As Integer, j As Integer, X As Integer
    Dim Tableau() As String
    'définir le nombre de lignes
    X = inputBox("Saisir le nombre de lignes : ", "Transfert tableau dans feuille Excel", 10)
    If X = 0 Then Exit Sub
    'insertion des données dans le tableau( X lignes et 2 colonnes )
    reDim Tableau(X, 2)
    For i = 0 To X - 1
    For j = 0 To 1
    Tableau(i, j) = "Valeur" & i & j
    Next j
    Next i
    'transfert du tableau dans la feuille Excel
    Range("A1:B" & UBound(Tableau)) = Tableau
    End Sub
  • Trier les données d'un tableau
    Sub tri_Tableau()
    Dim Valeur As Byte
    Dim i As Integer
    Dim Cible As Variant
    Dim Tableau()
    reDim Tableau(0 To 9) 'remplissage tableau avec cellules A1:A10
    For i = 0 To UBound(Tableau())
    Tableau(i) = Cells(i + 1, 1)
    Next i
    Do 'tri
    Valeur = 0
    For i = 0 To UBound(Tableau) - 1
    If Tableau(i) < Tableau(i + 1) Then
    Cible = Tableau(i)
    Tableau(i) = Tableau(i + 1)
    Tableau(i + 1) = Cible
    Valeur = 1
    End If
    Next i
    Loop While Valeur = 1
    For i = 0 To UBound(Tableau) 'verification tri
    msgBox Tableau(i)
    Next i
    End Sub
  • Trier une des colonnes d'un tableau multicolonnes
    Visualiser la macro
  • Récupérer dans un tableau uniquement les cellules visibles de la colonne A
    Dim Plage As Range
    Dim Cell As Range
    Dim i As Integer
    Dim Tableau() As String
    Set Plage = Sheets(1).Range("A1:A" & Range("A65536").End(xlUp).Row)
    Set Plage = Plage.specialCells(xlCellTypeVisible)
    reDim Tableau(0 To Plage.Count - 1)
    For Each Cell In Plage
    Tableau(i) = Cell
    i = i + 1
    Next
  • Réinitialiser un tableau
    et libèrer de l'espace de stockage réservé aux tableaux dynamiques (infos issues de l'aide VBA Excel )
    Erase monTableau
Après la réinitialisation :
Chaque élément d'un tableau numérique de taille fixe prend la valeur zéro.
Dim numArray(10) As Integer
Chaque élément d'un tableau de chaînes de taille fixe (longueur variable) accueille une chaîne de valeur nulle ("").
Dim strVarArray(10) As String
Chaque élément d'un tableau de chaînes de taille fixe (longueur fixe) prend la valeur zéro.
Dim strFixArray(10) As String * 10
Chaque élément d'un tableau de type Variant de taille fixe prend la valeur Empty.
Dim varArray(10) As Variant
Chaque élément d'un tableau de types définis par l'utilisateur est défini comme s'il s'agissait d'une variable distincte.
Dim dynamicArray() As Integer
reDim dynamicArray(10)
  • Vérifier si un tableau est vide
    Dim Tableau() As Long
    Dim x As Variant
    '...La procédure
    On Error Resume Next
    x = UBound(Tableau)
    On Error goTo 0
    If isEmpty(x) Then msgBox "Le tableau est vide"
Les pages html et Internet
  • Effectuer une requete Web depuis Excel
    Menu Donnees
    Donnees Externe
    Nouvelle requete sur le Web
    saisies l'adresse de la page Html
    selectionnes la ou les zones à importer
    cliques sur le bouton "Importer"
  • Télécharger un fichier ZIP stocké sur un serveur FTP
    Le lien sur Internet
  • Télécharger une image web : utilisation des requètes winHttp
    Sub recupererImageWeb_winHttp()
    'source :http://www.allhtml.com/forum/index.php?t=l&f=4&i=312103
    'activer la reference Microsoft winHttp Services ,version 5.1
    Dim b() As Byte
    Dim h As Long
    Dim oWinHttp1 As winHttp.winHttpRequest
    h = freeFile
    Open "C:\monImage.gif" For Binary As #h
    Set oWinHttp1 = New winHttp.winHttpRequest
    oWinHttp1.Open "GET", "http://www.excel-downloads.com/templates/xld/images/logoessais.gif", False
    oWinHttp1.Send
    oWinHttp1.waitForResponse (30)
    b() = oWinHttp1.responseBody
    Set oWinHttp1 = Nothing
    Put #h, 1, b()
    Close #h
    End Sub
  • Creer une page html depuis Excel
    cet exemple nécéssite d'etre connecté au web
    Le lien sur le forum XLD
    Le fichier zippé
  • Un autre exemple qui affiche un texte d'information dans une fenetre Internet Explorer
    Le fichier zippé
  • Enregistrer chaque onglet d'un classeur dans des pages Html dissociées
    Un lien est ajouté dans chaque page pour pouvoir naviguer entre les feuilles
    Le lien sur le forum XLD
    Le fichier zippé
  • Ajouter un raccourci internet dans le dossier des Favoris
    Sub ajouterLienInternetDansFavoris()
    Dim Fichier As String, cheminFavoris As String, siteURL As String
    Dim Num As Integer
    cheminFavoris = createObject("WScript.Shell").specialFolders("Favo rites") 'récupère le chemin du dossier des Favoris
    Fichier = cheminFavoris & "\XLD Mon forum préféré.url" 'adapter le nom du lien
    siteURL = "http://www.excel-downloads.com" 'l'adresse de la page internet
    Num = freeFile
    Open Fichier For Output As Num
    Print #Num, "[internetShortcut]"
    Print #Num, "URL=" & siteURL
    Close Num
    End Sub
    Une autre methode pour ajouter un lien dans les favoris
    Sub ajoutLienFavoris()
    'necessite d'activer la reference Windows Script Host Object Model
    Dim xShell As IWshRuntimeLibrary.wshShell
    Dim Raccourci As IWshRuntimeLibrary.WshURLShortcut
    Dim dirBureau As String
    Set xShell = createObject("WScript.Shell")
    dirBureau = xShell.specialFolders("Favorites")
    Set Raccourci = xShell.createShortcut(dirBureau & "\monLienPréféré.url")
    Raccourci.targetPath = "http://www.excel-Downloads.com"
    Raccourci.Save
    End Sub
  • Récupérer des informations sur des pages Html , et les piloter par macro (utilsation d'un Webbrowser )
    Changer le texte dans un bouton , puis appliquer le focus sur ce bouton
    Afficher des informations générales sur une page html : date de la création de la page , date de la dernière modification , la taille de la page
    Compter le nombre d'images d'une page html et lister les adresses , sans doublons
    Piloter une page html par macro : Exemple sur le moteur de recherche XLD
    Le lien sur le forum XLD
    Le fichier zippé
  • Afficher le nom d'une page internet
    Sub afficherNomPageInternet()
    'source : http://www.excelforum.com//showthread.php?t=333568
    'activer la reference Microsoft Internet Controls
    Dim IE As internetExplorer
    Set IE = New internetExplorer
    IE.Navigate "http://www.excel-downloads.com"
    Do Until IE.readyState = READYSTATE_COMPLETE
    doEvents
    Loop
    msgBox IE.locationName
    IE.Quit
    Set IE = Nothing
    End Sub
  • Lister tous les liens existants dans une page Web
    Sub listeLiensPageWeb()
    'nécéssite d'activer la référence Microsoft HTML Objects Library
    'nécéssite d'activer la référence Microsoft Internet Controls
    Dim IE As New internetExplorer
    Dim x As Integer
    Dim maPageHtml As HTMLDocument
    IE.Navigate "http://www.excel-downloads.com"
    Do Until IE.readyState = READYSTATE_COMPLETE
    doEvents
    Loop
    Set maPageHtml = IE.Document
    For x = 0 To maPageHtml.links.Length - 1
    Cells(x + 1, 1) = maPageHtml.links(x)
    Next
    End Sub
  • Boucler sur toutes les images d'une page Web
    Private Sub commandButton3_Click()
    'michelxld le 10.01.2005
    'boucler sur toutes les images d'une page Web
    'pour recuperer l'adresse et leurs dimensions
    'testé avec WinXP & Excel2002
    'nécéssite d'activer la référence Microsoft HTML Objects Library
    'nécéssite d'activer la référence Microsoft Internet Controls
    Dim IE As internetExplorer
    Dim maPageHtml As HTMLDocument
    Dim imgHtml As HTMLImg
    Dim i As Integer
    Set IE = createObject("internetExplorer.Application")
    IE.Visible = True
    IE.navigate "http://www.excel-downloads.com"
    Do Until IE.readyState = READYSTATE_COMPLETE
    doEvents
    Loop 'attend la fin du chargement pour continuer la procedure
    Set maPageHtml = IE.document
    'compte le nombre d'images dans la page
    msgBox "nombre d'images dans la page : " & maPageHtml.images.Length
    For i = 0 To maPageHtml.images.Length - 1 'boucle sur les images
    Set imgHtml = maPageHtml.images.Item(i)
    Debug.Print imgHtml.src 'adresse image
    Debug.Print imgHtml.Width 'largeur image
    Debug.Print imgHtml.Height 'hauteur image
    Next i
    End Sub
  • Piloter les objets d'une page Web : Les listes de choix , les zones de texte et les boutons
    Sub piloterPageWeb()
    'nécéssite d'activer la référence Microsoft HTML Objects Library
    'nécéssite d'activer la référence Microsoft Internet Controls
    Dim i As Integer
    Dim IE As internetExplorer
    Dim maPageHtml As HTMLDocument
    Dim Helem As IHTMLElementCollection
    Set IE = createObject("internetExplorer.Application")
    IE.Visible = True
    IE.navigate "http://mail1.voila.fr/webmail/login.html?REDIRECTION_INIT=TRUE"
    Do Until IE.readyState = READYSTATE_COMPLETE
    doEvents
    Loop 'attend la fin du chargement
    Set maPageHtml = IE.document
    Set Helem = maPageHtml.getElementsByTagName("input")
    'exemple de boucle pour lister les objets type "select"(listes de choix) dans la page
    'Dim Hsel As IHTMLElementCollection
    'Set Hsel = maPageHtml.getElementsByTagName("select")
    'For i = 0 To Hsel.Length - 1
    'msgBox Hsel(i).getAttribute("name") & " / " & Hsel(i).getAttribute("value")
    'Next i
    '(boucle pour lister les objets type "input" de la page)
    'For i = 0 To Helem.Length - 1
    'msgBox Helem(i).getAttribute("name") & " / " & Helem(i).getAttribute("value")
    'une autre possibilité pour déclencher le clic ( non utilisable dans cet exemple)
    'If Helem(i).getAttribute("value") = "texte du bouton" Then Helem(i).Click
    'Next i
    Helem(7).innerText = "piloter page internet VB" 'champ de saisie mots clés
    Helem(8).Click 'simulation clic
    End Sub
  • Accéder à un objet input spécifique
    Sub piloterPageHTML()
    'nécessite d'activer les références
    'Microsoft HTML Objects Library et Microsoft Internet Controls
    Dim IE As internetExplorer
    Dim maPageHtml As HTMLDocument
    Dim Helem As IHTMLElementCollection
    Dim Hx As IHTMLInputElement
    Set IE = createObject("internetExplorer.Application")
    IE.Visible = True
    IE.navigate "http://www.leSite.fr"
    Do Until IE.readyState = READYSTATE_COMPLETE
    doEvents
    Loop 'attend la fin du chargement
    Set maPageHtml = IE.document
    Set Helem = maPageHtml.getElementsByTagName("input")
    Set Hx = Helem.Item("number") 'Définit le champ Input contenu dans la page
    Hx.Value = "07;11;25;27;34" 'Insere les données
    End Sub
  • Exporter le contenu d'une page internet dans un fichier texte
    Sub exporterPageInternetDansfichierTexte()
    'La source : http://www.excelforum.com//showthread.php?t=335124
    'necessite d'activer la reference Microsoft Internet Controls
    Dim IE As internetExplorer
    Dim nFile As Integer
    Set IE = createObject("internetExplorer.Application")
    With IE
    .Visible = False
    .Silent = True
    .Navigate "http://www.excel-downloads.com"
    Do Until .readyState = READYSTATE_COMPLETE
    doEvents
    Loop 'attend la fin du chargement
    nFile = freeFile
    Open "C:\xldtest.txt" For Output Shared As #nFile
    Print #nFile, .Document.documentElement.innerText
    'Print #nFile, .document.documentElement.innerHTML
    Close #nFile
    .Quit
    End With
    Set IE = Nothing
    End Sub
  • Enregistrer une page Html dans un document Word
    Sub enregistrerPageHtml_dansWord()
    Dim wordApp As Word.Application
    Dim wordDoc As Word.Document
    Set wordApp = createObject("word.application")
    wordApp.Visible = True
    Set wordDoc = wordApp.Documents.Open(Filename:="http://www.maPage.html")
    With wordDoc
    .pageSetup.Orientation = wdOrientLandscape
    .saveAs "C:\laSauvegardeWord.doc"
    End With
    End Sub
  • Lister les fenetres Internet Explorer ouvertes
    Remarque : les fenetres de l'explorater Windows sont prises en compte
    Sub listerFenetres_IE_Ouvertes()
    'activer la référence "Microsoft Internet Controls"
    Dim IE As internetExplorer
    Dim winShell As New shellWindows
    On Error Resume Next
    For Each IE In winShell
    If IE.LocationURL <> "" Then msgBox IE.LocationURL
    'IE.Quit 'option pour fermer les fenetres
    Next IE
    End Sub
    Une autre solution sans avoir besoin de déclarer la librairie
    Sub listerFenetres_IE_Ouvertes_V02()
    Dim IE As Object, Sh As Object, Wn As Object
    Set Sh = createObject("Shell.Application")
    Set Wn = Sh.Windows
    For Each IE In Wn
    If IE.LocationURL <> "" Then msgBox IE.LocationURL
    'IE.Quit 'option pour les fermer
    Next IE
    Set Wn = Nothing
    Set Sh = Nothing
    End Sub
  • Récupérer les meta informations d'une page Web ( keyWords , description , title )
    Le lien sur le forum XLD
  • Piloter une liste de choix dans une page Web
    Le lien sur Internet
  • Ouvrir une page IE en plein écran
    Le lien sur le forum XLD
  • Imprimer une page Web
    Sub imprimerPageWeb()
    Dim IE As internetExplorer
    Set IE = createObject("internetExplorer.Application")
    IE.Visible = True
    IE.navigate "http://www.mappy.fr"
    Do Until IE.readyState = READYSTATE_COMPLETE
    doEvents
    Loop
    IE.ExecWB OLECMDID_PRINT, OLECMDEXECOPT_DONTPROMPTUSER
    End Sub
  • Importer des tableaux contenus dans des pages Web vers une feuille Excel
    Le lien sur Internet
  • Utiliser un tableau Excel dans une page Web ( Spreadsheet ) et exporter / sauvegarder le résultat dans un classeur
    Le fichier zippé
  • Modifier une page Html par macro
    Le lien sur le forum XLD
    Le fichier zippé
  • Vérifier l'état de la connection au réseau
    Voir le message du 26/07/2005 10:41
    Le lien sur le forum XLD
  • Rafraichir une page Web
    Sub rafraichirPageWeb()
    Dim IE As internetExplorer
    Set IE = createObject("internetExplorer.Application")
    IE.Visible = True
    IE.navigate "http://www.mappy.fr"
    Do Until IE.readyState = READYSTATE_COMPLETE
    doEvents
    Loop
    IE.ExecWB OLECMDID_REFRESH, OLECMDEXECOPT_DONTPROMPTUSER
    End Sub
  • Changer le titre de la page html
    Set IE = createObject("internetExplorer.Application")
    IE.Visible = True
    IE.navigate "http://www.excel-downloads.com"
    Do Until IE.readyState = READYSTATE_COMPLETE
    doEvents
    Loop
    IE.document.Title = "mon site préféré"
  • Déclencher un lien hypertexte dans une page Html
    Sub declencherLienPageWeb()
    'http://www.excel-downloads.com/component/option,com_simpleboard/Itemid,40/func,view/catid,2/id,98119/#98119
    'nécéssite d'activer la référence Microsoft HTML Objects Library
    'nécéssite d'activer la référence Microsoft Internet Controls
    Dim IE As New internetExplorer
    Dim Cible As HTMLAnchorElement
    Dim Doc As HTMLDocument
    IE.Navigate "http://www.excel-downloads.com"
    IE.Visible = True
    Do Until IE.readyState = READYSTATE_COMPLETE
    doEvents
    Loop
    Set Doc = IE.Document
    Set Cible = Doc.links(27)
    Cible.Click
    End Sub
  • Créer une page HTML en utilisant le résultat d'une requete ADO
    Visualiser la macro
  • Lister les niveaux de sécurité Internet Explorer
    Dim objWMIService As Object, colIESettings As Object, strIESetting As Object
    Dim strComputer As String
    strComputer = "."
    Set objWMIService = getObject("winmgmts:{impersonationLevel=impersonat e}!\\" _
    & strComputer & "\root\cimv2\Applications\MicrosoftIE")
    Set colIESettings = objWMIService.execQuery("Select * from MicrosoftIE_Security")
    For Each strIESetting In colIESettings
    Debug.Print "Zone : " & strIESetting.Zone
    Debug.Print "Niveau de sécurité : " & strIESetting.Level
    Debug.Print "---"
    Next
  • Ramener une fenêtre Internet Explorer au premier plan
    Visualiser la macro
  • Lister les paramètres de connection Internet
    Visualiser la macro
  • Lister le sommaire des paramètres Internet Explorer
    Visualiser la macro
Piloter Windows Media Player depuis Excel
  • Jouer et arreter une séquence musicale
    Option Explicit
    Dim Wmp As windowsMediaPlayer
    'necessite d'activer la reference Windows Media Player
    'michelxld le 11.05.2005
    'pour le forum http://www.excel-downloads.com
    Sub jouerMediaPlayer()
    Set Wmp = createObject("WMPlayer.OCX.7")
    Wmp.URL = "C:\Documents and Settings\michel\dossier\monFichier.mid"
    Wmp.Controls.Play
    End Sub
    Sub arreterMediaPlayer()
    If Wmp Is Nothing Then Exit Sub
    Wmp.Controls.stop
    End Sub
  • Afficher la durée de la séquence musicale en cours
    Dim valMin As Double, valSec As Double, S As Double
    Set Wmp = createObject("WMPlayer.OCX.7")
    Wmp.URL = "C:\monFichier.mp3"
    While Wmp.playState = 9: doEvents: Wend
    S = Wmp.currentMedia.Duration
    valMin = Application.worksheetFunction.roundDown((S / 60), 0)
    valSec = Application.worksheetFunction.roundDown(S, 0) - (valMin * 60)
    msgBox Format(valMin, "00") & ":" & Format(valSec, "00")
  • Comment piloter Windows Media Player Depuis Excel (séquences et Playlist ) :
    Vous trouverez dans ce lien un ensemble d'exemples qui montre comment lancer et gérer , une séquence musicale , mais aussi une playList ( plusieurs séquences musicales dans une meme session )
    Le lien sur le forum XLD
  • Modifier le titre d'un séquence
    Sub modifierTitreSequence()
    Dim Xwmp As IWMPMedia
    Dim Chemin As String
    Chemin = "C:\Documents and Settings\michel\dossier musique"
    Set Wmp = createObject("WMPlayer.OCX.7")
    Wmp.currentPlaylist.Clear
    Set Xwmp = Wmp.newMedia(Chemin & "\leFichierMusical.mid")
    Wmp.currentPlaylist.insertItem 0, Xwmp
    Xwmp.setItemInfo "title", "nom_Du_Titre" 'modifie le titre
    doEvents
    Wmp.Controls.Play
    'testé OK avec des fichiers .mid , .wma
    'à revoir pour les type .mp3
    msgBox Wmp.currentMedia.getItemInfo("title") 'vérifie le titre modifié
    End Sub
  • Retrouver l'index d'une séquence dans une playlist
    Dim Pl As IWMPPlaylist
    Dim j As Integer, i As Integer
    Dim Cible As String
    Cible = windowsMediaPlayer1.Controls.currentItem.Name
    Set Pl = windowsMediaPlayer1.currentPlaylist
    j = Pl.Count
    If Not j > 0 Then msgBox "il n'y a pas d'éléments dans la playlist"
    For i = 0 To j - 1
    If Cible = Pl.Item(i).Name Then
    msgBox "L'index de la séquence " & Cible & " est : " & i
    Exit For
    End If
    Next i
  • Compter le nombre de séquences dans la playlist
    windowsMediaPlayer1.currentPlaylist.Count
  • Lire la meme séquence en boucle
    windowsMediaPlayer1.URL = "C:\maMusique.mid"
    windowsMediaPlayer1.Controls.Play
    windowsMediaPlayer1.settings.setMode "loop", True
  • Ouvrir le lecteur de CD ou de DVD
    Dans cet exemple , 0 est l'index du 1er lecteur
    Sub ouvrirLecteur()
    Dim Wmp As Object, Lecteur As Object
    Set Wmp = createObject("WMPlayer.OCX.7")
    Set Lecteur = Wmp.cdromCollection.Item(0)
    Lecteur.eject
    End Sub
  • Intercepter le changement de statut d'un objet Windows Media Player inséré dans un Userform
    en utilisant l'Evenement "playStateChange"
    Private Sub windowsMediaPlayer1_playStateChange(byVal newState As Long)
    If windowsMediaPlayer1.Status = "Arrêté" Then msgBox "terminé"
    'd'autres exemples de statuts :
    'Connexion en cours...
    'Lecture en cours
    'Opération terminée
    'Ouvrir le média
    'Prêt
    'Arrêté
    'Modification du média en cours...
    End Sub
  • Utiliser Windows Media Player pour afficher un message personnalisé
    Visualiser la macro
  • Afficher ou Masquer la barre de controles de l'objet Windows Media Player .
    Dans la propriété uiMode , indiquez la valeur "none" pour masquer la barre de controles
    Pour afficher la barre de controles , indiquez la valeur "full"
  • Afficher Windows Media player en plein écran
    Windows Media player doit etre en mode "Lecture en cours" pour utiliser cette option
    Private Sub WMP_playStateChange(byVal newState As Long)
    If WMP.Status = "Lecture en cours" Then WMP.fullScreen = True
    End Sub
  • Positionner la lecture à un emplacement précis dans la séquence
    Private Sub commandButton1_Click()
    'Chargement fichier & lecture
    windowsMediaPlayer1.URL = "C:\maMusique.mp3"
    'Positionnement à la 3eme minute
    windowsMediaPlayer1.Controls.currentPosition = 180 'secondes
    End Sub
Le PC et le Systême d'exploitation
  • Afficher la boite de dialogue Windows "Arreter l'ordinateur"
    Public Declare Function SHShutDownDialog Lib "shell32" Alias "#60" _
    (Byval Yourguess As Long) As Long
    'testé avec WinXP
    Sub afficherFenetreArreterOrdinateur()
    SHShutDownDialog 1
    End Sub
  • Vérifier s'il y a un CD dans le lecteur
    Sub testPresenceCD()
    On Error goTo Fin
    Dir "D:\." 'adapter nom Lecteur
    Msgbox "il y a un CD dans lecteur D ."
    Exit Sub
    Fin:
    If Err = 52 Then Msgbox "il n'y a Pas de CD dans lecteur D ."
    End Sub
  • Afficher le Label d'un CDRom
    Sub afficherLabelCDRom()
    Dim Lecteur As String
    Dim Fs As Object, D As Object
    Lecteur = "D:\" 'adapter la lettre du lecteur
    Set Fs = createObject("Scripting.fileSystemObject")
    If Fs.driveExists(Lecteur) = True Then
    Set D = Fs.getDrive(Lecteur)
    If D.driveType = 4 Then '4="CDROM"
    Set D = Fs.getDrive(Fs.getDriveName(Lecteur))
    If (D.isReady) Then msgBox D.volumeName
    End If
    End If
    End Sub
  • Retour sur le bureau , Minimiser toutes les applications
    Sub minimizerToutesLesApplications()
    Dim WSHshell As Object, Shell As Object
    Set WSHshell = createObject("WScript.Shell")
    Set Shell = createObject("Shell.Application")
    Shell.minimizeAll
    End Sub
  • Maximaliser toutes les applications
    Sub maximaliserToutesLesApplications()
    Dim WSHshell As Object, Shell As Object
    Set WSHshell = createObject("WScript.Shell")
    Set Shell = createObject("Shell.Application")
    Shell.undoMinimizeAll
    End Sub
  • Afficher quelques boites de dialogue Windows
    Sub afficherFenetresWinows()
    'necessite d'activer reference Microsoft Shell Controls and Automation
    Dim objShell As Shell
    Set objShell = New Shell
    objShell.controlPanelItem ("mmsys.cpl") 'Proprietes Sons Et Peripheriques Audio
    'objShell.controlPanelItem ("desk.cpl")'fenetre Proprietes Affichage Windows
    'objShell.controlPanelItem ("appwiz.cpl") 'fenetre Proprietes Sons Et Peripheriques Audio
    'objShell.controlPanelItem ("timedate.cpl") 'fenetre Proprietes de dates et heures
    'objShell.controlPanelItem ("sysdm.cpl") 'fenetre Proprietes systeme
    'objShell.controlPanelItem ("main.cpl") 'fenetre Proprietes de la souris
    'objShell.controlPanelItem ("intl.cpl") 'fenetre options regionales et linguistiques
    'objShell.fileRun 'boite de dialogue Execution
    End Sub
  • Afficher la boite de dialogue Observateur d'evenements
    Sub observateurEvenements()
    Dim objShell As Object
    Dim Machine As String
    Dim retVal As Long
    Machine = "."
    Set objShell = createObject("wscript.shell")
    retVal = objShell.Run("eventvwr.exe " & Machine & " C:\Windows\system32", 1, True)
    End Sub
  • Ouvrir l'explorateur Windows sur un répertoire precis
    Sub ouvrirExplorateurWindows()
    'necessite d'activer reference Microsoft Shell Controls and Automation
    Dim objShell As Shell
    Set objShell = New Shell
    objShell.Explore ("C:\Documents and Settings\michel\dossier\general\excel")
    End Sub
  • positionner le curseur de la souris à un endroit précis sur l'écran
    Declare Function SetCursorPos Lib "user32" _
    (byVal x As Long, byVal y As Long) As Long
    Sub positionCurseur()
    SetCursorPos 100, 200
    End Sub
  • Utiliser l'API getCursorPos pour récupérer la position du curseur de la souris à l'écran
    Le lien sur le forum XLD
  • Afficher le nom du PC
    Le lien sur le forum XLD
  • Récupérer quelques informations sur votre PC
    le nom du PC
    le systeme utilisé
    les noms et types de lecteurs ( avec le numéro de serie et l'espace libre pour les disques durs )
    la résolution de l'écran
    la mémoire physique totale et libre
    la liste des imprimantes installées et l'imprimante active
    la version d'Excel et de VBE
    les processeurs
    l'utilisateur
    l'adresse IP
    Le lien sur le forum XLD
    Le fichier zippé
  • Afficher des informations sur un excecutable
    le nom de l'éditeur
    la description du programme
    la version du fichier
    le nom interne
    le copyright
    le nom de l'application
    le nom du produit
    la version du produit
    Le lien sur le forum XLD
    Le fichier zippé
  • Afficher la version d'une application
    Sub versionApplication()
    Dim Fso As Object
    Set Fso = createObject("Scripting.fileSystemObject")
    msgBox Fso.getFileVersion("C:\WINDOWS\system32\calc.exe")
    End Sub
  • Changer l'image de fond d'écran du bureau , depuis Excel
    Private Declare Function SystemParametersInfo Lib _
    "user32" Alias "SystemParametersInfoA" _
    (byVal uAction As Long, byVal uParam As Long, byVal lpvParam As Any, _
    byVal fuWinIni As Long) As Long
    Private Const SPI_SETDESKWALLPAPER = 20
    Sub changerFondEcran()
    'testé avec Excel2002 et WinXP
    Dim retVal As Long
    Dim Fichier As String
    Fichier = "C:\WINDOWS\Plume.bmp" 'adapter le chemin du fichier
    retVal = SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, Fichier, 0)
    End Sub
  • Afficher la boite de dialogue pour régler le son du PC
    Sub reglageSonPC()
    Dim retVal As Long
    retVal = Shell("sndvol32 /t")
    End Sub
  • Controler la présence d'une carte son sur le poste de travail
    Declare Function waveOutGetNumDevs Lib "winmm" () As Long
    Sub controlePresenceCarteSon()
    Dim i As Long
    i = waveOutGetNumDevs()
    If i > 0 Then msgBox "Il y a une carte son sur votre poste . "
    End Sub
  • XLD Music Player , un lecteur de CD audio pour Excel , à partir de la version 2000
    Le lien sur le forum XLD
    Le fichier zippé
  • Afficher la durée des fichiers WMV , AVI , WAV , MP3
    Le lien sur le forum XLD
  • Récupérer le ProcessID d'une fenetre spécifique
    Le lien sur le forum XLD
  • Enregistrer dans un fichier texte les propriétés des périphériques USB
    Sub listerProprietes_peripheriqueUsb()
    'adapté de http://www.vbcode.com/%%% 'enregistre les proprietes des peripheriques USB
    'dans un fichier Texte ( dans le meme repertoire que ce classeur )
    'testé avec WinXP et Excel2002
    Dim objWMIService As Object, objItem As Object, colItems As Object
    Dim nomPC As String
    Dim Fichier As String
    nomPC = "."
    Fichier = thisWorkbook.Path & "\Propriétés_USB.Txt"
    Open Fichier For Output As #1
    Set objWMIService = getObject("winmgmts:\\" & nomPC & "\root\cimv2")
    Set colItems = objWMIService.execQuery("Select * from Win32_USBController", , 48)
    For Each objItem In colItems
    Print #1, ""
    Print #1, "Availability: " & objItem.Availability
    Print #1, "Caption: " & objItem.Caption
    Print #1, "configManagerErrorCode: " & objItem.configManagerErrorCode
    Print #1, "configManagerUserConfig: " & objItem.configManagerUserConfig
    Print #1, "creationClassName: " & objItem.creationClassName
    Print #1, "Description: " & objItem.Description
    Print #1, "DeviceID: " & objItem.DeviceID
    Print #1, "errorCleared: " & objItem.errorCleared
    Print #1, "errorDescription: " & objItem.errorDescription
    Print #1, "installDate: " & objItem.installDate
    Print #1, "lastErrorCode: " & objItem.lastErrorCode
    Print #1, "Manufacturer: " & objItem.Manufacturer
    Print #1, "maxNumberControlled: " & objItem.maxNumberControlled
    Print #1, "Name: " & objItem.Name
    Print #1, "PNPDeviceID: " & objItem.PNPDeviceID
    Print #1, "powerManagementCapabilities: " & objItem.powerManagementCapabilities
    Print #1, "powerManagementSupported: " & objItem.powerManagementSupported
    Print #1, "protocolSupported: " & objItem.protocolSupported
    Print #1, "Status: " & objItem.Status
    Print #1, "statusInfo: " & objItem.statusInfo
    Print #1, "systemCreationClassName: " & objItem.systemCreationClassName
    Print #1, "systemName: " & objItem.systemName
    Print #1, "timeOfLastReset: " & objItem.timeOfLastReset
    Print #1, ""
    Print #1, ""
    Next
    Close
    End Sub
  • Afficher certaines boites de dialogue du systeme d'exploitation, en utilisant le fonction Shell
    'Afficher le panneau de configuration
    Call Shell("rundll32.exe shell32.dll,Control_RunDLL", vbNormalFocus)
    'Afficher la boite de dialogue des options régionales
    Call Shell("rundll32.exe shell32.dll,Control_RunDLL intl.cpl")
    'Afficher la boite de dialogue "propriétés de la souris"
    Call Shell("rundll32.exe shell32.dll,Control_RunDLL main.cpl @0", vbNormalFocus)
    'Afficher la boite de dialogue "propriétés d'affichage" Bureau
    Call Shell("rundll32.exe shell32.dll,Control_RunDLL desk.cpl,,0", vbNormalFocus)
    'Afficher la boite de dialogue "propriétés d'affichage" Ecran de veille
    Call Shell("rundll32.exe shell32.dll,Control_RunDLL desk.cpl,,1", vbNormalFocus)
    'Afficher la boite de dialogue "propriétés d'affichage" Apparence
    Call Shell("rundll32.exe shell32.dll,Control_RunDLL desk.cpl,,2", vbNormalFocus)
    'Afficher la boite de dialogue "propriétés d'affichage" Parametres
    Call Shell("rundll32.exe shell32.dll,Control_RunDLL desk.cpl,,3", vbNormalFocus)
    'Afficher la boite de dialogue Options d'accessibilité
    Call Shell("rundll32.exe shell32.dll,Control_RunDLL access.cpl", vbNormalFocus)
    'Afficher la boite de dialogue Ajout et supression de programmes
    Call Shell("rundll32.exe shell32.dll,Control_RunDLL appwiz.cpl", vbNormalFocus)
    'Afficher la boite de dialogue Propriétés Internet
    Call Shell("rundll32.exe shell32.dll,Control_RunDLL inetcpl.cpl", vbNormalFocus)
    'Afficher la boite de dialogue Controleur de jeux
    Call Shell("rundll32.exe shell32.dll,Control_RunDLL joy.cpl", vbNormalFocus)
    'Afficher la boite de dialogue Propriétés du clavier
    Call Shell("rundll32.exe shell32.dll,Control_RunDLL main.cpl @1", vbNormalFocus)
    'Afficher la boite de dialogue Propriétés de sons et peripheriques audio
    Call Shell("rundll32.exe shell32.dll,Control_RunDLL mmsys.cpl", vbNormalFocus)
    'Afficher la boite de dialogue Options de modes et telephonie
    Call Shell("rundll32.exe shell32.dll,Control_RunDLL modem.cpl", vbNormalFocus)
    'Propriétés du systeme
    Call Shell("rundll32.exe shell32.dll,Control_RunDLL sysdm.cpl", vbNormalFocus)
    'Propriétés de Date et Heure
    Call Shell("rundll32.exe shell32.dll,Control_RunDLL timedate.cpl", vbNormalFocus)
  • Récuperer le code couleur à l'emplacement du curseur de la souris
    Une des macros du classeur permet aussi de récupérer la couleur de fond du bureau
    Le lien sur le forum XLD
    Le fichier zippé
  • Fermer Windows et redémarrer le PC
    une démo par EMG
    Le lien sur le forum XLD
    une démo par Veriland
    Le lien sur le forum XLD
    des infos complémentaires de @+Thierry pour Windows2000
    Le lien sur le forum XLD
  • Creer un raccourci sur le bureau , pour le classeur contenant cette macro
    Sub creerRaccourciBureau()
    'necessite d'activer la reference Windows Script Host Object Model
    Dim xShell As IWshRuntimeLibrary.wshShell
    Dim Raccourci As IWshRuntimeLibrary.wshShortcut
    Dim dirBureau As String
    Set xShell = createObject("WScript.Shell")
    dirBureau = xShell.specialFolders("Desktop")
    Set Raccourci = xShell.createShortcut(dirBureau & "\monFichier.lnk")
    Raccourci.targetPath = thisWorkbook.fullName
    Raccourci.windowStyle = 1
    Raccourci.iconLocation = "C:\dating.ico" 'attribuer un icône
    Raccourci.Save
    End Sub
  • Vider le répertoire des documents recemment utilisés
    Declare Sub SHAddToRecentDocs Lib "shell32.dll" (byVal uFlags As Long, _
    byVal pv As String)
    Sub viderMenuDocumentsRecents()
    'C:\Documents and Settings\michel\Recent
    SHAddToRecentDocs 2, vbNullString
    End Sub
  • Capturer les images perçues par une webCam
    Le lien sur le forum XLD
    Le fichier zippé
    Un autre exemple qui permet de visionner ce que voit la webCam , en temps réel
    Le lien sur le forum XLD
    Le fichier zippé
  • Lister des informations sur les raccourcis du bureau
    Le lien sur Internet
  • Boucler sur les raccourcis du bureau et le lancer si un nom est retrouvé
    (ACDSee.exe dans l'exemple )
    Sub lancerRaccourciBureau()
    'michelxld le 15.04.2005
    'necessite d'activer la reference Microsoft Shell Controls and Automation
    Const Cible = &H10 'Desktop
    Dim objShell As Shell32.Shell
    Dim objFolder As Shell32.Folder
    Dim colItems As Shell32.folderItems
    Dim objItem As Shell32.folderItem
    Dim Longueur As Integer, i As Integer
    Set objShell = createObject("Shell.Application")
    Set objFolder = objShell.nameSpace(Cible)
    Set colItems = objFolder.Items
    For Each objItem In colItems
    If objItem.isLink Then
    Longueur = Len(objItem.getLink.Path)
    i = Longueur
    While Mid(objItem.getLink.Path, i, 1) <> "\"
    i = i - 1
    Wend
    If Mid(objItem.getLink.Path, i + 1, Longueur - i) = "ACDSee.exe" _
    Then objItem.invokeVerb
    End If
    Next
    End Sub
  • Sélectionner des fichiers et les copier dans un autre répertoire
    Le lien sur le forum XLD
  • Créer un fichier Wave à partir d'Excel
    Le lien sur le forum XLD
    Le fichier zippé
  • Lister et afficher quelques informations sur les disques amovibles connectés au poste de travail
    Sub listeLecteursAmovible()
    Dim FSO As Scripting.fileSystemObject
    Dim Drv As Scripting.Drive
    Set FSO = createObject("Scripting.fileSystemObject")
    For Each Drv In FSO.Drives
    If Drv.driveType = 1 Then _
    msgBox "le support " & Drv.driveLetter & " est pret : " & Drv.isReady & vbLf _
    & "espace libre : " & Format(Drv.freeSpace, "#,##0") & " octets "
    Next
    End Sub
  • Envoyer un fichier dans la corbeille
    Le lien sur le forum XLD
  • Afficher la taille des fichiers contenus dans la Corbeille
    Sub tailleElementsCorbeille()
    Dim objShell As Object, objFolder As Object, colItems As Object, objItem As Object
    Dim tailleGDO As String
    Dim taille As Long, Resultat As Long
    Const Cible = &HA&
    Set objShell = createObject("Shell.Application")
    Set objFolder = objShell.Namespace(Cible)
    Set colItems = objFolder.Items
    For Each objItem In colItems
    tailleGDO = objFolder.getDetailsOf(objItem, 3)
    Resultat = Resultat + CLng(Val(tailleGDO))
    Next
    msgBox Resultat & " kb"
    End Sub
  • Lister les types de lecteurs du PC et verifier s'ils sont disponibles
    Sub listeLecteurs()
    Dim FSO As Object, Drv As Object
    Set FSO = createObject("Scripting.fileSystemObject")
    For Each Drv In FSO.Drives
    msgBox "le support " & Drv.driveLetter & " (" & _
    typeLecteur(Drv.drivetype) & ") est pret : " & Drv.isReady
    Next
    End Sub
    Function typeLecteur(Dv As Byte) As String
    Select Case Dv
    Case 0: typeLecteur = "inconnu"
    Case 1: typeLecteur = "disque amovible"
    Case 2: typeLecteur = "disque dur"
    Case 3: typeLecteur = "disque réseau"
    Case 4: typeLecteur = "CDRom"
    Case 5: typeLecteur = "disque virtuel"
    End Select
    End Function
  • Récupérer le numéro de série des lecteurs ( clés USB comprises )
    Sub numerosSerieLecteurs()
    Dim FSO As Object, Drv As Object
    On Error Resume Next
    Set FSO = createObject("Scripting.fileSystemObject")
    For Each Drv In FSO.Drives
    msgBox Drv.driveletter & vbLf & "numero de serie :" & _
    Abs(FSO.getDrive(Drv.driveletter & ":").serialNumber)
    Next
    End Sub
  • La fonction Environ our récupérer des informations sur le systeme d'exploitation
    Dim i As Byte
    For i = 1 To 50
    Cells(i, 1) = Environ(i)
    Next i
  • Récupérer le nom de l'ordinateur
    Le lien sur le forum XLD
  • Récupérer la date d'installation de Windows (testé avec WinXP)
    For Each i In _
    getObject("winmgmts:{impersonationLevel=impersonat e}").execQuery("Select installDate, currentTimeZone From Win32_operatingSystem")
    With createObject("wbemScripting.SWbemDateTime")
    .Value = i.installDate
    msgBox dateAdd("n", -i.currentTimeZone, .getVarDate)
    End With
    Next
  • Lister tout les Patchs (Hotfixs) installés sur le poste
    Sub listePatchs()
    Dim strComputer As String
    Dim objWMIService As Object, objQuickFix As Object, colQuickFixes As Object
    'Source : http://microsoft.supinfo.com/scripts/17341/
    strComputer = "."
    Set objWMIService = getObject("winmgmts:" _
    & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
    Set colQuickFixes = objWMIService.execQuery("Select * from Win32_quickFixEngineering")
    For Each objQuickFix In colQuickFixes
    Debug.Print "Computer: " & objQuickFix.CSName
    Debug.Print "Description: " & objQuickFix.Description
    Debug.Print "Hot Fix ID: " & objQuickFix.hotFixID
    Debug.Print "Installation Date: " & objQuickFix.installDate
    Debug.Print "Installed By: " & objQuickFix.installedBy
    Next
    End Sub
  • Vérifier si vous etes l'administrateur du poste
    Private Declare Function IsNTAdmin Lib "advpack.dll" _
    (byVal dwReserved As Long, byRef lpdwReserved As Long) As Long
    Sub administrateurPC()
    msgBox CBool(IsNTAdmin(byVal 0&, byVal 0&))
    End Sub
  • Récupérer des informations sur les comptes utilisateurs
    Sub Win32_Account_testExcel()
    Dim Fso As Object, Rapport As Object
    Dim wmObj As Object, Test As Object
    Dim Valeur As Object, Ws As Object
    On Error Resume Next
    Set Fso = createObject("Scripting.fileSystemObject")
    Set Rapport = Fso.openTextFile("C:\rapport.txt", 2, True)
    Set wmObj = getObject("winMgmts:{impersonationLevel=impersonat e}")
    Set Test = wmObj.execQuery("Select * from win32_Account")
    For Each Valeur In Test
    Rapport.writeLine ("Nom : " & Valeur.name)
    Rapport.writeLine ("Description : " & Valeur.Description)
    Rapport.writeLine ("Domaines : " & Valeur.Domain)
    Rapport.writeLine ("SID : " & Valeur.SID)
    Rapport.writeLine ("------------------------------")
    Next
    Set Ws = createObject("WScript.Shell")
    activeWorkbook.followHyperlink Address:="C:\rapport.txt"
    End Sub
  • Récupérer le nom du serveur en fonction de la lettre attribuée
    Declare Function WNetGetConnection Lib "mpr.dll" Alias "WNetGetConnectionA" _
    (byVal lpszLocalName As String, byVal lpszRemoteName As String, byRef cbRemoteName As Long) As Long
    Sub equivalence_Lettre_nomServeur()
    Dim Lettre As String
    Dim remName As String * 255
    remName = String$(255, Chr$(32))
    Lettre = "J:"
    WNetGetConnection Lettre, remName, 255
    msgBox Trim(remName)
    End Sub
  • Lister les commandes qui démarrent automatiquement lors de l'ouverture d'une session
    Sub listerCommandesDemarrage()
    Dim strComputer As String
    Dim objWMIService As Object, colStartupCommands As Object, objStartupCommand As Object
    strComputer = "."
    Set objWMIService = getObject("winmgmts:\\" & strComputer & "\root\cimv2")
    Set colStartupCommands = objWMIService.execQuery("Select * from Win32_startupCommand")
    For Each objStartupCommand In colStartupCommands
    Debug.Print "Command: " & objStartupCommand.Command
    Debug.Print "Description: " & objStartupCommand.Description
    Debug.Print "Location: " & objStartupCommand.Location
    Debug.Print "Name: " & objStartupCommand.Name
    Debug.Print "User: " & objStartupCommand.User
    Debug.Print "---------------"
    Next
    End Sub
  • Déterminer le statut des ports
    Sub listerStatutsPorts()
    Dim Cmd As String
    Dim retVal As Long
    Cmd = Environ("COMSPEC") & " /C "
    retVal = Shell(Cmd & "NETSTAT -na> C:\listePorts.txt")
    doEvents
    thisWorkbook.followHyperlink "C:\listePorts.txt"
    End Sub
  • Lister les logiciels installés depuis Windows Installer
    Sub Test()
    'source :
    'http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wmisdk/wmi/win32_product.asp
    Dim objWMIService As Object
    Dim colSoftware As Object, objSoftware As Object
    Dim strComputer As String
    strComputer = "."
    Set objWMIService = getObject("winmgmts:{impersonationLevel=impersonat e}!\\" & _
    strComputer & "\root\cimv2")
    Set colSoftware = objWMIService.execQuery("Select * from Win32_Product")
    For Each objSoftware In colSoftware
    Debug.Print "Caption : " & objSoftware.Caption
    Debug.Print "Description : " & objSoftware.Description
    Debug.Print "identifyingNumber : " & objSoftware.identifyingNumber
    Debug.Print "installDate2 : " & objSoftware.installDate2
    Debug.Print "installLocation : " & objSoftware.installLocation
    Debug.Print "installState : " & objSoftware.installState
    Debug.Print "Name : " & objSoftware.Name
    Debug.Print "packageCache : " & objSoftware.packageCache
    Debug.Print "SKUNumber : " & objSoftware.SKUNumber
    Debug.Print "Vendor : " & objSoftware.Vendor
    Debug.Print "Version : " & objSoftware.Version
    Debug.Print " "
    Debug.Print "-----"
    Next
    End Sub
  • Lister les points de restauration de votre systeme (XP)
    Sub listerPointsDeRestauration()
    Dim objWMIService As Object, colItems As Object, objItem As Object
    Dim strComputer As String, strRestoreType As String
    strComputer = "."
    Set objWMIService = getObject("winmgmts:" _
    & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\default")
    Set colItems = objWMIService.execQuery("Select * from systemRestore")
    If colItems.Count = 0 Then
    Exit Sub
    Else
    For Each objItem In colItems
    Debug.Print "Name: " & objItem.Description
    Debug.Print "Number: " & objItem.sequenceNumber
    Select Case objItem.restorePointType
    Case 0: strRestoreType = "Application installation"
    Case 1: strRestoreType = "Application uninstall"
    Case 6: strRestoreType = "Restore"
    Case 7: strRestoreType = "checkpoint"
    Case 10: strRestoreType = "Device drive installation"
    Case 11: strRestoreType = "First run"
    Case 12: strRestoreType = "Modify settings"
    Case 13: strRestoreType = "Cancelled operation"
    Case 14: strRestoreType = "Backup recovery"
    Case Else: strRestoreType = "Unknown"
    End Select
    Debug.Print "Restore Point Type: " & strRestoreType
    Debug.Print "Time: " & objItem.creationTime
    Debug.Print "---"
    Next
    End If
    End Sub
Piloter une animation Flash dans Excel
Afficher la page
Le fichier zippé
Les différents types de boucles
  • For Each Next
    Cette instruction permet de boucler sur tous les éléments d'une collection .
    Une collection peut etre :
    l'ensemble des feuilles d'un classeur
    l'ensemble des cellules d'une plage
    l'ensemble des graphiques d'une feuille
    ...etc…
    Dans cet exemple , la procédure boucle sur toutes les cellules de la plage A1:A10 et affiche un message si le mot "XLD" est trouvé
    Sub rechercheDansPlageCellules()
    Dim Cell As Range
    For Each Cell In Range("A1:A10")
    If Cell = "XLD" Then
    msgBox "trouvé ! "
    Exit For
    End If
    Next Cell
    End Sub
    Remarque :
    lorsque les temps de calculs sont longs , il peut etre utile de sortir avant la fin de la boucle , en utilisant l'instruction Exit For
    (Dans l'exemple ci dessus , on sort de la boucle dès que le mot "XLD" est trouvé )
  • For To Step Next
    Permet de répéter une action , le nombre de fois défini par la boucle
    Un exemple pour insérer des données dans la plage de cellules A1:A100
    Sub Boucle01()
    Dim i As Byte
    For i = 1 To 100
    Cells(i, 1) = "XLD" & i
    Next i
    End Sub
    Remarque :
    il est aussi possible d'utiliser l'instruction Exit For pour sortir de ce type de boucle
    L'argument Step permet de définir la fréquence de l'action dans la boucle :
    Par défaut , Step = 1 si l'argument n'est pas précisé .
    le meme exemple que précédemment , mais en insérant des données dans 1 cellule sur 5 ( Step = 5 )
    Sub Boucle02()
    Dim i As Byte
    For i = 1 To 100 Step 5
    Cells(i, 1) = "XLD" & i
    Next i
    End Sub
    L'argument Step peut aussi etre négatif ( Step = -1 )
    Un exemple qui boucle sur la plage A1:A100 , en commençant par la dernière cellule , pour supprimer la ligne si la cellule est vide
    Sub Boucle03()
    Dim i As Integer
    For i = 100 To 1 Step -1
    If Cells(i, 1) = "" Then Rows(i).Delete
    Next i
    End Sub
  • Do Loop
    Dans ce premier exemple , la procédure boucle sur toutes les cellules de la plage A1:A10 et affiche un message si le mot "XLD" est trouvé
    Sub Boucle04()
    Dim i As Byte
    Do While i < 10
    i = i + 1
    If Cells(i, 1) = "XLD" Then
    msgBox "trouvé ! "
    Exit Do
    End If
    Loop
    End Sub
    Remarque :
    lorsque les temps de calculs sont longs , il peut etre utile de sortir avant la fin de la boucle , en utilisant l'instruction Exit Do
    (Dans l'exemple ci dessus , on sort de la boucle dès que le mot recherché est trouvé )
    Un autre exemple de boucle sur les cellules de la colonne A jusqu'à ce que la donnée "XLD" soit trouvée
    utilisation de la condition Until ( jusqu'à ce que la cellule soit égale à "XLD" )
    Sub Boucle05()
    Dim i As Byte
    Do
    i = i + 1
    If Cells(i, 1) = "XLD" Then
    msgBox "trouvé ! "
    End If
    Loop Until Cells(i, 1) = "XLD"
    End Sub
    Le meme exemple , mais avec l'utilisation de la condition While ( boucle tant que la cellule est différente de "XLD" )
    Sub Boucle06()
    Dim i As Byte
    Do
    i = i + 1
    If Cells(i, 1) = "XLD" Then
    msgBox "trouvé ! "
    End If
    Loop While Cells(i, 1) <> "XLD"
    End Sub
    Attention , pour ces 2 derniers exemples il faut etre sur d'avoir au moins une cellule qui répond à la condition ="XLD" , sinon vous allez créer une boucle infinie.
    Remarque :
    Les macros présentées dans ce chapitre servent simplement à visualiser la logique de fonctionnement , pour les différents types de boucles .
    Si vous souhaitez obtenir des exemples plus détaillés , ou d'autres méthodes de requète sans utiliser de boucle ( nottament pour effectuer des recherches dans les feuilles ) , consultez le chapitre "Les recherches dans un classeur" .

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 15 Septembre 2006

Dernière modification par MichelXld ; 09/03/2008 à 00h16.
MichelXld est déconnecté   Réponse avec citation
ANNONCES
Réponse

Liens sociaux