VB2
From Mesdoc
[edit] Comment contrôler les caractères qui peuvent être saisis dans un textbox ?
Une solution consiste à utiliser l'évènement KeyPress, qui a lieu lorsqu'une touche correspondant à un caractère est enfoncée. Les touches comme shift, alt, control et F1 à F12 ne sont pas concernées. La procédure de cet évènement a un argument, KeyAscii, qui est le code du caractère à afficher. Modifiez sa valeur pour afficher le caractère que vous voulez. Donnez-lui une valeur nulle si aucun caractère ne doit être affiché. La fonction chr() renvoie le caractère dont le code est passé en paramètre.
L'exemple suivant interdit tout caractère autre que les chiffres et la touche d'effacement :
Private Sub Text1_KeyPress(KeyAscii As Integer)
If KeyAscii <> 8 Then
If Not IsNumeric(Chr(KeyAscii)) Then KeyAscii = 0
End If
End Sub
Une astuce souvent utilisée consiste à rechercher le caractère entré, dans une chaîne contenant tous les caractères autorisés. Si ce caractère n'est pas dans la chaîne, rien n'est affiché :
Private Sub Text1_KeyPress(KeyAscii As Integer) Dim allowedKeys As String allowedKeys = "0123456789-,." & Chr(8) If InStr(allowedKeys, Chr(KeyAscii)) = 0 Then KeyAscii = 0 End Sub
[edit] Comment récupérer une par une les lignes d'un textbox multilignes ?
Une première idée serait d'utiliser la fonction Split() avec vbCrLf comme séparateur. Mais une fin de ligne n'est pas forcément dûe à un retour chariot. Nous allons plutôt faire appel aux API Windows.
Copiez tout d'abord ces déclarations au début du module de la form :
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" _(ByVal hwnd As Long, ByVal wMsg As Long, _ByVal wParam As Long, lParam As Any) As Long Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, _ByVal Length As Long) Private Const EM_GETLINECOUNT = &HBA Private Const EM_LINELENGTH = &HC1 Private Const EM_LINEINDEX = &HBB Private Const EM_GETLINE = &HC4
La procédure ci-dessous affiche une par une les lignes du textbox dont le handle est passé en paramètre :
Private Sub AfficheLignes(lngHandleTextBox As Long)
Dim lngNbLignes As Long, i As Long
Dim lngIndexCar As Long, intLongueurLigne As Integer
Dim strLigne As String
'nombre de lignes
lngNbLignes = SendMessage(lngHandleTextBox, EM_GETLINECOUNT, 0, 0)
For i = 1 To lngNbLignes
'index du premier caractère de la ligne
lngIndexCar = SendMessage(lngHandleTextBox, EM_LINEINDEX, i - 1, 0)
'longueur de la ligne
intLongueurLigne = SendMessage(lngHandleTextBox, EM_LINELENGTH, lngIndexCar, 0)
'récupère la ligne dans la chaîne strLigne
strLigne = Space(intLongueurLigne)
CopyMemory ByVal strLigne, intLongueurLigne, Len(intLongueurLigne)
SendMessage lngHandleTextBox, EM_GETLINE, i - 1, ByVal strLigne
MsgBox strLigne
Next
End Sub
[edit] Comment créer un nouveau document Word ?
Vous devez ajouter la référence à Microsoft Word xx.x library à votre projet (Menu Projet >> Références...).
Private Sub CreateNewDocWord(sDoc As String)
Dim objWord As Word.Application
Dim docWord As Word.Document
Dim Fichier As String
Set objWord = CreateObject("Word.Application") '-- ouvrir une session Word
Set docWord = objWord.Documents.Add '-- Ajouter un nouveau document à la collection
objWord.Visible = True '-- montrer l'application Word
docWord.SaveAs FileName:=sDoc
Set docWord = Nothing '-- détruire l'objet Document
Set objWord = Nothing '-- détruire l'objet Word
End Sub
Exemple :
Private Sub Command1_Click()
CreateNewDocWord "c:\\MonNouveauDocument.doc"
End Sub
[edit] Comment imprimer un document Word ?
Vous devez ajouter la référence à Microsoft Word xx.x library à votre projet (Menu Projet >> Références...).
Private Sub PrintDocWord(sDoc As String)
Dim objWord As Word.Application
Dim docWord As Word.Document
Dim Fichier As String
Set objWord = CreateObject("Word.Application") '-- ouvrir une session Word
objWord.Visible = False '-- masquer l'application Word
Set docWord = objWord.Documents.Open(sDoc) '-- ouvrir le document Word
docWord.PrintOut '-- imprimer le document
docWord.Close '-- fermer le document Word
objWord.Quit '-- fermer la session Word
Set docWord = Nothing '-- détruire l'objet Document
Set objWord = Nothing '-- détruire l'objet Word
End Sub
Exemple :
Private Sub Command1_Click()
CommonDialog1.Filter = "Fichiers Word (*.doc)|*.doc"
CommonDialog1.ShowOpen
PrintDocWord CommonDialog1.FileName
End Sub
[edit] Comment connaître la version de Word installée ?
Vous devez ajouter la référence à Microsoft Word xx.x library à votre projet (Menu Projet >> Références...).
Private Function InfoWordVersion() As String
Dim objWord As Word.Application
Set objWord = CreateObject("Word.Application") '-- ouvrir une session Word
InfoWordVersion = "Version: " & objWord.Version & vbCrLf & _"Build: " & objWord.Build
& vbCrLf & "Product Code: " & objWord.ProductCode()
objWord.Quit '-- fermer la session Word
Set objWord = Nothing '-- détruire l'objet Word
End Function
Private Sub Form_Load()
MsgBox InfoWordVersion
End Sub
[edit] Comment savoir si le contenu d'un TextBox est un Integer ?
Private Function isInteger(Expression As Variant) As Boolean
Dim D As Double
If IsNumeric(Text1.Text) Then D = CDbl(Text1.Text)
If D = Int(D) Then isInteger = True
End If
End Function
[edit] Comment contrôler les caractères qui peuvent être saisis dans un textbox ?
Une solution consiste à utiliser l'évènement KeyPress, qui a lieu lorsqu'une touche correspondant à un caractère est enfoncée. Les touches comme shift, alt, control et F1 à F12 ne sont pas concernées. La procédure de cet évènement a un argument, KeyAscii, qui est le code du caractère à afficher. Modifiez sa valeur pour afficher le caractère que vous voulez. Donnez-lui une valeur nulle si aucun caractère ne doit être affiché. La fonction chr() renvoie le caractère dont le code est passé en paramètre.
L'exemple suivant interdit tout caractère autre que les chiffres et la touche d'effacement :
Private Sub Text1_KeyPress(KeyAscii As Integer)
If KeyAscii <> 8 Then
If Not IsNumeric(Chr(KeyAscii)) Then KeyAscii = 0
End If
End Sub
Une astuce souvent utilisée consiste à rechercher le caractère entré, dans une chaîne contenant tous les caractères autorisés. Si ce caractère n'est pas dans la chaîne, rien n'est affiché :
Private Sub Text1_KeyPress(KeyAscii As Integer) Dim allowedKeys As String allowedKeys = "0123456789-,." & Chr(8) If InStr(allowedKeys, Chr(KeyAscii)) = 0 Then KeyAscii = 0 End Sub
[edit] Comment récupérer une par une les lignes d'un textbox multilignes ?
Une première idée serait d'utiliser la fonction Split() avec vbCrLf comme séparateur. Mais une fin de ligne n'est pas forcément dûe à un retour chariot. Nous allons plutôt faire appel aux API Windows.
Copiez tout d'abord ces déclarations au début du module de la form :
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA"
_(ByVal hwnd As Long, ByVal wMsg As Long, _ByVal wParam As Long, lParam As Any) As Long
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory"
(Destination As Any, Source As Any, _ByVal Length As Long)
Private Const EM_GETLINECOUNT = &HBA
Private Const EM_LINELENGTH = &HC1
Private Const EM_LINEINDEX = &HBB
Private Const EM_GETLINE = &HC4
La procédure ci-dessous affiche une par une les lignes du textbox dont le handle est passé en paramètre :
Private Sub AfficheLignes(lngHandleTextBox As Long)
Dim lngNbLignes As Long, i As Long
Dim lngIndexCar As Long, intLongueurLigne As Integer
Dim strLigne As String
'nombre de lignes
lngNbLignes = SendMessage(lngHandleTextBox, EM_GETLINECOUNT, 0, 0)
For i = 1 To lngNbLignes
'index du premier caractère de la ligne
lngIndexCar = SendMessage(lngHandleTextBox, EM_LINEINDEX, i - 1, 0)
'longueur de la ligne
intLongueurLigne = SendMessage(lngHandleTextBox, EM_LINELENGTH, lngIndexCar, 0)
'récupère la ligne dans la chaîne strLigne
strLigne = Space(intLongueurLigne)
CopyMemory ByVal strLigne, intLongueurLigne, Len(intLongueurLigne)
SendMessage lngHandleTextBox, EM_GETLINE, i - 1, ByVal strLigne
MsgBox strLigne
Next
End Sub
[edit] Comment faire du Drag and Drop ?
Le DragDrop doit être vu comme un artifice visuel. Pour schématiser, rien n'est déplacé lors d'une opération DragDrop. C'est votre code qui va générer le "déplacement". Cette opération existe sous deux formes :
* La forme standard pour les opérations de déplacement au sein d'un process * La forme OLE, qui rend possible les déplacements inter process.
La forme standard est assez simple d'utilisation. On active l'opération dans l'événement MouseMove du contrôle source, on gère les icônes dans l'(es) événement(s) DragOver des contrôles de la feuille, et enfin on effectue le déplacement dans l'événement DragDrop du contrôle cible. L'exemple suivant permet d'échanger des éléments entre deux contrôles Listbox.
Private Sub Form_DragOver(Source As Control, X As Single, Y As Single, State As Integer)
If Source Is List1 Then
Source.DragIcon = _LoadPicture("
C:\\Program Files\\Microsoft Visual Studio\\Common\\Graphics\\Icons\\Misc\\misc06.ico")
End If
End Sub
Private Sub List1_DragOver(Source As Control, X As Single, Y As Single, State As Integer)
If (Source Is List1) Or (Source Is List2) Then
Source.DragIcon = _LoadPicture("
C:\\Program Files\\Microsoft Visual Studio\\Common\\Graphics\\Icons\\Dragdrop\\drop1pg.ico")
End If
End Sub
Private Sub List2_DragOver(Source As Control, X As Single, Y As Single, State As Integer)
If (Source Is List1) Or (Source Is List2) Then
Source.DragIcon = _LoadPicture("
C:\\Program Files\\Microsoft Visual Studio\\Common\\Graphics\\Icons\\Dragdrop\\drop1pg.ico")
End If
End Sub
Private Sub List1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
List1.Drag vbBeginDrag
End Sub
Private Sub List2_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
List2.Drag vbBeginDrag
End Sub
Private Sub List1_DragDrop(Source As Control, X As Single, Y As Single)
If Source Is List2 Then
List1.AddItem List2.List(List2.ListIndex)
List2.RemoveItem List2.ListIndex
End If
End Sub
Private Sub List2_DragDrop(Source As Control, X As Single, Y As Single)
If Source Is List1 Then
List2.AddItem List1.List(List1.ListIndex)
List1.RemoveItem List1.ListIndex
End If
End Sub
Sous sa forme OLE, le drag and drop peut être beaucoup plus complexe. Bien qu'identique dans la forme de programmation, les données peuvent être transmises entre les applications. Dans l'exemple suivant, vous pouvez déplacer un fichier graphique en partant de l'explorateur vers votre PictureBox.
Private Sub Form_Load()
'autorise les opérations manuelles de dépose
Picture1.OLEDropMode = vbOLEDropManual
End Sub
Private Sub Picture1_OLEDragDrop(Data As DataObject, Effect As Long, Button As Integer,
_Shift As Integer, X As Single, Y As Single)
Dim NomFichier As String
'vérifie le format de l'objet Data Transmis
If Data.GetFormat(vbCFFiles) = True Then
' vbCFFiles correspond à une liste de fichier, donc récupération du premier élément
NomFichier = Data.Files(1)
On Error GoTo invalidPicture
Picture1.Picture = LoadPicture(NomFichier)
End If
Exit Sub
invalidPicture:
MsgBox "Format de fichier incorrect", vbCritical + vbOKOnly
End Sub
Private Sub Picture1_OLEDragOver(Data As DataObject, Effect As Long,
Button As Integer, Shift As Integer, _X As Single, Y As Single, State As Integer)
'vérifie le format de l'objet Data Transmis pour valoriser le paramètre Effect
If Data.GetFormat(vbCFFiles) Then
Effect = vbDropEffectCopy And Effect
Else
Effect = vbDropEffectNone
End If
End Sub
[edit] Comment lire / écrire dans un fichier .ini ?
Les fichiers .ini sont des fichiers texte utilisés pour enregistrer les options d'un programme. Ils sont composés de sections, qui contiennent des clés auxquelles on peut donner une valeur. Par exemple :
[Affichage] State=Maximized Left=50 Top=80 [Sauvegarde] Confirm=True Auto=False
Pour pouvoir respectivement lire et écrire dans un fichier .ini, voici les décarations que vous devez ajouter dans votre module :
Private Declare Function GetPrivateProfileString Lib "kernel32"
Alias "GetPrivateProfileStringA" _(ByVal lpApplicationName As String, ByVal lpKeyName As Any,
ByVal lpDefault As String, _ByVal lpReturnedString As String, ByVal nSize As Long,
ByVal lpFileName As String) As Long
Private Declare Function WritePrivateProfileString Lib "kernel32"
Alias "WritePrivateProfileStringA" _(ByVal lpApplicationName As String,
ByVal lpKeyName As Any, ByVal lpString As Any, _ByVal lpFileName As String) As Long
Voici ci-dessous la fonction qui écrira une valeur pour la clé et dans la section indiquée. Notez que vous n'avez pas besoin de créer le fichier s'il n'existe pas, car la fonction WritePrivateProfileString le fait pour vous.
Private Function EcritDansFichierIni(Section As String,
Cle As String, _Valeur As String, Fichier As String) As Long
EcritDansFichierIni = WritePrivateProfileString(Section, Cle, Valeur, Fichier)
End Function
Et voyons maintenant la fonction qui nous retournera la valeur d'une clé dans une section donnée. ValeurParDefaut contient la valeur qui devra nous être retournée si le fichier n'existe pas, ou si aucune valeur n'a été spécifiée pour la clé demandée :
Private Function LitDansFichierIni(Section As String, Cle As String, Fichier As String,
Optional ValeurParDefaut As String = "") As String
Dim strReturn As String
strReturn = String(255, 0)
GetPrivateProfileString Section, Cle, ValeurParDefaut, strReturn, Len(strReturn), Fichier
LitDansFichierIni = Left(strReturn, InStr(strReturn, Chr(0)) - 1)
End Function
Le code nécessaire pour écrire la section [Affichage] du fichier donné en exemple sera :
EcritDansFichierIni "Affichage", "State", "Maximized", "c:\\config.ini" EcritDansFichierIni "Affichage", "Left", "50", "c:\\config.ini" EcritDansFichierIni "Affichage", "Top", "80", "c:\\config.ini"
Et nous pourrons lire la valeur donnée à la clef "Left" avec :
LeftParam = LitDansFichierIni("Affichage", "Left", "c:\\config.ini", 100)
[edit] Comment lister toutes les sections d'un fichier .ini ?
Déclaration :
Private Declare Function GetPrivateProfileSectionNames Lib "kernel32.dll"
Alias "GetPrivateProfileSectionNamesA" _(ByVal lpszReturnBuffer As String, ByVal nSize As Long, ByVal lpFileName As String) As Long
Paramètre lpszReturnBuffer : adresse d'un tampon qui va recevoir la ou les sections du fichier .ini. Chaque nom de section est terminé par un caractère null (Chr(0)=vbNullChar), le dernier est suivi d'un second caratère null.
Private Function ListeSectionIni(ByVal Path As String, Section() As String)
Dim strReturn As String
strReturn = String(8192, 0)
GetPrivateProfileSectionNames strReturn, Len(strReturn), Path
Section = Split(Left(strReturn, InStr(1, strReturn, vbNullChar & vbNullChar) - 1), vbNullChar)
End Function
Private Sub Command1_Click()
Dim Section() As String
ListeSectionIni "C:\\test.ini", Section '-- Paramètre Section passé ByRef
For Index = LBound(Section) To UBound(Section)
Debug.Print Section(Index)
Next End Sub
[edit] Comment lister toutes les clés et valeurs d'une section d'un fichier .ini ?
Déclaration :
Private Declare Function GetPrivateProfileSection Lib "kernel32" Alias "GetPrivateProfileSectionA" _ (ByVal lpAppName As String, ByVal lpReturnedString As String, ByVal nSize As Long, ByVal lpFileName As String) As Long
Paramètre lpReturnedString : adresse d'un tampon qui va recevoir la ou les clés et valeurs de la section du fichier .ini. Chaque clé est terminée par un caractère null (Chr(0)=vbNullChar), la dernière est suivi d'un second caratère null.
Public Function ListeSectionKey(ByVal Path As String, ByVal Section As String, Key() As String)
Dim strReturn As String
strReturn = String(8192, 0)
GetPrivateProfileSection Section, strReturn, 8192, Path
Key = Split(Left(strReturn, InStr(1, strReturn, vbNullChar & vbNullChar) - 1), vbNullChar)
End Function
Private Sub Command1_Click()
Dim Key() As String
ListeSectionKey "C:\\test.ini", "SectionName1", Key '-- le paramètre Key est passé byRef
For Index = LBound(Key) To UBound(Key)
Debug.Print Key(Index)
Next End Sub
[edit] Comment ouvrir un fichier HTML, Word ou autre en utilisant l'exécutable associé ?
Placez cette déclaration dans le module d'une form :
Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" _
(ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, _
ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
La ligne suivante affiche le site Developpez.com dans le navigateur par défaut, en fournissant le répertoire de votre application comme répertoire par défaut :
ShellExecute Me.hwnd, "open", "http://www.developpez.com", "", App.Path, 1
[edit] Comment obtenir ou modifier le contenu du Presse-papiers ?
Vous pouvez accéder au presse-papiers via l'objet Clipboard.
[edit] Comment savoir si un fichier existe ?
If Dir("c:\\temp\\Erreurs.tmp", vbHidden) <> "" Then
'le fichier existe (vbHidden permet de le retrouver même s'il est caché)
End If
[edit] Comment copier un fichier ?
'Copie le fichier "c:\\temp\\Erreurs.tmp" en "c:\\temp\\Erreurs.bak" FileCopy "c:\\temp\\Erreurs.tmp", "c:\\temp\\Erreurs.bak"
[edit] Comment copier un fichier actuellement ouvert par une application?
La méthode habituellement utilisée pour copier un fichier, FileCopy, échoue si le fichier en cours est actuellement ouvert (violation de partage). Pour contourner ce probleme, il faut faire appel à une API du kernel nommée CopyFile. Dans l'exemple ci-dessous, cette méthode est utilisée pour sauvegarder une base Access alors même que celle-ci est ouverte.
Private Declare Function CopyFile Lib "kernel32" Alias "CopyFileA" _
(ByVal lpExistingFileName As String, ByVal lpNewFileName As String, _
ByVal bFailIfExists As Long) As Long
'bFailIfExists doit etre à false pour permettre 'l'overwriting
Private Sub Form_Load()
Dim Nouvfich As String
CommonDialog1.Filter = "Base de données (*.mdb)|*.mdb"
On Error GoTo erreur
CommonDialog1.ShowSave
Nouvfich = CommonDialog1.FileName
CopyFile App.Path & "\\tests.mdb", Nouvfich, False
erreur:
If Err = 32755 Then
Exit Sub
End If
End Sub
[edit] Comment renommer un fichier ou un répertoire ?
'Renomme "c:\\temp\\Erreurs.tmp" en "c:\\temp\\Erreurs.bak" Name "c:\\temp\\Erreurs.tmp" As "c:\\temp\\Erreurs.bak" 'Renomme le répertoire "c:\\temp" en "c:\\var" Name "c:\\temp" As "c:\\var"
[edit] Comment détruire un fichier ?
Kill "c:\\Erreurs.tmp"
Le fichier doit exister sinon une erreur d'exécution a lieu.
[edit] Comment récupérer le nom d'un fichier à partir d'un chemin complet ?
Cette fonction reçoit le chemin complet d'un fichier en paramètre et renvoie le nom du fichier :
Public Function ExtractFileName(ByVal sFullPath As String) As String
If InStr(sFullPath, "\\") = 0 Or Right(sFullPath, 1) = "\\"
Then ExtractFileName = ""
Exit Function
End If
ExtractFileName = Mid(sFullPath, InStrRev(sFullPath, "\\") + 1)
End Function
[edit] Comment récupérer l'extension d'un fichier à partir d'un chemin complet ?
Cette fonction reçoit le chemin complet d'un fichier en paramètre et renvoie l'extension du fichier, si elle existe, sinon renvoie une chaine vide : (Nécessite la fonction faq ExtractFileName)
Public Function ExtractFileExt(ByVal sFullPath As String) As String
Dim sName As String
sName = ExtractFileName(sFullPath)
If InStr(sName, ".") = 0 Then
ExtractFileExt = ""
Else
ExtractFileExt = Mid(sName, InStrRev(sName, ".") + 1)
End If End Function
[edit] Comment envoyer un e-mail ?
Cochez Microsoft MAPI Controls 6.0 dans la liste des composants. Inserez un contrôle MAPISession et un contrôle MAPIMessages à votre projet
MAPISession1.SignOn MAPIMessages1.MsgIndex = -1 MAPIMessages1.SessionID = MAPISession1.SessionID MAPIMessages1.RecipDisplayName = "toto@domaine.fr" 'Destinataire MAPIMessages1.MsgSubject = "Un petit bonjour" 'Objet MAPIMessages1.MsgNoteText = "Salut." 'Texte MAPIMessages1.Send MAPISession1.SignOff
[edit] Comment extraire un élément d'une chaine délimitée qui est à une position donnée ?
On utilise la fonction ci-dessous qui attend en paramètres la chaine, la position de l'élément à extraire et le délimiteur. Cette fonction renvoie une chaine vide lorsqu'elle ne peut pas procéder à l'extraction. Dans le cas d'une extraction partielle, cette fonction est beaucoup plus rapide qu'un Split.
Function ExtraitElement(ChaineRecherche As String, Position As Long, Delim As String) As String
'Renvoie une chaine vide si l'extraction n'est pas possible
On Error GoTo Err_Function
Dim compteur As Long, LastPos As Long, CurPos As Long
If InStr(ChaineRecherche, Delim) = 0 Or Len(ChaineRecherche) = 0 Then Exit Function
LastPos = 1
Do
CurPos = InStr(LastPos, ChaineRecherche, Delim)
If CurPos = 0 Then
If compteur = Position - 1 Then ExtraitElement = Mid(ChaineRecherche, LastPos) Exit Do
Else
compteur = compteur + 1 If compteur = Position Then ExtraitElement = Mid(ChaineRecherche, LastPos, CurPos - LastPos) Exit Do End If
End If
LastPos = CurPos + 1
Loop While CurPos > 0
Exit Function
Err_Function:
MsgBox "Error " & Err.Number & ": " & Err.Description
Resume Next
End Function
[edit] Comment lire un fichier XML ?
La lecture d'un fichier XML se fait à l'aide d'un parseur. Dans les références du projet, ajoutez Microsoft XML.
Voici un exemple qui affiche dans la fenêtre de débogage la liste des balises contenues dans un document xml.
Private Sub BrowseChildNodes(root_node As IXMLDOMNode)
Dim i As Long
For i = 0 To root_node.childNodes.length - 1
If root_node.childNodes.Item(i).nodeType <> 3 Then Debug.Print root_node.childNodes.Item(i).baseName BrowseChildNodes root_node.childNodes(i)
Next
End Sub
Private Sub BrowseXMLDocument(ByVal filename As String)
Dim xmlDoc As DOMDocument, root As IXMLDOMElement
Set xmlDoc = New DOMDocument
xmlDoc.async = False
xmlDoc.Load filename
Set root = xmlDoc.documentElement
If Not root Is Nothing Then
Debug.Print root.baseName BrowseChildNodes root
End If End Sub
Appelez simplement la procédure BrowseXMLDocument en passant en paramètre le chemin du fichier. Cette procédure ouvre le fichier puis appelle la procédure BrowseChildNodes qui parcoure l'ensemble des balises de façon récursive.
[edit] Comment connaître le type du contenu d'un TextBox ?
Dim D as Double
If isNumeric(Text1.Text) Then
D=CDbl(Text1.Text)
If D-Int(D) = 0 Then
'Le nombre est entier
Else
'Le nombre est décimal
End if
Else
'Ce n'est pas un nombre
End if
[edit] Comment savoir si le contenu d'un TextBox est un Integer ?
Private Function isInteger(Expression As Variant) As Boolean
Dim D As Double
If IsNumeric(Text1.Text) Then
D = CDbl(Text1.Text)
If D = Int(D) Then isInteger = True
End If
End Function
