Accueil
Accueil Le Club Delphi Kylix C C++ Java J2EE DotNET & C# Visual Basic Access Pascal Dev Web PHP ASP XML UML SQLSGBD Windows Linux Autres
logo

precedent    sommaire    suivant   


Comment utiliser l'assistant formulaire dans Excel 2007 ?
auteur : SilkyRoad
Dans les versions antérieures d'Excel, l'assistant était accessible depuis le menu Données/Formulaire.

Dans Excel2007:
Cliquez sur le bouton "Office".
Bouton "Options Excel"
Menu "Personnaliser"
Sélectionnez "Toutes les commandes" dans le menu déroulant "Choisir les commandes dans les catégories ...".
Sélectionnez l'option "Formulaire" dans la liste.
Cliquez sur le bouton "Ajouter" pour que l'icône soit transféré dans la barre d'outils Accès rapide.
Cliquez sur le bouton OK pour valider.

Vous pouvrez désormais utiliser le formulaire de manière identique aux versions précédentes, depuis la barre d'outils Acces rapide.

Nota:
Passer la plage de cellules source sous forme de tableau permet d'éviter le message d'alerte "Microsoft Excel ne parvient pas à identifier la ligne de votre liste ou sélection ...".



Comment choisir un fichier sur le PC et récupérer son nom (utilisation de GetOpenFilename) ?
auteur : SilkyRoad
Utilisez la méthode GetOpenFilename pour visualiser l'arborescence des fichiers sur le PC, et renvoyer le nom sélectionné.
GetOpenFilename affiche la boîte de dialogue "Ouvrir" mais ne sert qu'à récupérer le nom du fichier choisi.

Vba

Sub ChoixFichier()
    'La variable est de type Variant car elle peut prendre les valeurs:
        'Booleenne: (Vrai/Faux) quand l'utilisateur ne sélectionne rien, ou annule l'opération.
        'String: pour renvoyer le nom du fichier sélectionné.
    Dim Fichier As Variant
    
    'Affiche la boîte de dialogue "Ouvrir"
    Fichier = Application.GetOpenFilename("Tous les fichiers (*.*),*.*")
    
    'On sort si aucun fichier n'a été sélectionné ou si l'utilisateur
    'a cliqué sur le bouton "Annuler", ou sur la croix de fermeture.
    If Fichier = False Then Exit Sub
    
    'Affiche le chemin et le nom du fichier sélectionné.
    MsgBox Fichier
    
End Sub



Dans ce premier exemple, Application.GetOpenFilename("Tous les fichiers (*.*),*.*") permet de sélectionner tout type de fichier présent sur le PC.
Pour restreindre le choix de l'utilisateur entre une ou plusieurs extensions particulières, utilisez:

Vba

    Fichier = Application.GetOpenFilename _
        ("Fichiers Images (*.jpg), *.jpg" & _
        ",Fichiers Images (*.gif), *.gif")



Pour visualiser uniquement deux types de fichiers en même temps, utilisez:

Vba

    Fichier = Application.GetOpenFilename _
        ("Fichiers Images (*.jpg; *.gif),*.jpg;*.gif")



Pour gérer la multi-sélection de fichiers depuis la boîte de dialogue "Ouvrir", utilisez:

Vba

Sub ChoixMultiFichiers()
    Dim Fichiers As Variant
    Dim i As Integer
    
    'Affiche la boîte dialogue "Ouvrir" en filtrant sur les classeurs Excel
    '(C'est l'argument True qui autorise la multi-sélection)
    Fichiers = Application.GetOpenFilename("Fichiers Excel (*.xls), *.xls", , , , True)
    
    'Boucle sur le tableau pour récupérer le nom du ou des classeurs sélectionnées.
    '(IsArray(Fichiers) renvoie False si aucun fichier n'a été sélectionné).
    If IsArray(Fichiers) Then
        For i = 1 To UBound(Fichiers)
            MsgBox Fichiers(i)
        Next
    End If
End Sub



Appuyez sur la touche clavier Ctrl en même temps que vous choisissez les fichiers, afin de créer une multi-sélection.

Vous remarquerez que dans cet exemple, la variable "Fichiers" est un tableau de type Variant.



Comment choisir un répertoire (utilisation de BrowseForFolder) ?
auteur : SilkyRoad
Vba

Sub ChoixRepertoire()
   Dim objShell As Object, objFolder As Object, oFolderItem As Object
    Dim Chemin As String
    
    Set objShell = CreateObject("Shell.Application")
    Set objFolder = objShell.BrowseForFolder(&H0&, "Choisir un répertoire", &H1&)
    
    On Error Resume Next
    Set oFolderItem = objFolder.Items.Item
    Chemin = oFolderItem.Path
    
    MsgBox Chemin
End Sub

Comment utiliser la boîte de dialogue FileDialog ?
auteurs : Zazaraignée, SilkyRoad
Depuis la version 2002, Excel met à disposition une nouvelle fenêtre multifonctions: FileDialog. En fonction de l'argument msoFileDialogType, vous pouvez sélectionner, ouvrir, enregistrer des fichiers ou sélectionner des répertoires sur votre poste:

msoFileDialogFilePicker: Sélection de fichier.
msoFileDialogFolderPicker: Sélection de dossier.
msoFileDialogOpen: Ouverture de fichier.
msoFileDialogSaveAs: Enregistrement de fichier.


Un exemple pour sélectionner un ou plusieurs fichiers:

Vba

Sub Utilisation_FileDialog_SelectionFichier()
    Dim x As Long
    
    With Application.FileDialog(msoFileDialogFilePicker)
        'Définit un titre pour la boîte de dialogue
        .Title = "Le tite de la fenêtre:"
        'Autorise la multi-sélection
        .AllowMultiSelect = True
        
        'Définit un nom de fichier par défaut
        '.InitialFileName = "Nom document.doc"
        
        'Efface les filtres existants.
        .Filters.Clear
        'Définit une liste de filtres pour le champ "Type de fichiers".
        .Filters.Add "Classeurs Excel", "*.xls; *.xlsx; *.xlsm"
        'La valeur 1 permet de spécifier que ce filtre est positionner en premier dans la liste de choix.
        .Filters.Add "Documents Word", "*.doc; *.docx; *.docm", 1
        'Définit le filtre qui s'affiche par défaut dans le champ "Type de fichiers".
        .FilterIndex = 2
        
        'Indique le type d'affichage dans la boîte de dialogue (exemple visualisation des propriétés)
        .InitialView = msoFileDialogViewProperties
        'Affiche la boîte de dialogue
        .Show
    
        'Boucle sur les fichiers sélectionnés
        For x = 1 To .SelectedItems.Count
            MsgBox .SelectedItems(x)
        Next x
    
    End With

End Sub



Pour sélectionner un dossier:

Vba

Sub Utilisation_FileDialog_SelectionDossier()
    Dim x As Long
    
    With Application.FileDialog(msoFileDialogFolderPicker)
        'Définit un titre pour la boîte de dialogue
        .Title = "Le tite de la fenêtre:"
        'Affiche la boîte de dialogue
        .Show
        
        'Affiche le nom du dossier sélectionné
        If .SelectedItems.Count > 0 Then
            MsgBox .SelectedItems(1)
        End If
    
    End With
End Sub



Pour afficher la boîte de dialogue "Sauvegarder":

Vba

Sub Utilisation_FileDialog_Sauvegarde()
    Dim objSaveBox As FileDialog
    
    'Définit la fenêtre "Enregistrer sous"
    Set objSaveBox = Application.FileDialog(msoFileDialogSaveAs)
    
    With objSaveBox
        'Définit un nom par défaut dans le champ "Nom de fichier".
        .InitialFileName = "Nom fichier.xls"
        
        'Définit le type de fichier par défaut:
        '(la valeur 4 Permet de spécifier les classeurs "Excel 97-2003" lorsque vous êtes dans Excel 2007)
        .FilterIndex = 4
        
        'Affiche la boîte de dialogue
        .Show
        'Enregistre
        .Execute
    End With
    
End Sub



Pour afficher la boîte de dialogue "Ouvrir":

Vba

Sub Utilisation_FileDialog_Ouvrir()
    Dim objOuvrir As FileDialog
    Dim objFichiers As FileDialogSelectedItems
    Dim x As Long
    Dim Wb As Workbook
    
    'Affiche la fenêtre "Ouvrir"
    With Application.FileDialog(msoFileDialogOpen)
        .InitialFileName = ""
        'Efface les filtres existants.
        .Filters.Clear
        'Définit une liste de filtres pour le champ "Type de fichiers".
        .Filters.Add "Classeurs Excel", "*.xls; *.xlsx; *.xlsm"
        'Indique le type d'affichage dans la boîte de dialogue
        .InitialView = msoFileDialogViewDetails
        .Show
    End With
        
    'Définit le ou les fichiers à ouvrir
    Set objFichiers = Application.FileDialog(msoFileDialogOpen).SelectedItems
        
    'On sort si aucun fichier n'a été sélectionné
    If objFichiers.Count = 0 Then Exit Sub
        
        
    Application.ScreenUpdating = False
    
    'Boucle sur le ou les fichiers Excel sélectionnés pour les ouvrir
    For x = 1 To objFichiers.Count
        Set Wb = Workbooks.Open(objFichiers(x))
        '
        'traitement
        '
        'Referme le classeur sans enregistrer les modifications.
        Wb.Close False
    Next

    Application.ScreenUpdating = True

End Sub

Quelles différences entre FindFile et GetOpenFilename ?
auteur : Bidou
Principalement FindFile ouvre le fichier alors que GetOpenFilename renvoie le nom du fichier sélectionné.
Cependant GetOpenFilename permet d'utiliser un filtrage ce que ne permet pas la méthode FindFile.

Par exemple:
Vba
 
NomFichier = Application.GetOpenFilename("Classeurs Excel(*.xls),*.xls, Macros complémentaires (*.xla),*.xla")

Il y a une plus grande sécurité à utiliser la méthode GetOpenFilename.



Comment utiliser les MsgBox ?
auteur : SilkyRoad
La fonction MsgBox permet d'afficher un message à l'écran. La boîte de dialogue reste à l'écran et bloque la procédure en cours, tant que l'utilisateur n'a pas cliqué sur un bouton.

La syntaxe et les arguments sont:
MsgBox(prompt[, buttons] [, title] [, helpfile, context])


prompt
Indique le message à afficher.

Vba

MsgBox "Bonjour!"



buttons
Définit le type et l'ordre des boutons à afficher, le style d'icône.

Vba

MsgBox "Bonjour!", vbExclamation


Un ensemble de constantes est disponible pour gérer les différents boutons et icônes:


Constante Valeur Description
vbOKOnly 0 Affiche le bouton OK uniquement
vbOKCancel 1 Affiche les boutons OK et Annuler
vbAbortRetryIgnore 2 Affiche le bouton Abandonner, Réessayer et Ignorer
vbYesNoCancel 3 Affiche les boutons Oui, Non et Annuler
vbYesNo 4 Affiche les boutons Oui et Non
vbRetryCancel 5 Affiche les boutons Réessayer et Annuler
vbCritical 16 Affiche l'icône Message critique
vbQuestion 32 Affiche l'icône Requête d'avertissement
vbExclamation 48 Affiche l'icône Message d'avertissement
vbInformation 64 Affiche l'icône Message d'information
vbDefaultButton1 0 Le premier bouton est le bouton par défaut
vbDefaultButton2 256 Le deuxième bouton est le bouton par défaut
vbDefaultButton3 512 Le troisième bouton est le bouton par défaut
vbDefaultButton4 768 Le quatrième bouton est le bouton par défaut
vbApplicationModal 0 Boîte de dialogue modale
vbSystemModal 4096 Modal système
vbMsgBoxHelpButton 16384 Ajoute le bouton Aide à la zone de message
VbMsgBoxSetForeground 65536 Indique la fenêtre de zone de message comme fenêtre de premier plan
vbMsgBoxRight 524288 Le teste est aligné à droite
vbMsgBoxRtlReading 1048576 Indique que le texte doit apparaître de droite à gauche sur les systèmes hébraïques et arabes


Lorsque vous cliquez sur les boutons, des valeurs sont renvoyées et peuvent être utilisées dans la suite de votre projet.
Un exemple qui pose une question à l'utilisateur. Celui ci doit répondre par oui ou par non:

Vba

Dim Reponse As Long

Reponse = MsgBox("Voulez vous continuer ?", vbQuestion + vbYesNo)
If Reponse = vbYes Then
    MsgBox "On continue ...", vbExclamation
    Else
    MsgBox "Au revoir ...", vbInformation
End If



Ci-dessous les valeurs renvoyées, en fonctions des types de boutons et du choix de l'utilisateur:


Constante Valeur Description
vbOK 1 OK
vbCancel 2 Annuler
vbAbort 3 Abandonner
vbRetry 4 Réessayer
vbIgnore 5 Ignorer
vbYes 6 Oui
vbNo 7 Non



title
Indique un titre dans la boîte de dialogue.

Vba

MsgBox "Bonjour " & Environ("username"), vbInformation, "Accueil"



helpfile
Définit le chemin d'accès complet à un fichier d'aide. Cet argument est associé avec l'argument context.


context
définit l'identificateur de rubrique du fichier d'aide qui a été indiqué dans l'argument helpfile.

Vba

Dim Msg As String
Dim Cellule As Range

On Error Resume Next
'Va provoquer une erreur 'définie par l'application ou par l'objet' car
'Cells(0, 1) ne peut pas exister.
Set Cellule = Cells(0, 1)

'MsgBox Err.HelpContext

Msg = "Cliquez sur le bouton AIDE pour consulter la rubrique relative à cette erreur."
MsgBox Msg, vbMsgBoxHelpButton, "Erreur", Err.HelpFile, Err.HelpContext


Vous pouvez aussi spécifier des fichiers d'aide personnels. Pour plus d'infos, consultez le tutoriel pour gérer les erreurs.



Il ne vous reste plus qu'à faire des essais et tester toutes les options disponibles dans l'application.


Quelques exemples supplémentaires.
Afficher le message sur plusieurs lignes:

Vba

MsgBox "Bonjour " & Environ("username") & _
            vbCrLf & vbCrLf & _
            "Nous sommes le " & Date, _
            vbCritical, "Accueil"



Utilisation de l'énumération VbMsgBoxStyle:

Vba

Dim Reponse As Long
Dim cstMsgBox As VbMsgBoxStyle

cstMsgBox = vbYesNo + vbDefaultButton2
Reponse = MsgBox("Bonjour", cstMsgBox)

If Reponse = vbYes Then MsgBox "Oui"



Nota:
Il semblerait que les arguments context et helpfile ne soient plus utilisables dans Excel2007.
En attendant un futur pack de mise à jour, vous pouvez utiliser d'autres méthodes proposées dans ce lien:
Comment ouvrir des fichiers d'aide personnels .chm ?



Quelle est la différence entre InputBox et Application.InputBox ?
auteur : SilkyRoad
Il existe deux utilisations possibles pour InputBox: La fonction et la méthode.


La fonction InputBox affiche une boîte de dialogue permettant à l'utilisateur de saisir un texte. La fonction renvoie l'information en donnée de type String, lorsque vous cliquez sur le bouton OK. Si l'utilisateur clique sur le bouton Annuler ou sur la croix de fermeture, une chaîne vide est renvoyée.

La syntaxe est:
InputBox(prompt[, title] [, default] [, xpos] [, ypos] [, helpfile, context])

prompt
Définit la description dans la boite de dialogue (comme pour les MsgBox, il est possible d'aller à la ligne dans le texte).

title
Définit un titre facultatif pour la boîte de dialogue.

default
Définit la donnée facultative qui s'affiche par défaut dans le champ de saisie.

xpos et ypos
Définissent la position (en twips) de la boîte de dialogue à l'écran.
1 twips = 1/1440 pouces
xpos définit la position horizontale.
ypos définit la position verticale.
si xpos et ypos sont omis, la boite de dialogue s'affiche au milieu de l'écran.

helpfile
Définit le chemin et le nom du fichier d'aide qui peut être associé à la boîte de dialogue. Si vous utilisez helfile, l'argument context doit aussi être précisé.

context
Définit le numéro de la rubrique dans le fichier d'aide.
Le bouton d'aide apparait dans la fenêtre uniquement si les 2 arguments helpfile et context sont spécifiés.


Un exemple:

Vba

Sub Test_V01()
    Dim Valeur As String
    
    Valeur = InputBox("Saisissez votre prénom:", _
        "Le titre", "Donnée par défaut.", 100, 400)
    
    MsgBox Valeur
End Sub




La méthode InputBox est précédée de l'objet Application.
Elle aussi affiche une boîte de dialogue pour saisir des données mais se différencie de la fonction par:
* La position de la boîte de dialogue qui est exprimée en points.
* L'argument Type, qui permet plus d'options dans le champ de saisie, et pas uniquement des données de type String comme dans la fonction.

La syntaxe est:
Application.InputBox(Prompt, Title, Default, Left, Top, HelpFile, HelpContextId, Type)

prompt
Définit la description dans la boite de dialogue.

title
Définit un titre facultatif pour la boîte de dialogue.

default
Définit la donnée facultative qui s'affiche par défaut dans le champ de saisie.

Left et Top
Définissent la position (en points) de la boîte de dialogue à l'écran.
Un point = 1/72 de pouce.
Left définit la position horizontale.
Top définit la position verticale.

HelpFile
Définit le chemin et le nom du fichier d'aide qui peut être associé à la boîte de dialogue.

HelpContextId
Définit le numéro de la rubrique dans le fichier d'aide.

Type
Spécifie le type des données renvoyées. Si vous ne spécifiez pas cet argument, la boîte de dialogue renvoie du texte.

L'argument Type peut avoir une ou la somme des valeurs suivantes.


Valeur Type de donnée
0 Formule
1 Nombre
2 Texte
4 Valeur logique (True ou False)
8 Référence de cellule (objet Range)
16 Valeur d'erreur
64 Tableau de valeurs



Un exemple qui permet de sélectionner une plage de cellules:

Vba

Sub Test_V02()
    Dim Plage As Range
    
    set Plage = Application.InputBox("Sélectionnez une plage de cellule", _
        "Le titre", , , , "C:\dossier\FichierAide.hlp", 100, Type:=8)
    
    MsgBox Plage.Address
End Sub



L'exemple suivant limite la saisie à des données numériques (utilisation de Type:=1):

Vba

Sub Test_V03()
    Dim Valeur As Single
    
    'Type:=1 définit un type de donnée numérique
    Valeur = Application.InputBox("Saisissez une valeur", Type:=1)
    If Valeur = 0 Then Exit Sub

    'On multiplie la saisie par 5
    MsgBox Valeur * 5
End Sub



Vous pouvez aussi gérer l'utilisation du bouton "Annuler" et la croix de fermeture. Utilisez une variable type Variant. Celle ci prend la valeur False si un des deux boutons est cliqué.

Vba

Sub Test_V04()
    Dim Donnee As Variant
    
    Donnee = Application.InputBox("Saisissez une valeur:", "Le titre")
    
   'Intercepte l'utilisation du bouton "Annuler" et la croix de fermeture.
   If VarType(Donnee) = vbBoolean Then
        MsgBox " opération annulée"
        Exit Sub
    End If
    
    MsgBox Donnee
End Sub



Nota:
Il semblerait que les arguments context et helpfile ne soient plus utilisables dans Excel2007.
En attendant un futur pack de mise à jour, vous pouvez utiliser d'autres méthodes proposées dans ce lien:
Comment ouvrir des fichiers d'aide personnels .chm ?



Comment afficher un MsgBox temporaire ?
auteur : SilkyRoad
Un exemple de message qui s'affiche pendant 3 secondes:

Vba

CreateObject("Wscript.shell").Popup "Mon Texte", 3, "Le Titre"

Comment créer et utiliser des fenêtres de message étendues ?
auteur : Arkham46
Cet outil permet de créer des MsgBox étendues affichant du texte formaté (RTF).
Elles sont auto-refermables et on peut également modifier le texte des boutons.


Suivez ce lien pour consulter le tutoriel. OFFICE : Fenêtres de message étendues.



Comment utiliser le compagnon Office par macro ?
auteurs : SilkyRoad, Starec
Vba

Sub UtilisezCompagnon_Personnalise()
    Dim i As Byte
    
    With Assistant.NewBalloon
        .Animation = msoAnimationEmptyTrash
        .Button = msoButtonSetOK
        .Heading = "Consultez les ressources DVP."
        .Text = "Sélectionnez un élément puis cliquez sur le bouton 'OK'."
            
         .CheckBoxes(1).Text = "Les sources Excel"
         .CheckBoxes(2).Text = "Le forum Excel"
         .CheckBoxes(3).Text = "La FAQ VBA"
         .CheckBoxes(4).Text = "Les cours VBA"
        
        .Icon = msoIconTip
        .Show
        
        For i = 1 To 4
            If .CheckBoxes(i).Checked = True Then
                Select Case i
                    Case 1
                    ThisWorkbook.FollowHyperlink "http://excel.developpez.com/sources/"
                    Case 2
                    ThisWorkbook.FollowHyperlink "http://www.developpez.net/forums/forumdisplay.php?f=542"
                    Case 3
                    ThisWorkbook.FollowHyperlink "http://vb.developpez.com/faqvba/"
                    Case 4
                    ThisWorkbook.FollowHyperlink "http://vb.developpez.com/cours/"
                End Select
                
                Exit For
            End If
        Next
    End With
    
    Assistant.Visible = False

End Sub


Nota:
L'assistant Office n'est pas disponible dans Excel 2007.
Le compagnon Office ne fonctionne pas sur les environnements Citrix pour cause d'incompatibilité.



Comment utiliser les MS agents dans Excel ?
auteur : SilkyRoad
Les MS agents sont des personnages que vous pouvez piloter (positon, dialogues, attitudes) par programmation VBA.

Les fichiers .asc (qui contiennent les caractéristiques de chaque personnage) sont généralement stockés dans le répertoire:
C:\Windows\Msagent\Chars

Sinon, consultez le site Microsoft pour télécharger les personnages et les licences de distribution.
Le site dispose aussi d'une page d'aide pour les développeurs (Samples, SDK, outils linguistiques et vocaux, un éditeur pour personnaliser vos agents personnels ...)

Si vous rencontrez des problèmes pour faire parler le personnage:
Output Problems
Comment configurer et utiliser la conversion vocale de texte dans Windows XP.


Cet exemple nécessite d'activer la référence "Microsoft agent control 2.0"
Activez le son du PC avant de lancer la procédure:

Vba

Sub Utiliser_MSagent()
    Dim Chemin As String
    Dim ArrayAttitude As Variant
    Dim j As Integer
    Dim Ag As AgentObjects.Agent
    Dim Personnage As AgentObjects.IAgentCtlCharacter
    
    'Liste des attitudes
    ArrayAttitude = Array("Alert", "Announce", "Blink", "Confused", "Congratulate", "Congratulate_2", _
        "Decline", "DoMagic2", "DontRecognize", "Explain", "GestureDown", "GestureLeft", "GetAttention", _
        "GetAttentionReturn", "Greet", "Idle1_1", "Idle1_2", "LookDown", "LookDownBlink", _
        "LookDownReturn", "LookUp", "MoveDown", "Pleased", "Process", "Read", "ReadContinued", _
        "ReadReturn", "RestPose", "Search", "StartListening", "StopListening", "Suggest", "Surprised", _
        "Wave", "Write", "WriteContinued", "WriteReturn")
        
    'Définit le fichier du personnage
    Chemin = Environ("windir") & "\msagent\chars\merlin.acs"
    
    Set Ag = New AgentObjects.Agent
    Ag.Connected = True
    Ag.Characters.Load "Merlin", Chemin
        '&h409 anglais
        '&H40C français
    Ag.Characters("Merlin").LanguageID = &H409
    
    Set Personnage = Ag.Characters("Merlin")
    
    With Personnage
        'Affichage
        .Show
        'Définit la largeur du personnage
        .Width = 200
        'Définit la hauteur
        .Height = 200
        'Position à l'écran
        .MoveTo 400, 300
    End With
    
    
    On Error Resume Next
    For j = 0 To UBound(ArrayAttitude)
        
        'Texte
        Personnage.Speak ArrayAttitude(j)
        'Attitude
        Personnage.Play ArrayAttitude(j)
        
        'Pause: 3 secondes
        Application.Wait (TimeSerial(Hour(Now()), Minute(Now()), Second(Now()) + 3))
    Next j
    On Error GoTo 0
    
    Personnage.Speak "\Chr=""Whisper""\Au revoir! " & Environ("username")
    'Pause: 3 secondes
    Application.Wait (TimeSerial(Hour(Now()), Minute(Now()), Second(Now()) + 3))
    
    Set Personnage = Nothing
    Set Ag = Nothing
End Sub

Comment afficher les boîtes de dialogue intégrées par macro ?
auteur : SilkyRoad
Utilisez la propriété Dialogs. La syntaxe est:
Application.Dialogs(Nom_Boite_De_Dialogue).Show
L'énumération spécifiée (XlBuiltInDialog) permet d'indiquer la boîte de dialogue à afficher.

Cet exemple affiche la fenêtre "Enregistrer sous".

Vba

Application.Dialogs.Item(xlDialogSaveAs).Show



Faites une recherche sur le mot clé "Dialogs" dans l'aide Excel pour obtenir la liste des boîtes de dialogues disponibles, ainsi que leurs arguments paramétrables par macro.

Cette adaptation du premier exemple permet de paramétrer un nom par défaut dans le champ "Nom de fichier" et un mot de passe pour la lecture.

Vba

'Application.Dialogs.Item(xlDialogSaveAs).Show document_text, type_num, prot_pwd, backup, 
   'write_res_pwd, read_only_rec
Application.Dialogs.Item(xlDialogSaveAs).Show "NomClasseur.xls", , "PassWord"



Un autre exemple qui affiche la boîte de dialogue "Copier une image" et qui montre comment en paramétrer les options:

Vba

'Paramètre par macro les arguments de la boite de dialogue xlDialogCopyPicture
'1= 1ere option de chaque argument
'2= 2eme option de chaque argument
Application.Dialogs.Item(xlDialogCopyPicture).Show 1, 2



Remarque:
La méthode FindControl permet aussi d'afficher les boîtes de dialogues intégrées. Exemple pour afficher la fenêtre "Enregistrer sous":

Vba

'Enregistrer sous
CommandBars.FindControl(ID:=748).Execute

Comment créer une barre de progression dans la barre d'état ?
auteur : SilkyRoad
Cet exemple ne nécessite pas un comptage préalable du nombre d'itérations.

Lancez la procédure depuis la feuille de calcul pour visualiser le résultat.

Vba

Sub ProgressionStatusbar()
    Dim i As Long
    Dim InitSB As Boolean
    Dim Indice As Integer
    Dim Debut As Date
    
    Debut = Now
    'Récupére la valeur de la barre d'état afin de pouvoir la redéfinir à son état initial
    'en fin de procédure.
    '(Renvoie True si la barre d'état est affichée, sinon False)
    InitSB = Application.DisplayStatusBar
    'Affiche la barre d'état si ce n'est pas déjà le cas
    Application.DisplayStatusBar = True

    'Exemple de boucle pour tester l'affichage dans la barre d'état.
    For i = 1 To 150000
        '
        'la procédure
        '
        
        '---
        If Debut <> Now Then
            Indice = Indice + 1
            Debut = Now
        
           If Indice > 10 Then Indice = 1
        End If
        
        Application.StatusBar = Application.Rept(Chr(7), Indice)
        'd'autres exemples de symboles pour le défilement dans la barre.
        'Application.StatusBar = Application.Rept(Chr(8), Indice)
        'Application.StatusBar = Application.Rept(Chr(62), Indice)
        '---
    Next
    
    'Restaure la donnée par défaut de la barre d'état
    Application.StatusBar = False
    'Réinintialise le mode d'affichage de la barre.
    Application.DisplayStatusBar = InitSB
End Sub

Pourquoi j'ai parfois un message d'erreur lorsque j'utilise le formulaire (grille de données) ?
auteur : SilkyRoad
Il peut arriver que vous ayez le message d'erreur "La commande n'a pas pu être exécutée avec la plage spécifiée" lorsque vous essayez d'afficher la grille de données (Menu Outils / Données / Formulaire).

La boîte de dialogue "Formulaire" permet de visualiser les enregistrements contenus dans la feuille. Les grilles de données permettent d'ajouter, modifier, atteindre et supprimer des enregistrements.
Pour éviter le message d'erreur, privilégiez une structure classique pour votre base de données:
La première ligne sert à indiquer le nom des champs à partir de la première colonne.
N'utilisez pas de colonnes vides dans la base de données.
Evitez les lignes vides en tête de feuille.
Sélectionnez une cellule de la base de données avant le lancer le formulaire.

Un message d'erreur est renvoyé si ces règles ne sont pas respectées.


Par macro, la procédure renverra un message d'erreur 1004 "La méthode ShowDataForm de la classe Worksheet a échoué".

Vba

Worksheets("Feuil1").ShowDataForm
MsgBox "Fermeture du formulaire"


Plus d'informations sur le site Microsoft.


Pour utiliser la grille de données depuis Excel 2007:
Cliquez sur le bouton Office.
Cliquez sur le bouton "Options d'Excel".
Sélectionnez le menu "Personnaliser".
Choisissez l'option "Commandes non présentes sur le ruban".
Sélectionnez la ligne "Formulaire".
Cliquez sur le bouton "Ajouter", puis sur le bouton OK pour valider.
Le formulaire est désormais disponible depuis la barre d'outils accès rapide.



precedent    sommaire    suivant   

Consultez les autres F.A.Q's


Les sources présentés sur cette pages sont libre de droits, et vous pouvez les utiliser à votre convenance. Par contre cette page de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright ©2008  Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérets. Cette page est déposée à la SACD.

Vos questions techniques : forum d'entraide Accueil - Publiez vos articles, tutoriels, cours et rejoignez-nous dans l'équipe de rédaction du club d'entraide des développeurs francophones. Nous contacter - Copyright 2000..2005 www.developpez.com