 
 
  |  | 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()
    
        
        
    Dim Fichier As Variant
    
    
    Fichier = Application.GetOpenFilename("Tous les fichiers (*.*),*.*")
    
    
    
    If Fichier = False Then Exit Sub
    
    
    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
    
    
    
    Fichiers = Application.GetOpenFilename("Fichiers Excel (*.xls), *.xls", , , , True)
    
    
    
    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.
  
  |  
  |  | 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
  |  
  |  
  |  | 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)
        
        .Title = "Le tite de la fenêtre:"
        
        .AllowMultiSelect = True
        
        
        
        
        
        .Filters.Clear
        
        .Filters.Add "Classeurs Excel", "*.xls; *.xlsx; *.xlsm"
        
        .Filters.Add "Documents Word", "*.doc; *.docx; *.docm", 1
        
        .FilterIndex = 2
        
        
        .InitialView = msoFileDialogViewProperties
        
        .Show
    
        
        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)
        
        .Title = "Le tite de la fenêtre:"
        
        .Show
        
        
        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
    
    
    Set objSaveBox = Application.FileDialog(msoFileDialogSaveAs)
    
    With objSaveBox
        
        .InitialFileName = "Nom fichier.xls"
        
        
        
        .FilterIndex = 4
        
        
        .Show
        
        .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
    
    
    With Application.FileDialog(msoFileDialogOpen)
        .InitialFileName = ""
        
        .Filters.Clear
        
        .Filters.Add "Classeurs Excel", "*.xls; *.xlsx; *.xlsm"
        
        .InitialView = msoFileDialogViewDetails
        .Show
    End With
        
    
    Set objFichiers = Application.FileDialog(msoFileDialogOpen).SelectedItems
        
    
    If objFichiers.Count = 0 Then Exit Sub
        
        
    Application.ScreenUpdating = False
    
    
    For x = 1 To objFichiers.Count
        Set Wb = Workbooks.Open(objFichiers(x))
        
        
        
        
        Wb.Close False
    Next
    Application.ScreenUpdating = True
End Sub
  |  
  |  
  |  | 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. 
  
 
  |  
  |  | 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.
  
 
 
  
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
Set Cellule = Cells(0, 1)
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"
  |  
 
  |  
  |  | auteur : SilkyRoad |  
Un exemple de message qui s'affiche pendant 3 secondes:
  
 | Vba |  
CreateObject("Wscript.shell").Popup "Mon Texte", 3, "Le Titre"
  |  
  |  
  |  | 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.
 
  |  
  |  | 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é.
		
  
		
 
  |  
  |  | auteur : SilkyRoad |  | 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
    
    
    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")
        
    
    Chemin = Environ("windir") & "\msagent\chars\merlin.acs"
    
    Set Ag = New AgentObjects.Agent
    Ag.Connected = True
    Ag.Characters.Load "Merlin", Chemin
        
        
    Ag.Characters("Merlin").LanguageID = &H409
    
    Set Personnage = Ag.Characters("Merlin")
    
    With Personnage
        
        .Show
        
        .Width = 200
        
        .Height = 200
        
        .MoveTo 400, 300
    End With
    
    
    On Error Resume Next
    For j = 0 To UBound(ArrayAttitude)
        
        
        Personnage.Speak ArrayAttitude(j)
        
        Personnage.Play ArrayAttitude(j)
        
        
        Application.Wait (TimeSerial(Hour(Now()), Minute(Now()), Second(Now()) + 3))
    Next j
    On Error GoTo 0
    
    Personnage.Speak "\Chr=""Whisper""\Au revoir! " & Environ("username")
    
    Application.Wait (TimeSerial(Hour(Now()), Minute(Now()), Second(Now()) + 3))
    
    Set Personnage = Nothing
    Set Ag = Nothing
End Sub
  |  
  |  
  |  | 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 "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 |  
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 |  
CommandBars.FindControl(ID:=748).Execute
  |  
  |  
  |  | 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
    
    
    
    InitSB = Application.DisplayStatusBar
    
    Application.DisplayStatusBar = True
    
    For i = 1 To 150000
        
        
        
        
        
        If Debut <> Now Then
            Indice = Indice + 1
            Debut = Now
        
           If Indice > 10 Then Indice = 1
        End If
        
        Application.StatusBar = Application.Rept(Chr(7), Indice)
        
        
        
        
    Next
    
    
    Application.StatusBar = False
    
    Application.DisplayStatusBar = InitSB
End Sub
  |  
  |  
  |  | 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.
  
  |  
 
 
 
						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. 
												 |