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, 18h15   #1 (permalink)
XLDnaute Barbatruc
 
Date d'inscription: février 2005
Messages: 3 829
Post [REF] Wiki 2 de MichelXld (Ce qui touche aux UserForm)

Les sujets abordés dans cette page :
  • Les userforms : Les Checkbox , Les Labels , Les combobox , Les Commandbutton , Les Listbox ,Les Multipages , Les Frames , Les Textbox , Les imageList , 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 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 userForms

Les checkBox
  • Boucle sur les checkBox
    Private Sub commandButton1_Click()
    Dim Ctrl As Control
    Dim Valeur As String
    Dim Vr As Byte, Fx As Byte
    For Each Ctrl In Me.Controls
    If typeOf Ctrl Is MSForms.checkBox Then
    If Ctrl.Value = True Then
    Valeur = Valeur & Ctrl.Name & " = True " & Chr(10)
    Vr = Vr + 1
    Else
    Valeur = Valeur & Ctrl.Name & " =False " & Chr(10)
    Fx = Fx + 1
    End If
    End If
    Next
    msgBox Valeur & Chr(10) & Chr(10) & "Il y a " & Vr & " checkbox cochés " & Chr(10) & _
    "et " & Fx & " checkbox non cochés . "
    End Sub

Les Labels
  • Un Label clignotant
    Le lien sur le forum XLD
    Le fichier zippé
  • Faire clignoter une flèche dans le Label d'un Userform
    Le fichier zippé
  • Un label qui suit le curseur de la souris
    Lors du 1er clic sur le Label , l'objet suit le curseur de la souris . Le 2eme clic permet de désactiver cette action .
    Dim Cible As Boolean
    Private Sub userForm_Initialize()
    Cible = False
    End Sub
    Private Sub Label1_Click()
    If Cible = True Then
    Cible = False
    Else
    Cible = True
    End If
    End Sub
    Private Sub Label1_mouseMove(byVal Button As Integer, byVal Shift As Integer, _
    byVal X As Single, byVal Y As Single)
    If Cible = True Then
    Label1.Left = Label1.Left + X
    Label1.Top = Label1.Top + Y
    End If
    End Sub
    Private Sub userForm_mouseMove(byVal Button As Integer, _
    byVal Shift As Integer, byVal X As Single, byVal Y As Single)
    If Cible = True Then
    Label1.Left = X
    Label1.Top = Y
    End If
    End Sub
  • Paramétrer par macro des polices type Symbole (Wingdings ,Webdings ...) dans un Label
    Label1.Font.Name ="Wingdings"
    Label1.Font.Charset = 2
    Remarque:
    Utilisez le meme principe pour les Textbox

Les Combobox
  • La methode Additem pour alimenter un combobox
    Private Sub userForm_Initialize()
    Dim i As Byte
    For i = 1 To 5
    comboBox1.addItem Cells(i, 1)
    Next i
    End Sub
  • Alimenter un Combobox sans doublon
    For j = 1 To Range("A65536").End(xlUp).Row
    Combobox1 = Range("A" & j)
    If Combobox1.Listindex = -1 Then Combobox1.Additem Range("A" & j)
    Next j
  • Trier les données d'un Combobox par ordre alphabétique
    Le lien sur le forum XLD
  • Affecter une valeur par défaut dans un Combobox lors de son affichage
    Combobox1.Listindex = 0 ' L'index 0 correspond à la première donnée contenue dans le Combobox
  • Boucler sur les Combobox d'un USF
    Alimenter les controles Combobox1 à Combobox10 avec la plage de cellules A1:A5
    For i = 1 To 10
    For Each Cell In Sheets("Feuil3").Range("A1:A5")
    Userform1.Controls("Combobox" & i).Additem Cell
    Next Cell
    Next i
  • Supprimer tous les items d'une comboBox
    comboBox1.Clear

Les Commandbutton
  • Modifier les propriétés d'un bouton
    Sub modifProprietesCommandButton()
    'changement couleur de fond
    thisWorkbook.VBProject.VBComponents("userForm1"). _
    Designer.Controls("commandButton1").backColor = &H80C0FF
    End Sub
  • Rendre un bouton actif ou inactif
    commandButton1.Enabled=True 'pour activer
    commandButton1.Enabled=False 'pour désactiver
  • Rendre un bouton visible ou invisible
    commandButton1.Visible = True
    commandButton1.Visible = False
  • Rendre un Commandbutton transparent
    Dans la propriété "Backstyle" de l'objet , choisir la valeur 0 (fmBackStyleTransparent)

Les Listbox
  • La methode Additem pour alimenter une Listbox
    Private Sub userForm_Initialize()
    Dim i As Byte
    For i = 1 To 5
    listBox1.addItem Cells(i, 1)
    Next i
    End Sub
  • La propriété List pour alimenter une Listbox
    Private Sub userForm_Initialize()
    listBox1.List() = Range("A1:A10").Value
    End Sub
  • Récupérer la donnée contenue dans la ligne sélectionnée
    msgBox listBox1.List(listBox1.listIndex)
    Remarques :
    Si aucune ligne n'est sélectionnée la macro renvoie une erreur .Pour y remédier il est possible de tester préalablement la valeur listIndex :
    Si aucune ligne n'est sélectionnée listIndex = -1 . On peut donc écrire :
    If listBox1.listIndex = -1 Then Exit Sub
    La valeur Listindex est égale à 0 pour la 1ere ligne sélectionnée , 1 pour la 2eme ligne …etc…
  • Compter le nombre de données dans une Listbox
    Msgbox listBox1.listCount
  • Sélectionner la 3eme ligne dans une Listbox
    Listbox1.Listindex = 2
  • Afficher le 3eme item de la Listbox en haut dans la zone visible
    Listbox1.topIndex = 2
  • Exemple de boucle sur toutes les données d'une listbox
    ( Les numéros d'index des Listbox commencent par zéro )
    For i = 0 To listBox1.listCount - 1
    Msgbox Listbox1.List(i)
    Next i
  • Transférer toutes les données d'une Listbox dans la Feuille de calcul (une solution proposée par Hervé)
    With listBox1
    Sheets("Feuil1").Range(Cells(1, 1), Cells(.listCount, 1)) = .List
    End With
  • Supprimer un élément dans une Listbox
    L'exemple ci-dessous enlève un Item lors d'un double clic sur la ligne
    Private Sub Listbox1_Dblclick(Byval Cancel As MSForms.Returnboolean)
    Listbox1.Removeitem (Listbox1.Listindex)
    End Sub
  • Effacer tous les éléments contenus dans une Listbox (exemple avec double clic)
    Private Sub Listbox1_Dblclick(Byval Cancel As MSForms.Returnboolean)
    Listbox1.Clear
    End Sub
  • Imprimer le contenu d'une Listbox
    Le lien sur le forum XLD
    Une autre solution proposée par Didier myDearFriend
    Private Sub btnImprListe_Click()
    Application.screenUpdating = False
    thisWorkbook.Sheets.Add
    With activeSheet
    .Range(.Cells(1, 1), .Cells(listBox1.listCount, _
    listBox1.columnCount)).Value = listBox1.List
    .printOut
    Application.displayAlerts = False
    .Delete
    Application.displayAlerts = True
    End With
    Application.screenUpdating = True
    End Sub
  • Autoriser la mutiselection dans une Listbox
    il faut sélectionner 1_fmMultiSelectMulti dans la propriété "Multiselect" de la Listbox
  • Boucler sur les lignes sélectionnées dans la Listbox
    Private Sub commandButton1_Click()
    Dim i As Byte
    For i = 0 To Listbox1.Listcount - 1 'boucle sur les éléments de la listbox
    If Listbox1.Selected(i) = True Then msgBox Listbox1.List(i)
    Next i
    End Sub
  • Définir le nombre de colonnes dans une listbox
    Listbox2.columnCount = 8
  • Définir la largeur des colonnes d'une listBox
    (Par défaut, la largeur d'une colonne est de 72 points)
    Dimensions en points (72 points = 1 pouce)
    listBox2.columnWidths = "60;72;60;60;40;60;60;25"
    un exemple pour définir la dimension des colonnes en centimetres
    listBox1.columnWidths = "2 cm; 1,5 cm"
  • alimenter une listBox sans doublons
    Private Sub userForm_Activate()
    Dim Cell As Range , Valeur As Range
    Dim Unique As New Collection
    Dim j As Byte
    i = Range("A65536").End(xlUp).Row
    On Error Resume Next
    For Each Cell In Range("A1:A" & i)
    Unique.Add Cell, CStr(Cell)
    Next Cell
    On Error goTo 0
    For Each Valeur In Unique
    Listbox1.addItem Valeur
    Next Valeur
    End Sub
  • Déplacer un Item de la Listbox d'un index vers le haut , lors d'un doubleclic sur la ligne
    Private Sub Listbox1_dblClick(byVal Cancel As MSForms.returnBoolean)
    Dim Cible As Integer
    On Error Resume Next
    With Listbox1
    If .Listindex < 0 Then Exit Sub
    Cible = .Listindex
    If Cible = 0 Then Exit Sub
    .Additem .Text, Cible - 1
    .Removeitem Cible + 1
    .Selected(Cible - 1) = True
    End With
    End Sub
  • Déplacer un Item de la Listbox n'importe ou dans la liste
    'le premier doubleclick enregistre l'item de la Listbox dans une variable , puis supprime la ligne
    'le second Double Click insère la variable en mémoire à l'emplacement du curseur
    Dim Cible As Boolean
    Dim Valeur As String
    Private Sub Listbox1_Dblclick(byVal Cancel As MSForms.returnBoolean)
    If Cible = False Then
    Cible = True
    Valeur = Listbox1
    Listbox1.removeItem Listbox1.Listindex
    Else
    Cible = False
    Listbox1.addItem Valeur, Listbox1.Listindex + 1
    End If
    End Sub
  • Extraire la valeur dans la 3eme colonne d'une Listbox , pour la ligne sélectionnée
    msgBox Listbox1.List(Listbox1.Listindex, 2)
  • Additionner toutes les valeurs de la 3eme colonne
    Le lien sur le forum XLD
  • Afficher des séparateurs de colonne dans une Listbox multicolonnes
    Private Sub userForm_Initialize()
    Dim i As Byte, j As Byte
    Listbox1.Columncount = 7
    Listbox1.Columnwidths = "50;15;50;15;50;15;50"
    For i = 1 To 20
    Listbox1.Additem "Ligne" & i
    For j = 2 To 7 Step 2
    Listbox1.List(Listbox1.Listcount - 1, j) = i & j
    Next j
    For j = 1 To 6 Step 2 'boucle pour créer les "séparateurs" de colonnes
    Listbox1.List(Listbox1.Listcount - 1, j) = Chr(124)
    Next j
    Next i
    End Sub

Les Multipages
  • Masquer ou afficher un multipage
    multiPage1.Visible = False
    multiPage1.Visible = True
  • Créer un multipage à la volee avec nombre de pages conditionnel et macros associées
    Le lien sur le forum XLD
    Le fichier zippé
  • L'indexation des pages
    0=première page
    1=deuxième page
    2=troisième page
    par exemple se positionner sur la page 3 lors de l'ouverture de l'USF
    Private Sub userForm_Initialize()
    userForm1.multiPage1.Value = 2
    End Sub
  • Empecher l'acces à la page 2
    Me.multiPage1.Pages(1).Enabled = False
  • Ajouter un Label dynamiquement dans la 3eme page d'un Multipage
    Dim monLabel As Control
    Set myLabel = multiPage1.Pages(2).Controls.Add("forms.Label.1")
    With monLabel
    .Caption = "le forum xld"
    .Left = 10
    .Top = 10
    .Height = 20
    .Width = 90
    .Object.backColor = RGB(255, 0, 0)
    End With
  • Vérifier si la page 2 du multipage est active
    If Me.multiPage1.selectedItem.Index = 1 Then msgBox "La page 2 est active"
  • Afficher le nom de la page sélectionnée
    Private Sub multiPage1_Change()
    msgBox multiPage1.selectedItem.Name
    End Sub
  • Ajouter une page dans un Multipage
    Private Sub commandButton2_Click()
    Dim Pge As Page
    Set Pge = multiPage1.Pages.Add
    Pge.Caption = "Nouvelle page"
    End Sub
  • Compter le nombre de pages dans le multipage
    msgBox multiPage1.Pages.Count
  • Afficher le nom du controle qui a le focus dans la page active d'un multipage
    msgBox multiPage1.selectedItem.activeControl.Name
  • Afficher ou masquer la 2eme page lors d'un clic sur un bouton
    Private Sub commandButton1_Click()
    If Me.multiPage1.Pages(1).Visible = False Then
    Me.multiPage1.Pages(1).Visible = True
    Else
    Me.multiPage1.Pages(1).Visible = False
    End If
    End Sub

Les Frames
  • Boucler sur tous les objets d'un Frame
    For i = 0 To Frame1.Controls.Count - 1
    msgBox Frame1.Controls.Item(i).Name
    Next i
  • Passer le Focus d'un frame vers un autre Frame
    'Dans cet exemple le Textbox1 est dans le Frame1 et le Textbox5 dans le Frame2
    Private Sub textBox1_Exit(byVal Cancel As MSForms.returnBoolean)
    Cancel = True
    On Error Resume Next
    Me.Frame2.textBox5.setFocus
    End Sub
  • Gérer l'evenement "changement de focus" pour des TextBox placés dans des Frames
    Visualiser la macro

Les Textbox
  • Afficher uniquement des asterisques lors de la saisie dans un textbox
    Private Sub userForm_Initialize()
    Me.textBox1.passwordChar = "*"
    End Sub
  • aller à la ligne dans textbox en utilisant la touche clavier "Entree"
    Private Sub userForm_Initialize()
    With textBox1
    .multiLine = True
    .enterKeyBehavior = True
    End With
    End Sub
  • Forcer les majuscules dans un textbox
    Private Sub textBox1_keyPress(byVal keyAscii As MSForms.returnInteger)
    keyAscii = Asc(UCase(Chr(keyAscii)))
    End Sub
  • Focus dans un Textbox et sélection du texte contenu
    Private Sub userForm_Activate()
    With textBox1
    .setFocus
    .selStart = 0
    .selLength = Len(textBox1.Text)
    End With
    End Sub
  • Garder le focus dans un textbox tant qu'il est vide
    Private Sub textBox1_Exit(byVal Cancel As MSForms.returnBoolean)
    If textBox1.Value = "" Then Cancel = True
    End Sub
  • Saisie uniquement des valeurs numeriques dans un textbox
    'avec la virgule non valide(entier)
    Private Sub textBox1_Change()
    On Error Resume Next
    If Not isNumeric(Right(textBox1, 1)) Then
    msgBox "Le caractere saisi n'est pas valide"
    textBox1 = Left(textBox1, Len(textBox1) - 1)
    End If
    End Sub
    'avec la virgule valide(décimal)
    Private Sub textBox1_Change()
    On Error Resume Next
    If Not isNumeric(Right(textBox1, 1)) And Right(textBox1, 1) <> "," Then
    msgBox "Le caractere saisi n'est pas valide"
    textBox1 = Left(textBox1, Len(textBox1) - 1)
    End If
    End Sub
  • Incrementer d'une unité la valeur d'un Textbox à chaque ouverture d'un USF
    Sub lanceUSFetMajTextBox()
    Dim Cible As Integer
    Cible = thisWorkbook.VBProject.VBComponents("userForm1").D esigner.Controls("textBox1").Value
    thisWorkbook.VBProject.VBComponents("userForm1").D esigner _
    .Controls("textBox1").Value = Format(Cible + 1, "000")
    userForm1.Show
    End Sub
  • Rechercher un fichier Texte et afficher le contenu dans un textBox
    Private Sub commandButton1_Click()
    Dim Fichier As String
    Dim valeur As Long
    Dim Cible As String
    Fichier = Application.getOpenFilename("Text Files (.), .")
    If Fichier = "Faux" Then Exit Sub
    Open Fichier For Input As #1 'recup données fichier texte
    valeur = fileLen(Fichier)
    Cible = Input(valeur, 1)
    Close #1
    textBox1 = Cible
    End Sub
  • Insertion automatique du séparateur lors de la saisie d'une date dans un Textbox
    Private Sub Textbox1_Change()
    Dim Valeur As Byte
    Textbox1.Maxlength = 8 'nb caracteres maxi dans textbox pour un format JJ/MM/AA
    Valeur = Len(Textbox1)
    If Valeur = 2 Or Valeur = 5 Then Textbox1 = Textbox1 & "/"
    End Sub
  • Supprimer le symbole du saut de ligne lors de l'affichage d'un Textbox dans une cellule
    Range("A1") = Application.worksheetFunction.Substitute(textBox1, vbCrLf, Chr(10))
  • Récupérer la position du curseur dans le Textbox
    msgBox textBox1.selStart
  • Afficher le numéro de ligne d'un Textbox , à l'emplacement du curseur de la souris
    Msgbox textBox1.curLine
    L'index de la premiere ligne est égal à 0
  • Déclencher la tabulation automatique lorsque le nombre de caracteres maxi autorisé est atteint
    Private Sub userForm_Initialize()
    textBox1.maxLength = 4
    textBox1.autoTab = True
    End Sub
  • Boucler sur tous les Textbox d'un USF pour en récupérer le contenu
    Dim Ctrl As Control
    For Each Ctrl In Me.Controls
    If typeOf Ctrl Is MSForms.Textbox Then Msgbox Ctrl.Object.Value
    Next Ctrl
  • Forcer un format date type xx/xx/xxxx dans le Textbox
    Private Sub textBox1_Change()
    Dim Valeur As Byte
    textBox1.maxLength = 10 'nb caracteres maxi dans textbox
    Valeur = Len(textBox1)
    If Valeur = 2 Or Valeur = 5 Then textBox1 = textBox1 & "/"
    End Sub
    Ensuite pour vérifier que c'est bien une date qui a été saisie
    Private Sub commandButton1_Click()
    If Not isDate(textBox1.Value) Then
    msgBox "Format incorrect"
    textBox1 = ""
    Exit Sub
    Else
    msgBox "Format correct"
    '...la suite de la procedure
    End If
    End Sub
  • Simuler l'utilisation d'un raccourci clavier dans un Textbox
    Le lien sur le forum XLD
Les imageList
Les Imagelist permettent de stocker et de gérer des images ( jpg ,bmp ,ico , gif ) à l'intérieur d'un classeur
  • Ajouter ou changer les images manuellement
    Dans les propriétés de l'Imagelist :
    sélectionne "Personnalisé"
    puis l'onglet "image"
    clique sur le bouton "inserer images"
    et choisit tes icônes ou images
    Le lien sur le forum XLD
    Le fichier zippé
  • Insérer de façon manuelle des images ou des icones dans une Imagelist
    Le lien sur le forum XLD
  • Exporter sur le disque dur toutes les images d'une imageList
    Toutes les images sont supposées etre au format .jpg
    Dim Img As listImage
    For Each Img In imageList1.listImages
    savePicture Img.Picture, "C:\export_Image_" & Format(Img.Index, "00") & ".jpg"
    Next Img
  • Coller dans la feuille de calcul une image issue d'une imageList
    Visualiser la macro
  • D'autres informations sur les imageList
    Le lien sur Internet
  • Voir aussi les chapitres Listview & Treeview pour visualiser d'autres exemples d'utilisation des imageList par macro

Les Treeview
  • Afficher l'arborescence d'un Treeview , dans une feuille Excel
    'variable Public à placer tout en haut de la macro
    Public Ligne As Integer
    Private Sub commandButton2_Click()
    'source : http://www.vb-helper.com/howto_treeview_load_edit_save.html
    If treeView1.Nodes.Count > 0 Then saveNode treeView1.Nodes(1), 1
    End Sub
    Private Sub saveNode(byVal n As Node, byVal Level As Integer)
    If n Is Nothing Then Exit Sub
    Ligne = Ligne + 1
    Cells(Ligne, Level) = n.Text
    saveNode n.Child, Level + 1
    saveNode n.Next, Level
    End Sub
  • Afficher le texte du premier nœud
    msgBox treeView1.Nodes.Item(1).Text
  • Afficher le mot clé du premier nœud
    msgBox treeView1.Nodes.Item(1).Key
  • Déployer la totalité de l'architecture du Treeview
    Private Sub commandButton1_Click()
    Dim i As Byte
    For i = 1 To treeView1.Nodes.Count
    treeView1.Nodes.Item(i).Expanded = True
    Next
    End Sub
  • Afficher le texte de chaque Node parent , ainsi que le nombre d'enfants associés
    Private Sub commandButton1_Click()
    Dim intChild As Integer, i As Integer
    For i = 1 To treeView1.Nodes.Count
    intChild = Val(treeView1.Nodes.Item(i).Children)
    If intChild > 0 Then msgBox treeView1.Nodes.Item(i).Text & " " & LTrim(Str(intChild))
    Next
    End Sub
  • Quelques actions sur les Treeview
    Représentation des nœuds par des images ( l'image change lors du focus sur un nœud )
    Afficher l'architecture du Treeview , dans la Feuil2 du classeur
    Activer le focus sur un nœud spécifique , choisi dans une Combobox
    Ajouter une Checkbox à chaque noeud
    Compter le nombre de Checkbox cochés dans le Treeview
    Masquer ou Afficher les images dans le Treeview
    Le lien sur le forum XLD
    Le fichier zippé
  • Cocher ou décocher les sous éléments d'un noeud spécifique , en fonction du Check sur cet élément
    Private Sub treeview1_nodeCheck(byVal Node As MSComctlLib.Node)
    Dim n As Integer
    If Node.Children > 0 Then
    n = Node.Child.Index
    Node.Child.Checked = Node.Checked
    While n <> Node.Child.lastSibling.Index
    treeView1.Nodes(n).Next.Checked = Node.Checked
    n = treeView1.Nodes(n).Next.Index
    Wend
    End If
    End Sub
  • Exemple de Treeview dont la matrice est dans la feuille de calcul
    Le lien sur le forum XLD
    Le fichier zippé
  • Rechercher un texte dans le Treeview , et appliquer le focus sur cet élément
    Option Compare Text
    Private Sub commandButton3_Click()
    Dim nodX As Node
    Dim Cible As String
    Cible = inputBox("Saisir le mot recherché", "Recherche Texte dans Treeview")
    If Cible = "" Then Exit Sub
    For Each nodX In treeView1.Nodes
    If nodX.Text = Cible Then
    nodX.Selected = True
    treeView1.setFocus
    Exit Sub
    End If
    Next
    msgBox "Valeur " & Cible & " non trouvée dans le Treeview ."
    End Sub
  • Supprimer le nœud sélectionné
    treeView1.Nodes.Remove (treeView1.selectedItem.Index)
  • Supprimer tous les éléments d'un treeView
    treeView1.Nodes.Clear
  • Visualiser dans un Treeview les sous dossiers d'un répertoire(option: une Listview permet d'afficher les noms de fichiers , les propriétés et les icones )
    lien sur le forum XLD
    Le fichier zippé
    La version au format XLA
    Le fichier zippé
    Une autre version qui permet de récupérer toutes les propriétés des fichiers, sans les ouvrir
    Utilisation de la méthode getDetailsOf (necessite d'activer la reference Microsoft Shell Controls and Automation)
    Le fichier zippé
  • Multisélection dans un treeview
    Il faut tout d'abord afficher les Checkboxes associés à chaque nœud :
    Treeview1.Checkboxes = True
    Ensuite , la macro ci-dessous permer de boucler sur les élements qui ont été cochés dans le treeview :
    Private Sub commandButton3_Click()
    Dim nodX As Node
    For Each nodX In treeView1.Nodes
    If nodX.Checked = True Then msgBox nodX.Text
    Next
    End Sub
  • Afficher le nom du Parent pour l'élément sélectionné
    msgBox treeView1.Nodes.Item(treeView1.selectedItem.Index) .Parent.Text
  • Empecher l'affichage Du 3eme nœud dans le Treeview
    Private Sub treeView1_Expand(byVal Node As MSComctlLib.Node)
    If Node.Index = 3 Then Node.Expanded = False
    End Sub
  • Vérifier si l'élément sélectionné est le premier ou le dernier du nœud
    If treeView1.selectedItem.Index = treeView1.selectedItem.firstSibling.Index Then msgBox "premier"
    If treeView1.selectedItem.Index = treeView1.selectedItem.lastSibling.Index Then msgBox "dernier"
  • Trier les noeuds
    Les Treeview possèdent une propriété de tri (Sorted) qu'il est possible de spécifier lors de la création de chaque noeud
    Dim Nd As Node
    Set Nd = treeView1.Nodes.Add(, , "maClé", "Le texte", "Image1", "Image2")
    Nd.Sorted = True

Les Listview
  • Lister les fichiers JPG ou AVI d'un repertoire
    Le lien sur le forum XLD
    Le fichier zippé
  • Gestion d'un annuaire telephonique avec rappel des dates d'anniversaire
    Le lien sur le forum XLD
    Le fichier zippé
  • Lister tous les fichiers d'un répertoire , ainsi que l'icône de l'executable associé à chaque fichier
    Le lien sur le forum XLD
    Le fichier zippé
  • Déselectionner tous les items d'une listView
    Set listView1.selectedItem = Nothing
    Le 1er item apparaît toujours surligné lors de l'affichage mais la ligne est bien déselectionnée pour l'utilisation des macros . Pour un aspect d'esthetique et ne pas avoir le surlignage , il faut dans ce cas assigner le focus sur un autre object de l'USF
    Ce qui donne par exemple lors de l'initialisation :
    Set listView1.selectedItem = Nothing
    commandButton1.setFocus
    Une autre solution
    For X = 1 To listView1.listItems.Count
    listView1.listItems(X).Selected = False
    Next
    Le lien sur le forum XLD
    Le fichier zippé
  • Supprimer la 3eme ligne dans une listView
    ListView1.Listitems.Remove 3
  • Supprimer la ligne active
    Listview1.listItems.Remove (Listview1.selectedItem.Index)
  • Modifier le texte dans la 3eme colonne de la premiere ligne
    ListView1.listItems(1).listSubItems(2).Text = "le forum XLD"
  • Modifier la couleur du 2eme sous élément dans la 1ere ligne d'une listView
    listView1.listitems(1).listSubItems(2).foreColor = RGB(100, 0, 100)
  • Changer la couleur du texte lorsque la ligne est sélectionnée
    Le lien sur le forum XLD
    Le fichier zippé
  • Modifier le texte dans la 1ere colonne de la 4eme ligne
    listView1.listItems(4).Text = "le forum XLD"
  • La multi selection dans une Listview
    Il faut avant tout passer la propiété Multiselect à True
    Ensuite pour sélectionner plusieurs lignes : ( en attendant de trouver mieux )
    Cliquez sur les lignes en gardant enfoncé la touche Ctrl
    'Pour boucler sur les lignes sélectionnées
    Dim i As Integer
    For i = 1 To listView1.listItems.Count
    If listView1.listItems(i).Selected = True Then msgBox listView1.listItems(i).Text
    Next
  • Empecher la modification manuelle des données dans Le Listview
    Listview1.labeledit = 1
  • Afficher le 23eme item dans la partie visible de la Listview
    listView1.listItems(23).ensureVisible
  • Afficher le 8eme item de la listView dans la premiere ligne de la partie visible (l'équivalent de Topindex)
    Dim i As Integer
    For i = 1 To listView1.listItems.Count
    listView1.listItems(i).ensureVisible
    If 8 = listView1.getFirstVisible.Index Then Exit For
    Next i
  • Afficher l'item sélectionné dans la premiere ligne de la partie visible
    Dim i As Integer
    For i = 1 To listView1.listItems.Count
    listView1.listItems(i).ensureVisible
    If listView1.selectedItem.Index = listView1.getFirstVisible.Index Then Exit For
    Next i
  • Effacer les données d'une listview
    listView1.listItems.Clear
  • Transférer le contenu d'une listview dans une feuille
    Dim i As Integer
    Dim j As Byte
    For i = 1 To listView1.listitems.Count
    Cells(i, 1) = listView1.listitems(i).Text
    For j = 1 To listView1.columnHeaders.Count - 1
    Cells(i, j+1) = listView1.listitems(i).listSubItems(j).Text
    Next j
    Next i
  • Afficher L'option des cases à cocher dans une Listview
    Me.listView1.checkBoxes = True
  • Transférer les informations dans la feuille de calcul lorsqu'une ligne est cochée dans la listView
    Private Sub listView1_itemCheck(byVal Item As MSComctlLib.listItem)
    Dim J As Byte
    Dim i As Integer
    If Item.Checked = True Then
    i = Range("A65536").End(xlUp).Row + 1
    Cells(i, 1) = listView1.listitems(Item.Index).Text %% For J = 2 To listView1.columnHeaders.Count - 1
    Cells(i, J) = listView1.listitems(Item.Index).listSubItems(J).Te xt
    Next J
    End If
    End Sub
    Le fichier zippé
  • Alimenter une listView avec uniquement les cellules visibles de la Feuil2
    Le lien sur le forum XLD
  • Quelques astuces au sujet des Listview , proposées par Jean Marie (chTi160)
    Afficher des icones dans les entetes de colonnes (dans le message du 22/10/2005 22:14 )
    Centrer une colonne de la Listview (dans le message du 23/10/2005 10:38 )
    Ajuster la Largeur des colonnes à celle du Texte (dans le message du 23/10/2005 10:38 )
    Trier les Colonnes (dans le message du 23/10/2005 10:38 )
    Le lien sur le forum XLD
  • D'autres informations sur les listView
    Le lien sur Internet
Les images
  • Chercher une image et l'inserer dans un userform
    Le lien sur le forum XLD
    Le fichier zippé
  • Afficher dans un USF l'image ( format JPG) d'une plage de cellules
    Le lien sur le forum XLD
  • Verifier qu'une image existe avant de l'afficher dans l'USF
    (Si le fichier n'existe pas l'objet Image1 reste vide )
    Fichier = thisWorkbook.Path & "\" & leNom & ".jpg"
    If Dir(Fichier) <> "" Then
    Image1.Picture = loadPicture(Fichier) 'si le fichier image existe
    Else
    Image1.Picture = loadPicture("")'si le fichier image n'existe pas
    End If
  • Comment visualiser une image animée (.gif) dans un userform
    tu dois prealablement insérer l'objet webBrowser dans l'userForm
    Si cet objet n'apparaît pas par defaut dans la boite à outils :
    clic droit dans la boite à outils
    controles supplémentaires
    coches la ligne Microsoft Navigateur Web
    cliques que OK pour valider
    ensuite tu inseres cette macro dans l'USF
    Private Sub userForm_Initialize()
    webBrowser1.Navigate "C:\monImage.gif"
    End Sub
  • Coller l'image d'une plage de cellules dans la propriété Picture d'un Objet .
    Sélectionnez une plage de cellules dans la feuille de calcul
    Ctrl + C pour copier la plage
    Sélectionnez la propriété "Picture" du userForm ( ou d'un autre objet : commandButton , Image ...)
    Ctrl+V pour effectuer le collage
  • Utilisez des Scrollbars pour vous déplacer dans une image dont la taille est superieure à celle de l'objet
    Lorsque vous utilisez l'objet Image , vous pouvez uniquement visualiser le résultat en mode Stretch , Zoom ou Clip .
    Pour visualiser un fichier à sa taille réelle et avoir la possibilité de s'y déplacer meme si sa dimension est superieure à celle de l'objet , insérez l'objet Image dans un Frame puis utilisez la macro ci dessous :
    Private Sub userForm_Initialize()
    Image1.autoSize = True
    Image1.Picture = loadPicture("C:\Documents and Settings\michel\dossier\monImage.jpg")
    With Me.Frame1
    .scrollBars = fmScrollBarsBoth
    .scrollHeight = Image1.Height
    .scrollWidth = Image1.Width
    End With
    End Sub

Les Userforms
  • Débuter avec les Userforms
    Le fichier zippé
    Un autre exemple
    Le fichier zippé
  • Afficher un userform non modal ( la feuille de calcul reste accessible ) pour les versions Excel ulterieures à 97
    userForm1.Show 0
    Il est aussi possible d'écrire :
    userForm1.Show False
    ou
    userForm1.Show vbModeless
  • Un userform non modal pour Excel 97 ( solution de Stephen Bullen )
    Le lien sur le forum XLD
    Le fichier zippé
  • Imprimer un USF sans la couleur de fond
    Private Sub commandButton1_Click()
    Dim Couleur As String
    Application.screenUpdating = False
    Couleur = Me.backColor
    Me.backColor = &H80000009
    Me.printForm
    Me.backColor = Couleur
    Application.screenUpdating = True
    End Sub
  • Afficher un USF en pleine page
    Private Sub userForm_Activate()
    With Me
    .startUpPosition = 3
    .Width = Application.Width
    .Height = Application.Height
    .Left = 0
    .Top = 0
    End With
    End Sub
  • Affichage temporaire d'un userform
    Private Sub userForm_Activate()
    Application.Wait Now + timeValue("00:00:10")'10 secondes
    Unload userForm1
    End Sub
  • Désactiver la fermeture d'un USF par la croix
    ATTENTION : pensez à créer un bouton de sortie pour ne pas bloquer l'application
    Private Sub userForm_queryClose(Cancel As Integer, closeMode As Integer)
    If closeMode = 0 Then Cancel = True
    End Sub
  • Masquer la boite de dialogue sans la décharger
    userForm1.Hide
  • Fermer la boite de dialogue
    Unload userForm1
    Si la procédure de fermeture est placée dans l'Userform , il est aussi possible d'écrire :
    Unload Me
  • Fermer tous les USF ouverts en une seule fois
    Private Sub Commandbutton1_Click()
    End
    End Sub
  • Pour définir les valeurs des objets lors de l'ouverture d'un Userform : utiliser l'évènement Initialize
    Exemple :
    Private Sub Userform_Initialize()
    Checkbox1 = False
    Checkbox2 = True
    Textbox1 = "Le forum XLD"
    Textbox2 = Range("A1")
    End Sub
  • Personnaliser l'affichage des Userforms
    Personnaliser la forme de l'USF
    Le lien sur le forum XLD
    Le fichier zippé
    Animer les Userforms lors de l'affichage
    Le fichier zippé
  • Boucler sur l'ensemble des Userform du classeur
    Le lien sur le forum XLD
  • Un autre exemple pour lister le nom des USF du classeur
    Sub listeUserForms()
    'necessite d'activer la reference Visual basic For Application Extensibility 5.3
    Dim VBCmp As VBComponent
    For Each VBCmp In thisWorkbook.VBProject.VBComponents
    If VBCmp.Type = 3 Then msgBox VBCmp.Name
    Next VBCmp
    End Sub
  • Afficher un USF en haut et dans le coin droit de l'écran
    Private Sub userForm_Initialize()
    With userForm1
    .startUpPosition = 3
    .Left = Application.Width - Me.Width
    End With
    End Sub
  • Afficher un USF en haut et dans le coin gauche de l'écran
    Private Sub userForm_Initialize()
    Me.startUpPosition = 3
    End Sub
  • Actions de temporisation dans un Userform
    Le lien sur le forum XLD
    Le fichier zippé
  • L'impression d'un USF , centrée dans la feuille
    Le lien sur le forum XLD
  • Imprimer plusieurs USF dans une meme feuille
    Le lien sur le forum XLD
    Le fichier zippé
  • Imprimer un Userform en mode paysage
    Le lien sur le forum XLD
  • Copier l'image d'un Userform dans la feuille active
    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
  • Choisir parmi plusieurs USF avant de l'afficher
    Sub choixUSF()
    Dim i As Byte
    i = ComboBox1.Value
    VBA.userForms.Add("userForm" & i).Show
    End Sub
  • Afficher une image .PNG dans un userForm
    Le fichier zippé
  • Des menus flottants dans un Userform : une démo de Ludo
    Le lien sur le forum XLD
    Le fichier zippé
  • Réafficher un userform apres une prévisualisation d'impression.
    Private Sub commandButton1_Click()
    Me.Hide
    Feuil1.printPreview
    Me.Show
    End Sub
  • D'autres informations sur les userForm
    Le lien sur Internet
Les Webbrowser
  • La documentation générale sur les webBrowser
    Le lien vers l'aide MSDN
  • Afficher un message quand une page est totalement chargée
    Le lien sur le forum XLD
    Le fichier zippé
  • Un message défilant dans le Webbrowser , avec une option pour changer la couleur et le texte
    Le fichier zippé
  • Un message défilant dans le Webbrowser ,à partir de données saisies dans une cellule( une adaptation par Bernard )
    Le lien sur le forum XLD
    Le fichier zippé
  • Un texte clignotant dans un webBrowser , avec une option pour changer la couleur et le texte
    Le lien sur le forum XLD
    Le fichier zippé
    Il est possible d'adapter la procédure du classeur pour afficher le texte sur plusieurs lignes :
    Comme il s'agit d'un webBrowser , il faut ecrire en Html (c'est < BR > qui te permet d'alller à la ligne) :
    Private Sub userForm_Initialize()
    leTexte = "Bonjour
    Le forum XLD "
    laCouleur = "#000099"
    parametresHtml
    webBrowser1.Navigate thisWorkbook.Path & "\Clignote.html"
    End Sub
  • Préciser la couleur de fond , le type de police et la taille d'un texte dans un Webbrowser
    Le lien sur le forum XLD
  • Afficher la source Html d'un Webbrowser
    'renvoie une erreur si le Webbrower est vide
    Private Sub commandButton1_Click()
    Dim Cible As String
    Cible = webBrowser1.Document.Body.innerHTML
    msgBox Cible
    End Sub
  • Quelques actions sur les Webbrowser
    Changer le texte dans un bouton , puis appliquer le focus sur ce bouton
    Afficher des informations générales sur une page html : la date de la création de la page , la 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é
  • Une excellente démo de Didier ,myDearFriend pour piloter des pages internet depuis un webBrowser
    voir la partie FindIT dans le classeur
    Le fichier dans la zone de téléchargement XLD
  • Lister les liens hypertextes d'une page , sans les doublons
    Private Sub commandButton1_Click()
    Dim i As Integer, X As Integer
    Dim Resultat As String
    For i = 0 To webBrowser1.document.links.Length - 1
    If inStr(Resultat, webBrowser1.document.links.Item(i)) = 0 Then 'controle des doublons
    Resultat = Resultat & webBrowser1.document.links.Item(i) & vbLf
    X = X + 1
    Cells(X, 1) = webBrowser1.document.links.Item(i)
    End If
    Next
    End Sub
  • Utiliser une barre de progression pendant le chargement d'une page
    Private Sub webBrowser1_progressChange(byVal Progress As Long, byVal progressMax As Long)
    On Error Resume Next
    If Progress = -1 Then progressBar1.Value = 100
    If Progress > 0 And progressMax > 0 Then
    progressBar1.Value = Progress * 100 / progressMax
    End If
    End Sub
  • Lorsque le curseur de la souris passe sur un lien dans une page , l'URL s'affiche dans un Label (Label1) de l'USF
    Private Sub webBrowser1_statusTextChange(byVal Text As String)
    Label1 = Text
    End Sub
  • Gérer une base de données d'images et les fiches d'informations associées
    L'exemple permet de visualiser en une fois dans le Webbrowser toutes les images du répertoire
    Le lien sur le forum XLD
    Le fichier zippé
    Une adaptation doit etre apportée s'il y a une apostrophe dans le nom du fichier image
    S = Application.worksheetFunction.Substitute(S, "'", "&#039")
    Le lien sur le forum XLD
  • Récupérer l'adresse d'un popup
    URL permet de recuperer le chemin des nouvelles fenetres créées
    Dim withEvents cible As SHDocVw.webBrowser_V1
    Private Sub cible_newWindow(byVal URL As String, _
    byVal Flags As Long, byVal targetFrameName As String, _
    postData As Variant, byVal Headers As String, Processed As Boolean)
    Label1.Caption = URL
    End Sub
    Private Sub commandButton_Click()
    Set cible = webBrowser1
    webBrowser1.Navigate2 "http://www.ebay.fr/"
    End Sub
  • Conserver l'affichage dans le Webbrowser , lors des clics sur les liens de la page Web
    Dim withEvents cible As SHDocVw.webBrowser_V1
    Private Sub cible_newWindow(byVal URL As String, _
    byVal Flags As Long, byVal targetFrameName As String, _
    postData As Variant, byVal Headers As String, Processed As Boolean)
    Processed = True
    webBrowser1.Navigate URL
    End Sub
    Private Sub userForm_Initialize()
    'source : http://www.kbalertz.com/kb_185538.aspx
    Set cible = webBrowser1
    webBrowser1.Navigate2 "http://www.oooforum.org/forum/viewforum.php?f=9"
    End Sub
  • Empecher l'affichage des Popups ( et des nouvelles fenetres IE )
    Private Sub webBrowser1_newWindow2(ppDisp As Object, Cancel As Boolean)
    Cancel = True
    End Sub
  • Effectuer une copie d'écran de la partie visible d'un Webbrowser et coller l'image dans un document Word
    Le lien sur le forum XLD
    Le fichier zippé
  • Afficher un message dans le Webbrowser , si la fenetre IE renvoie une erreur de connection
    (voir le message du 26/07/2005 13:40)
    Le lien sur le forum XLD
  • Afficher une page blanche dans le Webbrowser
    webBrowser1.Navigate "about:blank"
  • Modifier la couleur de fond d'un Webbrowser
    Private Sub userForm_Activate()
    'Remarque : l'equivalence de couleur RGB en VBA est BGR en HTML
    webBrowser1.Document.bgColor = RGB(205, 100, 0)
    End Sub
  • Ne pas afficher la Scrollbar du Webbrowser
    Private Sub webBrowser1_documentComplete(byVal pDisp As Object, URL As Variant)
    webBrowser1.Document.body.Scroll = "no"
    End Sub
  • Intercepter l'evenement clic dans un Webbrowser
    Option Explicit
    'necessite d'activer la reference Microsoft Html Object Library
    Dim withEvents maPageHtml As HTMLDocument
    Private Sub userForm_Initialize()
    webBrowser1.Navigate "http://www.excel-downloads.com/"
    End Sub
    Private Sub webBrowser1_documentComplete(byVal pDisp As Object, URL As Variant)
    Set maPageHtml = webBrowser1.Document
    End Sub
    Private Function maPageHtml_onClick() As Boolean
    msgBox "test"
    End Function
    Private Sub webBrowser1_beforeNavigate2(byVal pDisp As Object, _
    URL As Variant, Flags As Variant, targetFrameName As Variant, _
    postData As Variant, Headers As Variant, Cancel As Boolean)
    Set maPageHtml = Nothing
    End Sub
  • Détecter l'evenement clic sur un bouton type 'input" dans un webBrowser
    Option Explicit
    'necessite d'activer la reference Microsoft Html Object Library
    Dim withEvents Bouton As HTMLInputElement
    Dim Htm As HTMLDocument
    Private Sub userForm_Initialize()
    webBrowser1.Navigate "C:\Documents and Settings\michel\dossier\monFormulaire.html"
    End Sub
    Private Sub webBrowser1_documentComplete(byVal pDisp As Object, URL As Variant)
    Set Htm = webBrowser1.Document
    'pour cet exemple le bouton est le 2eme objet "input" de la page... Item(1)
    Set Bouton = Htm.getElementsByTagName("input").Item(1)
    End Sub
    Private Function Bouton_onclick() As Boolean
    msgBox "Vous avec cliqué sur le bouton " & Bouton.Value
    'pour cet exemple le champ formulaire est le 1er objet "input" de la page...Item(0)
    Debug.Print Htm.getElementsByTagName("input").Item(0).Value
    Bouton_onclick = True
    End Function
    Private Sub webBrowser1_beforeNavigate2(byVal pDisp As Object, _
    URL As Variant, Flags As Variant, targetFrameName As Variant, _
    postData As Variant, Headers As Variant, Cancel As Boolean)
    Set Bouton = Nothing
    Set Htm = Nothing
    End Sub
  • Lister tous les éléments d'un menu déroulant , contenu dans une page HTML
    Exemple pour lister tous les auteurs du forum XLD 2eme génération
    Private Sub commandButton1_Click()
    'Necessite d'activer la reference Microsoft HTML Object Library
    Dim maPageHtml As HTMLDocument
    Dim Hsel As IHTMLElementCollection
    Dim Hcible As IHTMLSelectElement
    Dim i As Integer
    webBrowser1.Navigate "http://www.excel-downloads.com/forums/index.htm"
    Do
    doEvents
    Loop While webBrowser1.Busy
    Set maPageHtml = webBrowser1.Document
    Set Hsel = maPageHtml.getElementsByTagName("select")
    Set Hcible = Hsel(0) 'action sur le 1er menu deroulant dans la page html
    For i = 1 To Hcible.Length - 1 'boucle sur tous les element du menu déroulant
    Cells(i, 1) = Hcible.Item(i).Value
    Next
    End Sub
  • Vérifier si un texte existe dans une page Html
    Private Sub commandButton3_Click()
    Dim maPageHtml As HTMLDocument
    Dim textePage As String
    webBrowser1.navigate "http://www.excel-downloads.com"
    Do
    doEvents
    Loop While webBrowser1.Busy 'attend la fin du chargement pour continuer la procedure
    Set maPageHtml = webBrowser1.document
    textePage = maPageHtml.documentElement.innerText
    If inStr(1, textePage, "Wiki") > 0 Then
    msgBox "trouvé"
    Else
    msgBox "pas trouvé"
    End If
    End Sub
  • Adapter l'image affichée à la taille du Webbrowser
    Le lien sur le forum XLD
    L'exemple zippé
  • Afficher un document Word dans un Webbrowser
    Le lien sur le forum XLD
  • Récupérer le texte selectionné dans le Webbrowser
    Private Sub commandButton1_Click()
    Dim Doc As HTMLDocument
    Dim txtRange As IHTMLTxtRange
    Set Doc = webBrowser1.Document
    Set txtRange = Doc.Selection.createRange
    msgBox txtRange.Text
    End Sub
  • Supprimer le texte sélectionné dans le webBrowser
    Private Sub commandButton1_Click()
    Dim Doc As HTMLDocument
    Set Doc = webBrowser1.Document
    Doc.Selection.Clear
    End Sub
  • Lister les fonctions javascript contenues dans la page affichée
    Dim maPageHtml As HTMLDocument
    Dim i As Integer
    Set maPageHtml = webBrowser1.Document
    For i = 0 To maPageHtml.Scripts.Length - 1
    Debug.Print maPageHtml.Scripts(i).src
    Debug.Print "-------"
    Debug.Print maPageHtml.Scripts(i).Text
    Debug.Print "-------"
    Next i
  • Déclencher une fonction javascript contenue dans le Webbrowser
    Dim maPageHtml As HTMLDocument
    Set maPageHtml = webBrowser1.Document
    maPageHtml.parentWindow.execScript "window.print()", "Javascript"
    'D'autres exemples :
    'maPageHtml.parentWindow.execScript "alert(navigator.appName + '/' + navigator.appVersion)", "Javascript"
    'maPageHtml.parentWindow.execScript "alert('Bonjour le forum XLD')", "Javascript"
    'maPageHtml.parentWindow.execScript "maFonctionjavaScript();", "Javascript"
    'maPageHtml.parentWindow.execScript "maFonctionjavaScript('argument');", "Javascript"
  • boucler sur frames pour en récupérer les sources
    Dim Frms As Object
    Dim i As Integer
    Set Frms = webBrowser1.Document.frames
    For i = 0 To Frms.Length - 1
    Debug.Print webBrowser1.Document.frames(i).Document.all.Item.i nnerHTML
    Next
  • Piloter les Radio Buttons contenus dans une page Html.
    Visualiser la macro
  • Comment créer une page dynamiquement dans un webBrowser, y ajouter et déclencher une fonction Javascript
    Visualiser la macro

Les calendriers
Les Progressbar
Les Spreadsheet
  • Le complément Microsoft Office Web Components (Composants Web) est une collection de contrôles pour modèles d'objets composants (Component Object Model ou COM) permettant de publier sur le Web des feuilles de calcul, des graphiques , des pivotTables et des bases de données.
    http://www.microsoft.com/downloads/details.aspx?displaylang=fr&FamilyID=7287252C-402E-4F72-97A5-E0FD290D4B76
    http://www.microsoft.com/downloads/details.aspx?FamilyID=982b0359-0a86-4fb2-a7ee-5f3a499515dd&displaylang=en#affinity
    Remarque : chaque version d'OWC correspond à une version d'office et n'est pas compatible avec les autres.
    Office2000 : OWC9
    OfficeXP : OWC10
    Office2003 : OWC11
  • Exporter un spreadsheet dans un nouveau classeur Excel
    Me.spreadsheet1.activeSheet.Export ("C:\monFichier.xls")
  • Sélectionner la 3eme ligne dans le spreadSheet
    Me.spreadsheet1.activeSheet.Rows(3).Select
  • L'evenement selection de cellules dans un spreadSheet
    Une démo de Zon
    Le lien sur le forum XLD
    Le fichier zippé
  • Imprimer le contenu d'un Spreadsheet
    Le lien sur le forum XLD
    Le fichier zippé
  • Insérer une date dans la cellule B2 d'un Spreadsheet , et personnaliser le format
    With Spreadsheet1.activeSheet.Range("B2")
    .Interior.Color = "yellow"
    .Value = Format(Date, "dd mmmm yyyy")
    End With
  • Définir la police et le format des cellules
    With Me.Spreadsheet1.Cells.Font
    .Bold = True
    .Color = "blue"
    .Italic = True
    .Name = "Arial"
    .Size = 14
    .Underline = True
    End With
  • Récupérer les données d'un spreadSheet (exemple la plage de cellules A1:A50) pour alimenter une Listbox
    Dim i As Byte
    For i = 1 To 50
    listBox1.addItem Me.Spreadsheet1.Cells(i, 1)
    Next
  • Creer un lien hypertexte dans la cellule A3 d'un Spreadsheet
    With Me.Spreadsheet1.activeSheet.Range("A3")
    .Hyperlink.Address = "#Spreadsheet1!E5"
    .Value = "mon lien"
    End With
  • Transférer les données d'une plage de cellules dans une variable Tableau
    Option Base 1
    Private Sub commandButton1_Click()
    Dim Valeur(5, 2)
    Dim i As Integer, j As Integer
    For i = 1 To 5
    For j = 1 To 2
    Valeur(i, j) = Me.Spreadsheet1.Cells(i, j).Value
    Next j
    Next i
    End Sub
  • Figer les volets dans un spreadSheet
    Dim C
    Private Sub userForm_Initialize()
    Set C = spreadsheet1.Constants
    Me.spreadsheet1.Cells(3, 5).freezePanes C.ssFreezeLeft
    Me.spreadsheet1.Cells(2, 2).freezePanes C.ssFreezeTop
    End Sub
  • Modifier la dimension des cellules
    Private Sub userForm_Initialize()
    Me.Spreadsheet1.Cells.columnWidth = 100
    Me.Spreadsheet1.Cells.rowHeight = 25
    End Sub
  • Utiliser un tableau pour remplir un Spreadsheet
    Option Explicit
    Option Base 1
    Private Sub commandButton1_Click()
    Dim x As Integer
    Dim Adresse As String
    Dim i As Integer
    Dim Tableau() As Integer
    ' --- Exemple simple pour remplir un tableau ----
    'Définit le nombre de lignes dans le tableau
    x = 15
    reDim Tableau(x)
    For i = 1 To x
    Tableau(i) = 5 * i
    Next i
    '-------------------------------------------------
    Adresse = "A1:A" & UBound(Tableau)
    Spreadsheet1.activeSheet.Range(Adresse) = Application.worksheetFunction.Transpose(Tableau)
    End Sub

Les Chartspaces
  • Le complément Microsoft Office Web Components (Composants Web) est une collection de contrôles pour modèles d'objets composants (Component Object Model ou COM) permettant de publier sur le Web des feuilles de calcul, des graphiques , des pivotTables et des bases de données.
    http://www.microsoft.com/downloads/details.aspx?displaylang=fr&FamilyID=7287252C-402E-4F72-97A5-E0FD290D4B76
    http://www.microsoft.com/downloads/details.aspx?FamilyID=982b0359-0a86-4fb2-a7ee-5f3a499515dd&displaylang=en#affinity
    Remarque : chaque version d'OWC correspond à une version d'office et n'est pas compatible avec les autres.
    Office2000 : OWC9
    OfficeXP : OWC10
    Office2003 : OWC11
  • Utiliser les chartSpaces pour insérer des graphiques dans un Userform
    Une demo de Zon :
    Le lien sur le forum XLD
    Le fichier zippé
    Une démo de Myta :
    Le lien sur le forum XLD
    Le fichier zippé
  • Alimenter les points d'une courbe dans un chartSpace
    Option Base 1
    Private Sub userForm_Initialize()
    Dim Tableau(10), Plage(10)
    Dim Cht As OWC.WCChart
    Dim C
    Dim i As Byte
    For i = 1 To 10
    Plage(i) = Int((50 * Rnd) + 1) ' ordonnées
    Next i
    For i = 1 To 10
    Tableau(i) = i 'abscisses
    Next i
    Set C = chartSpace1.Constants
    Set Cht = chartSpace1.Charts.Add
    With Cht
    .Type = C.chChartTypeSmoothLineStacked
    .setData C.chDimCategories, C.chDataLiteral, Tableau
    .seriesCollection(0).setData C.chDimValues, C.chDataLiteral, Plage
    End With
    End Sub
  • Compter le nombre de graphiques et supprimer le premier
    If chartSpace1.Charts.Count > 0 Then chartSpace1.Charts.Delete 0
    'L'index du 1er graphique est 0 (chartSpace1.Charts.Delete 0 )
  • Supprimer la 2eme serie dans le premier graphique
    Me.chartSpace1.Charts(0).seriesCollection.Delete 1
    'L'index de la deuxieme série est 1 (seriesCollection.Delete 1 )
  • Choisir une ou plusieurs séries dans une listBox pour les afficher dans un userForm
    Le lien sur le forum XLD
    Le fichier zippé
    Un autre exemple qui affiche en plus les légendes des séries
    Le fichier zippé
  • Modifier la couleur de la 2eme série , dans le premier graphique
    Me.chartSpace1.Charts(0).seriesCollection(1).Inter ior.Color = RGB(125, 0, 250)
  • Supprimer toutes les séries dans le graphique chartSpace
    Dim Cht As OWC.WCChart
    Dim i As Integer
    Set Cht = chartSpace1.Charts(0)
    For i = Cht.seriesCollection.Count To 1 Step -1
    Cht.seriesCollection.Delete i - 1
    Next i
  • Afficher les valeurs d'une série (x) dans le graphique
    Cht .seriesCollection(x).dataLabelsCollection.Add
  • Afficher les valeurs cumulées au dessus d'un histogramme empilé
    Le lien sur le forum XLD
    Le fichier zippé
  • Exporter un chartSpace en image au format GIF
    Private Sub commandButton2_Click()
    Dim Gr As OWC.chartSpace
    Dim Largeur As Long, Hauteur As Long
    Largeur = 560
    Hauteur = 480
    Set Gr = Me.chartSpace1
    Gr.exportPicture "C:\grapheTemporaire.gif", "gif", Largeur, Hauteur
    End Sub
  • Imprimer un chartSpace
    Private Sub commandButton2_Click()
    Dim Gr As OWC.chartSpace
    Dim Largeur As Long, Hauteur As Long
    Dim Ws As Worksheet
    Dim nomImage As String
    nomImage = "C:\grapheTemporaire.gif"
    Largeur = 560
    Hauteur = 480
    Application.screenUpdating = False
    'export du chartSpace au format image Gif
    Set Gr = Me.chartSpace1
    Gr.exportPicture nomImage, "gif", Largeur, Hauteur
    'ajout d'une feuille dans le classeur , pour contenir l'image qui va etre imprimée
    Set Ws = Worksheets.Add
    Ws.Pictures.Insert(nomImage).Select
    Ws.printOut 'impression
    Application.displayAlerts = False
    Ws.Delete 'suppression feuille
    Application.displayAlerts = True
    Kill nomImage 'suppression image
    Application.screenUpdating = True
    End Sub
  • Afficher un titre dans le chartSpace
    With Cht
    .hasTitle = True
    .Title.Caption = "mon titre"
    .Title.Font.Color = RGB(255, 0, 255)
    .Title.Font.Underline = True
    .Title.Font.Bold = True
    .Title.Font.Size = 14
    .Title.Position = chTitlePositionTop
    End With
  • Ajouter un 2eme axe sur la droite du graphique , et le formater
    Cht.Axes.Add Cht.Scalings(chDimValues), chAxisPositionRight, chValueAxis
    With Cht.Axes(chAxisPositionRight)
    .Scaling.Maximum = 100
    .Scaling.Minimum = 0
    .numberFormat = "0.00"
    .majorUnit = 10
    End With

Les pivotTables
Les commonDialog
  • Afficher la boite de dialogue "Ouvrir" pour sélectionner un fichier et en récupérer le chemin et le nom
    Private Sub commandButton1_Click()
    commonDialog1.showOpen
    msgBox commonDialog1.Filename
    End Sub
  • Comment utiliser un commonDialog pour enregistrer un fichier sur le disque dur
    Private Sub commandButton1_Click()
    With commonDialog1
    .dialogTitle = "Enregistrer le fichier sous..."
    .cancelError = True
    .filterIndex = 1
    .initDir = "C:\"
    .Filename = "nomFichier.txt"
    On Error goTo Fin
    .showSave
    Open .Filename For Output As #1
    Print #1, "essai"
    Close #1
    End With
    msgBox "Enregistrement effectué " & CommonDialog1.Filename
    Fin:
    msgBox "Opération annulée"
    End Sub
  • Afficher la palette de couleur et renvoyer le code couleur sélectionné
    commonDialog1.showColor
    msgBox commonDialog1.Color 'valeur type Long
Les MSFlexGrid
  • Un exemple d'utilisation proposé par Hervé
    Le lien sur le forum XLD
    Le fichier zippé
  • Intégrer une image dans une cellule
    MSFlexGrid1.Row = 1
    MSFlexGrid1.Col = 1
    MSFlexGrid1.colWidth(1) = 700
    MSFlexGrid1.rowHeight(1) = 700
    Set MSFlexGrid1.cellPicture = loadPicture("C:\windows\slcplappl.ico")


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 MichelXld ; 08/03/2008 à 23h37.
MichelXld est déconnecté   Réponse avec citation
ANNONCES
Réponse

Liens sociaux