Académique Documents
Professionnel Documents
Culture Documents
Rubriques
Classeurs (Workbooks)
Contrôles et Formulaires
Feuilles (Worksheets)
Fichiers (XL ou autres)
Fonctions
Formules
Graphiques
Menus
Sélection
OLE Automation
Excel <--> Access (DAO)
Commandes diverses
Programmes divers ...
Téléchargement sur site http://ericrenaud.free.fr/
Vous trouverez dans cette rubrique des exemples de programmes se rapportant aux
classeurs.
Vous trouverez dans cette rubrique des exemples sur les différents contrôles comme
TextBox, ComboBox, ListBox, Bouton d'option, Case à cocher, calendrier, indicateur de
progression, etc...
Ces contrôles s'utilisent sur un Userform (ou formulaire)
Depuis une feuille Excel, tapez ALT+F11 ou par le menu Outils, Macro, Visual Basic
Editor.
Vous affichez l'environnement Visual Basic Editor.
Insérer un Userform à l'aide du menu Insertion, Userform.
La boîte à outils doit s'afficher, sinon utilisez le menu Affichage, Boîte à outils.
Le code
1 / Bouton OK
Private Sub OK_Click()
DlgChoix.Hide
If DlgChoix.ChoixPaire Then
Msg = "Vous avez choisi l'activité France."
Style = vbOKOnly + vbInformation
Title = "Activité Commerciale - © E. RENAUD - Novembre 1999"
Response = MsgBox(Msg, Style, Title)
Else
Msg = "Vous avez choisi l'activité Export."
Style = vbOKOnly + vbInformation
Title = "Activité Commerciale - © E. RENAUD - Novembre 1999"
Response = MsgBox(Msg, Style, Title)
End If
End Sub
2 / Bouton Annuler
Private Sub Annuler_Click()
DlgChoix.Hide
End Sub
Le Userform (CasesACocher)
Le code
1 / Bouton OK
Private Sub OK_Click()
Dim Langue1 As String
Dim Langue2 As String
Dim Langue3 As String
If CheckBox1.Value = False Then
Langue1 = "Non"
Else
Langue1 = "Oui"
End If
If CheckBox2.Value = False Then
Langue2 = "Non"
Else
Langue2 = "Oui"
End If
If CheckBox3 = False Then
Langue3 = "Non"
Else
Langue3 = "Oui"
End If
CasesACocher.Hide
Range("A3").Value = Langue1
Range("B3").Value = Langue2
Range("C3").Value = Langue3
Range("A1").Select
End Sub
2 / Bouton Annuler
Private Sub Annuler_Click()
CasesACocher.Hide
End Sub
Le résultat
Le Userform (ListeDeroulante)
Le code
1 / Bouton Valider
Private Sub Valider_Click()
ListeDeroulante.Hide
' Marque est le nom donné au contrôle ListBox
Index = Marque.ListIndex
ChoixMarque = Marque.List(Index)
' Stockage du choix effectué dans la liste déroulante en D2
Range("D2").Value = ChoixMarque
End Sub
2 / Bouton Annuler
Private Sub Annuler_Click()
ListeDeroulante.Hide
End Sub
Le Userform (ListeDeroulanteModifiable)
Les contrôles
Le code
1 / Bouton OK
Private Sub OK_Click()
ListeDeroulanteModifiable.Hide
Application.ScreenUpdating = False
' Constructeur est le nom donné au contrôle ComboBox
Marque = Constructeur.Value
' Stockage du choix effectué dans la liste déroulante en D2
Range("D2").Value = Marque
Columns("A:A").Select
On Error GoTo Ajoute
Selection.Find(What:=Marque, After:=ActiveCell, LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False).Activate
Range("A1").Select
Exit Sub
Ajoute:
' Une nouvelle marque étant ajoutée, ajout de celle-ci à la fin de la colonne A
Range("A1").End(xlDown).Offset(1, 0).Value = Marque
' Tri des marques en ordre croissant
Selection.Sort Key1:=Range("A1"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
' Sélectionne la plage et recolore la plage des marques après ajout nouvelle marque
With Worksheets(1)
.Range(.[A1], .[A1].End(xlDown)).Select
End With
With Selection.Interior
.ColorIndex = 20
.PatternColorIndex = xlAutomatic
End With
Range("A1").Select
End Sub
2 / Bouton Annuler
Private Sub Annuler_Click()
ListeDeroulanteModifiable.Hide
End Sub
Le Userform (ListeDeroulanteModifiable)
Les contrôles
Le code
1 / Bouton OK
Private Sub OK_Click()
Me.Hide
If Me.Constructeur.ListIndex = -1 Then
Sheets("Feuil1").Cells(1, 1).End(xlDown).Offset(1, 0).Value = Me.Constructeur.Value
' Tri de la plage de données suite à l'ajout d'un élément
Sheets("Feuil1").Range([A1], [A1].End(xlDown)).Select
Selection.Sort Key1:=Range("A1"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
Else
End If
' Mise en place de la valeur choisie en D2
Sheets("Feuil1").Cells(2, 4).Value = Me.Constructeur.Value
End Sub
2 / Bouton Annuler
Private Sub Annuler_Click()
ListeDeroulanteModifiable.Hide
End Sub
Le Userform (DlgChoixMultiple)
Les contrôles
N
om
de la
ListB
ox =
Liste
Client
s
N
om
du
Com
mand
Butto
n
"OK"
= OK
N
om
du
Com
mand
Butto
n
"Ann
uler"
=
Annul
er
Le code
1 / Bouton OK
Private Sub OK_Click()
DlgChoixMultiple.Hide
j=1
With ListeClients
For i = 0 To .ListCount - 1
If .Selected(i) = True Then
' Le résultat est placé dans les colonnes D et E de la feuille Feuil1
Cells(j, 4) = .List(i, 0): Cells(j, 5) = .List(i, 1)
.Selected(i) = False
j=j+1
End If
Next
End With
End Sub
2 / Bouton Annuler
Private Sub Annuler_Click()
DlgChoixMultiple.Hide
End Sub
Le Userform (DlgChoix)
Les contrôles
N
om
de la
Com
boBo
x=
Liste
Client
s
N
om
du
Com
mand
Butto
n
"OK"
= OK
N
om
du
Com
mand
Butto
n
"Ann
uler"
=
Annul
er
Le code
1 / Bouton OK
Private Sub OK_Click()
DlgChoix.Hide
If ListeClients.ListIndex <> -1 Then
' Récupération du code et du nom du client
Sheets("Feuil1").Cells(1, 4).Value = ListeClients.Column(0, ListeClients.ListIndex)
Sheets("Feuil1").Cells(1, 5) = ListeClients.Column(1, ListeClients.ListIndex)
End If
End Sub
2 / Bouton Annuler
Private Sub Annuler_Click()
DlgChoix.Hide
End Sub
Cette boîte de dialogue permet de mettre à jour les deux contrôles de droite
(TextBox et ComboBox) suivant la sélection effectuée dans le contrôle de
gauche (ListBox) et cela de manière dynamique.
Le Userform (ListeDeroulanteCombinee)
Le code
1 / Bouton Valider
Private Sub Valider_Click()
ListeDeroulanteCombinee.Hide
' Récupération des index en fonction de la sélection
IndexOnglet = Onglets.ListIndex
IndexModele = Marque.ListIndex
' Récupération des valeurs en fonction des index
Onglet = Onglets.List(IndexOnglet)
Modele = Marque.List(IndexModele)
Rubrique = Categorie.Value
' Mise en place des valeurs dans la feuille de calcul
Sheets("Accueil").Activate
Range("B2").Value = Onglet
Range("C2").Value = Rubrique
Range("D2").Value = Modele
End Sub
2 / Bouton Annuler
Private Sub Annuler_Click()
ListeDeroulanteCombinee.Hide
End Sub
Les données utilisées pour remplir la liste déroulante
Onglet Liste Voitures
Le Userform (ListeCombinee)
Le code
1 / Bouton Valider
Private Sub CmdValider_Click()
Me.Hide
MySelection = Me.ListBox1.List(ListBox1.ListIndex)
MsgBox "Vous avez choisi le joueur " & MySelection & "." & vbCr & _
"Il appartient à la catégorie des " & MyCategorie & "."
Unload Me
End Sub
2 / Bouton Annuler
Private Sub Annuler_Click()
Me.Hide
Unload Me
End Sub
Le Userform (ListeCombinee)
Le code
Load
Doub
leList
Box
Doub
leList
Box.
Show
Unlo
ad
Doub
leList
Box
End
Sub
With
Me
U
pdate
ListB
ox
.ListB
ox1,
-1
End
With
End
Sub
1 / Bouton Valider
Private Sub CmdValider_Click()
Me.Hide
MsgBox "Dans la catégorie : " & Me.ListBox1.List(Me.ListBox1.ListIndex) & Chr(13) & Chr(13) & _
"Vous avez choisi : " & Me.ListBox2.List(Me.ListBox2.ListIndex), vbInformation, "Résultat de votre choix :"
End Sub
La feuille de données
Cet exemple permet en cliquant sur l'un des onglets, d'avoir instantanément
les chiffres correspondants à l'activité indiquée sur l'onglet.
Le code
Me.T
abStr
ip1.V
alue
=0
F
or I =
1 To
5
Me
.Cont
rols("
TextB
ox" &
I).Val
ue =
Shee
ts("R
ésult
ats").
Cells(
I + 1,
2).Val
ue
Next
I
End
Sub
Code sur l'événement Change
Privat
e
Sub
TabSt
rip1_
Chan
ge()
Selec
t
Case
TabSt
rip1.V
alue
C
ase 0
Fo
rI=
1 To
5
Me.
Contr
ols("T
extBo
x" &
I).Val
ue =
Shee
ts("R
ésult
ats").
Cells(
I + 1,
2).Val
ue
Ne
xt I
C
ase 1
Fo
rI=
1 To
5
Me.
Contr
ols("T
extBo
x" &
I).Val
ue =
Shee
ts("R
ésult
ats").
Cells(
I + 1,
3).Val
ue
Ne
xt I
C
ase 2
Fo
rI=
1 To
5
Me.
Contr
ols("T
extBo
x" &
I).Val
ue =
Shee
ts("R
ésult
ats").
Cells(
I + 1,
4).Val
ue
Ne
xt I
End
Selec
t
End
Sub
Bouton Fermer
Privat
e
Sub
Cmd
Ferm
er_Cl
ick()
Me.H
ide
End
Sub
InputBox peut être utilisée soit comme fonction, soit comme méthode.
La fonction Inputbox permet d'afficher une boîte de dialogue contenant une zone de
texte légendée, invitant l'utilisateur à y saisir l'information attendue. L'information saisie
est renvoyée sous forme de chaîne de caractères et stockée dans une variable afin de
pouvoir être ensuite exploitée par le programme.
L'objet Application d'Excel possède une méthode InputBox que l'on peut substituer à la
fonction InputBox de Visual Basic.
La méthode Inputbox se présente comme la fonction InputBox mais offre une possibilité
très
intéressante : elle permet de spécifier le type de données qui sera renvoyée (numérique,
plage).
Cette boite de dialogue avec une zone de texte légendée, invite l'utilisateur
à y saisir l'information attendue. L'information saisie est renvoyée sous forme
de chaîne de caractères et stockée dans une variable afin de pouvoir
être ensuite exploitée par le programme.
La boîte de dialogue
Le code
Msg
Box
"Auc
une
donn
ée
n'a
été
saisie
"
Exit
Sub
'
Sinon
la
donn
ée
saisie
est
affich
ée
El
se
Msg
Box
Inscri
ption
E
nd If
End
Sub
Cette boite de dialogue avec une zone de texte légendée, invite l'utilisateur
à y saisir l'information attendue sous forme numérique (type:=1). L'information
saisie est renvoyée sous forme de nombre et stockée dans une variable afin de
pouvoir être ensuite exploitée par le programme.
La boîte de dialogue
Le code
Msg
Box
"La
recett
e est
de : "
&
Rece
tte
End
Sub
Cette boite de dialogue avec une zone de texte légendée, invite l'utilisateur
à y saisir l'information attendue sous forme de sélection de plage (type:=8).
L'information saisie est renvoyée sous forme de plage et stockée dans une
variable afin de pouvoir être ensuite exploitée par le programme.
La boîte de dialogue
Le code
Vous trouverez dans cette rubrique des exemples de la fonction MsgBox. La fonction
MsgBox permet d'afficher une boîte de dialogue présentant un message et des boutons
de commande, afin d'afficher une information à l'attention de l'utilisateur. ou d'obtenir
une réponse à une question qui orientera l'exécution du programme.
La boîte de dialogue
Le code
La boîte de dialogue
Le code
MySt
ring =
"Oui"
'
Effect
ue
une
actio
n.
Else '
L'utili
sateu
ra
choisi
Non.
MySt
ring =
"Non"
'
Effect
ue
une
actio
n.
End
If
End
Sub
La boîte de dialogue
Le code
Msg
Box
"Vou
s
avez
sélec
tionn
é
Oui"
Else
Msg
Box
"Vou
s
avez
sélec
tionn
é
Annul
er"
E
nd If
End
Sub
Contrôles avancés
Le contrôle Calendar (calendrier).
La boîte à outils
Le Userform (fmContratDates)
Le code
Privat
e
Sub
Cmd
Valid
er_Cl
ick()
'
Vérifi
catio
n de
la
validit
é des
infor
matio
ns
If
Date
Debu
t.Valu
e = ""
Then
MsgB
ox
"Vou
s
deve
z
spéci
fier
une
date
de
début
.",
vbOK
Only
+
vbCri
tical,
"Cont
rat
d'aut
eur"
E
xit
Sub
ElseIf
Date
Fin.V
alue
= ""
Then
M
sgBo
x
"Vou
s
deve
z
spéci
fier
une
date
de
fin.",
vbOK
Only
+
vbCri
tical,
"Cont
rat
d'aut
eur"
E
xit
Sub
ElseIf
Date
Value
(Date
Fin) -
Date
Value
(Date
Debu
t) <=
0
Then
M
sgBo
x
"Vou
s
deve
z
spéci
fier
une
date
de
début
antéri
eure
à la
date
de
fin.",
_
v
bOK
Only
+
vbCri
tical,
"Cont
rat
d'aut
eur"
E
xit
Sub
ElseIf
Date
Value
(Date
Fin) -
Date
Value
(Date
Debu
t) <
40
Then
Dim
Conti
nuer
As
Integ
er
Conti
nuer
=
MsgB
ox("V
ous
avez
indiq
ué
une
date
de
début
à
seule
ment
"_
&
Date
Value
(Date
Fin) -
Date
Value
(Date
Debu
t) & "
jours
de la
date
de
fin. _
V
alider
cette
date
?",
vbYe
sNo
+
vbQu
estio
n,
"Valid
er la
date
de
début
?")
If
Conti
nuer
=
vbNo
Then
Exit
Sub
End
If
fmCo
ntrat
Date
s.Hid
e
'
Affich
age
des
dates
sélec
tionn
ées
MsgB
ox ("
Les
dates
de
Débu
t et
Fin
sont :
"&
Date
Debu
t.Valu
e&"
et " &
Date
Fin.V
alue)
'
Mise
à jour
des
para
mètre
s
Date
Debu
t.Valu
e = ""
Date
Fin.V
alue
= ""
cboD
ateA
Valid
er.Lis
tInde
x=0
Cale
ndrier
.Valu
e=
Date
Cale
ndrier
.SetF
ocus
End
Sub
Privat
e
Sub
Cmd
Reto
ur_Cl
ick()
MsgB
ox
"Vou
s
allez
ferme
r
l'appli
catio
n"
Me.H
ide
End
Sub
Le contrôle ComboBox.
Je vous donne 4 méthodes pour remplir cette ComboBox (en fonction de votre besoin)
Privat
e
Sub
User
Form
_Initi
alize(
)
M
e.cbo
Com
boBo
x.Ro
wSou
rce =
"Feuil
1!
A1:A"
&
Shee
ts("F
euil1"
).Cell
s(1,
1).En
d(xlD
own).
Row
End
Sub
Méthode 2 : Les données sont figées et vous les ajoutez grâce à la méthode
AddItem.
Méthode 3 : Les données correspondent à la liste des mois (Janvier, Février, ...,
Décembre).
On va utiliser la méthode AddItem avec une variable (i).
Privat
e
Sub
User
Form
_Initi
alize(
)
D
im
vaDe
partm
ent
As
Varia
nt
D
im
stDe
ptList
() As
Strin
g
D
im i
As
Integ
er
v
aDep
artem
ent =
VBA.
Array
("Ain"
,
"Aisn
e",
"Allie
r","Al
pes-
de-
Hte-
Prov
ence"
,_
"Alp
es-
Haut
es",
"Alpe
s-
Mariti
mes",
"Arde
nnes"
)
R
eDim
stDe
ptList
(0 To
UBou
nd(va
Depa
rteme
nt))
F
or i =
0 To
UBou
nd(va
Depa
rteme
nt)
stD
eptLi
st(i) =
vaDe
parte
ment(
i)
N
ext i
c
boCo
mbob
ox.Li
st =
stDe
ptList
End
Sub
Il
suffit
simpl
emen
t de
sélec
tionn
er
avec
la
souri
s la
donn
ée
désir
ée.
Privat
e
Sub
cmd
OK_
Click(
)
M
sgBo
x
"L'ite
m
sélec
tionn
é
est : "
&
cboC
ombo
Box.
Value
,
vbInf
ormat
ion
U
nload
Me
End
Sub
Il est
possi
ble
dans
le
cas
où
les
donn
ées
sont
issue
s
d'une
feuill
e
Excel
,
d'insc
rire
cette
nouv
elle
valeu
r
dans
la
feuill
e
Excel
.
Lorsq
ue
l'on
ajout
e une
nouv
elle
donn
ée,
celle-
ci se
trouv
e en
positi
on
ListI
ndex
= -1.
On
utilise
pour
cela
un
test
sur la
propri
été
ListI
ndex
.
En
régle
génèr
ale,
cette
propri
été
ListIn
dex à
la
valeu
r -1 à
l'ouv
eture
du
formu
laire.
Si on
sélec
tionn
e la
premi
ère
donn
ée de
la
liste,
la
valeu
r
ListIn
dex
est
égale
à 0,
et
ainsi
de
suite.
Privat
e
Sub
OK_
Click(
)
M
e.Hid
e
If
Me.c
boCo
mbo
Box.L
istInd
ex =
-1
Then
_
She
ets("
Feuil
1").C
ells(1
,
1).En
d(xlD
own).
Offse
t(1,
0).Val
ue =
Me.c
boCo
mbob
ox.Va
lue
End
Sub
Le contrôle RefEdit.
Etape 4 : Cliquez sur la flèche rouge du contrôle pour valider votre sélection.
La boîte à outils
Le Userform (SelectOperation)
Le code
End
Sub
Privat
e
Sub
Cmd
Valid
er_Cl
ick()
'
Teste
si
une
valeu
ra
été
saisie
dans
la
TextB
ox
(Opér
ande)
On
Error
Resu
me
Next
I
f
TextB
ox1.V
alue
= ""
Then
M
sgBo
x
"Vou
s
deve
z
saisir
une
valeu
r
d'opé
rande
"
R
efEdit
1.Set
Focu
s
O
n
Error
GoTo
0
E
xit
Sub
End
If
Set
Plage
Selec
t=
Rang
e(Ref
Edit1.
Text)
MyO
peran
de =
TextB
ox1.V
alue
'
Teste
la
sélel
ectio
n
effect
uée
est
corre
ct
I
f Err
<> 0
Then
M
sgBo
x "La
plage
sélec
tionn
ée
est
invali
de"
R
efEdit
1.Set
Focu
s
O
n
Error
GoTo
0
E
xit
Sub
End
If
'
Effect
ue
l'opér
ation
choisi
e sur
la
plage
de
cellul
es
sélec
tionn
ées
For
Each
Cell
In
Plage
Selec
t
If
Optio
nAddi
tion.V
alue
=
True
Then
Cell.
Value
=
Cell.
Value
+
MyO
peran
de
If
Optio
nSou
stract
ion.V
alue
=
True
Then
Cell.
Value
=
Cell.
Value
-
MyO
peran
de
If
Optio
nMult
iplicat
ion.V
alue
=
True
Then
Cell.
Value
=
Cell.
Value
*
MyO
peran
de
If
Optio
nDivi
sion.
Value
=
True
Then
Cell.
Value
=
Cell.
Value
/
MyO
peran
de
Next
Cell
Selec
tOper
ation.
Hide
Unlo
ad
Selec
tOper
ation
End
Sub
Privat
e
Sub
Cmd
Annul
er_Cl
ick()
Selec
tOper
ation.
Hide
Unlo
ad
Selec
tOper
ation
End
Sub
Convention d'écriture
Le Userform est nommé UserForm1
Le contrôle TextBox est nommé TextBox1
Le bouton OK est nommé CmdOK
Le Userform (frmProgressBar1)
Le code
Privat
e
Sub
Upda
tePro
gress
Bar(
New
Value
As
Singl
e,
Optio
nal
New
Capti
on As
Strin
g)
'
Upda
tes
the
progr
essb
ar
dialo
g
With
frmPr
ogres
sBar
If
Not
IsMis
sing(
New
Capti
on)
Then
.Capt
ion =
New
Capti
on
.
Progr
essB
ar.Val
ue =
New
Value
If
New
Value
=0
Then
.Rep
aint
End
With
End
Sub
Ce contrôle permet grâce à un calendrier de saisir des dates de début et des dates
de fin
de façon simple et sans erreur possible, pour les utiliser ensuite dans votre
application.
Cet exemple a été réalisé sous Excel 2000.
Aspect du contrôle
La boîte à outils
Le Userform (frmConges)
Le code
Privat
e
Sub
User
Form
_Initi
alize(
)
'
Défini
r
butée
mini
pour
contr
ôle
Date
début
(DTPi
cker1
)
M
e.DT
Picke
r1.Mi
nDat
e=
Now
- 60
'
Défini
r
butée
maxi
pour
contr
ôle
Date
fin
(DTPi
cker2
)
M
e.DT
Picke
r2.Ma
xDat
e=
Now
+ 365
End
Sub
Privat
e
Sub
DTPi
cker2
_Cha
nge()
'
Récu
pérati
on
des
dates
sélec
tionn
ées
M
yDat
eDeb
ut =
DTPi
cker1
.Valu
e
M
yDat
eFin
=
DTPi
cker2
.Valu
e
If
MyD
ateFi
n <=
MyD
ateD
ebut
Then
Msg
Box
"La
date
de fin
ne
peut
être
inféri
eure
à la
date
de
début
"
DTP
icker
2.Set
Focu
s
E
nd If
End
Sub
Privat
e
Sub
Cmd
Valid
er_Cl
ick()
M
yDat
eDeb
ut =
DTPi
cker1
.Valu
e
M
yDat
eFin
=
DTPi
cker2
.Valu
e
'
Dans
le
cas
où le
choix
est
effect
ué
sur le
DTPi
cker1
If
MyD
ateFi
n <=
MyD
ateD
ebut
Then
Msg
Box
"La
date
de fin
ne
peut
être
inféri
eure
à la
date
de
début
"
DTP
icker
1.Set
Focu
s
El
se
Unl
oad
Me
'
Mise
en
place
des
donn
ées
dans
la
feuill
e
Base
Cong
és
She
ets("
Base
Cong
és").
Cells(
6553
6,
1).En
d(xlU
p).Off
set(1,
0).Val
ue =
Me.c
boAg
ents.
List _
(
Me.c
boAg
ents.
ListIn
dex)
She
ets("
Base
Cong
és").
Cells(
6553
6,
2).En
d(xlU
p).Off
set(1,
0).Val
ue =
Me.c
boCo
nges.
List _
(
Me.c
boCo
nges.
ListIn
dex)
She
ets("
Base
Cong
és").
Cells(
6553
6,
3).En
d(xlU
p).Off
set(1,
0).Val
ue =
Form
at(My
Date
Debu
t,
"mm/
dd/yy
yy")
She
ets("
Base
Cong
és").
Cells(
6553
6,
4).En
d(xlU
p).Off
set(1,
0).Val
ue =
Form
at(My
Date
Fin,
"mm/
dd/yy
yy")
E
nd If
End
Sub
Privat
e
Sub
Cmd
Annul
er_Cl
ick()
M
e.Hid
e
End
Sub
Quelques infos sur les UserForms
Dans cette rubrique vous trouverez des infos pour la gestion des UserForms.
Le
code
qui
suit
devra
être
dans
le
modu
le de
code
du
User
Form
.
Privat
e
Decla
re
Funct
ion
Find
Wind
owA
Lib
"User
32" _
(
ByVal
lpCla
ssNa
me
As
Strin
g,
ByVal
lpWin
dowN
ame
As
Strin
g) As
Long
Privat
e
Decla
re
Funct
ion
GetW
indo
wLon
gA
Lib
"User
32" _
(
ByVal
hWn
d As
Long,
ByVal
nInde
x As
Long)
As
Long
Privat
e
Decla
re
Funct
ion
SetW
indo
wLon
gA
Lib
"User
32" _
(
ByVal
hWn
d As
Long,
ByVal
nInde
x As
Long,
_
B
yVal
dwNe
wLon
g As
Long)
As
Long
Privat
e
Sub
User
Form
_Acti
vate()
D
im
hWn
d As
Long,
exLo
ng As
Long
h
Wnd
=
Find
Wind
owA(
vbNul
lStrin
g,
Me.C
aptio
n)
e
xLon
g=
GetW
indo
wLon
gA(h
Wnd,
-16)
If
exLo
ng
And
&H88
0000
Then
Set
Wind
owLo
ngA
hWn
d,
-16,
exLo
ng
And
&HF
F77F
FFF
Me.
Hide:
Me.S
how
E
nd If
End
Sub
Privat
e
Sub
User
Form
_Que
ryClo
se(C
ancel
As
Integ
er,
Close
Mode
As
Integ
er)
If
Close
Mode
=
vbFor
mCo
ntrol
Menu
Then
Msg
Box
"Vou
s ne
pouv
ez
pas
utilise
r ce
bouto
n de
ferme
ture."
Can
cel =
True
E
nd If
End
Sub
Minimiser un UserForm.
[ Exe
mple
propo
sé
par
Laure
nt
Longr
e]
Mettr
e la
propri
été
Sho
wMo
dal
du
User
Form
sur
Fals
e
(cette
propri
été
n'exis
te
pas
sous
Excel
97)
Défin
tions
:
1
-
Lorsq
u'un
objet
User
Form
est
moda
l
(Sho
wMo
dal=T
rue),
l'utilis
ateur
doit
fourni
r des
infor
matio
ns
ou
ferme
r
l'obje
t
User
Form
pour
pouv
oir
utilise
r
toute
autre
partie
de
l'appli
catio
n.
2
-
Lorsq
u'un
objet
User
Form
n'est
pas
moda
l
(Sho
wMo
dal=F
alse),
l'utilis
ateur
peut
affich
er
d'autr
es
feuill
es
ou
fenêtr
es
sans
ferme
r cet
objet.
Le
code
qui
suit
devra
être
dans
le
modu
le de
code
du
User
Form
.
Privat
e
Decla
re
Funct
ion
Find
Wind
owA
Lib
"User
32" _
(
ByVal
lpCla
ssNa
me
As
Strin
g,
ByVal
lpWin
dowN
ame
As
Strin
g) As
Long
Privat
e
Decla
re
Funct
ion
GetW
indo
wLon
gA
Lib
"User
32" _
(
ByVal
hWn
d As
Long,
ByVal
nInde
x As
Long)
As
Long
Privat
e
Decla
re
Funct
ion
SetW
indo
wLon
gA
Lib
"User
32" _
(
ByVal
hWn
d As
Long,
ByVal
nInde
x As
Long,
_
B
yVal
dwNe
wLon
g As
Long)
As
Long
Privat
e
Sub
User
Form
_Acti
vate()
D
im
hWn
d As
Long,
exLo
ng As
Long
h
Wnd
=
Find
Wind
owA(
vbNul
lStrin
g,
Me.C
aptio
n)
e
xLon
g=
GetW
indo
wLon
gA(h
Wnd,
-16)
If
(exLo
ng
And
&H20
000)
=0
Then
Set
Wind
owLo
ngA
hWn
d,
-16,
exLo
ng Or
&H20
000
Me.
Hide:
Me.S
how
E
nd If
End
Sub
Vous créez votre bouton normalement et ensuite vous allez dans les propriétés de ce bouton.
1 - Sélectionner la propriété Picture et cliquez sur le bouton avec 3 points. Vous sélectionnez votre image.
2 - Sélectionner la propriété PicturePosition et choisissez l'option 2 - fmPicturepositionLeftBottom.
(C'est celle qui me parait être la mieux adaptée).
Initialisation de checkbox
' *******************************************************
' Permet via un bouton placé sur le formulaire de
' réinitialiser les contrôles Checkbox (Mise à False)
' *******************************************************
Private Sub CmdInitCheckBox_Click()
Dim Ctrl As MSForms.Control
' Remise à False des cases à cocher
For Each Ctrl In UserForm1.Controls
If TypeOf Ctrl Is MSForms.CheckBox Then Ctrl.Value = False
Next Ctrl
End Sub
Vous trouverez dans cette rubrique des exemples concernant des programmes
s'appliquant aux feuilles de calcul.
I=I
+1
Cell
s(I, 1)
=
Cell
E
nd If
Next
Cell
End
Sub
For
J=1
To 3
Tabl(I
, J) =
Tabl(I
, J) *
2
Nex
tJ
N
ext I
Appli
catio
n.Scr
eenU
pdati
ng =
False
Rang
e("A1
:C10
00").
Value
=
Tabl
End
Sub
2-
Nom
bre
de
colon
nes
comp
rises
entre
la
colon
ne A
(vide
ou
pas)
et
la
derni
ère
cellul
e
utilisé
e
(cette
sélec
tion
peut
conte
nir
des
colon
nes
vides
).
Sub
Nom
breD
eCol
onne
s()
NbCo
lonne
s=
Cells.
Speci
alCell
s(xlC
ellTy
peLa
stCell
).Col
umn
MsgB
ox
NbCo
lonne
s
End
Sub
Worksheets("Feuil1").Protect UserInterfaceOnly:=True permet de manipuler par macro une feuille protégée, tout en laissant la protection
active par rapport aux manipulations de l'utilisateur.
Instruction à mettre dans Workbook_Open, cette propriété n'étant pas enregistrée avec le classeur.
Ecrire dans un fichier de type texte (Date, heure) à l'ouverture ou la fermeture d'Excel.
Lire et incrémenter un fichier INI.
Lire les enregistrements dans un fichier texte.
Lister des fichiers texte et les ouvrir avec GetOpenFileName.
Lister tous les fichiers XLS dans une feuille de calcul.
Réaliser une copie du classeur actif sous un autre nom.
Récupérer le nom d'un fichier sélectionné par GetOpenFileName.
Privat
e
Sub
Work
book
_Ope
n()
D
im
LogFi
le As
Strin
g
L
ogFil
e=
"C:\E
xcel\
activit
e.log"
C
hDir
"C:\E
xcel"
D
onne
es =
Now(
)
O
pen
LogFi
le For
Appe
nd
Shar
ed As
#1
P
rint
#1,
"Ouv
ertur
e
d'Exc
el a "
&
Donn
ees
C
lose
#1
End
Sub
Privat
e
Sub
Work
book
_Bef
oreCl
ose(
Canc
el As
Boole
an)
D
im
LogFi
le As
Strin
g
L
ogFil
e=
"C:\E
xcel\
activit
e.log"
C
hDir
"C:\E
xcel"
D
onne
es =
Now(
)
O
pen
LogFi
le For
Appe
nd
Shar
ed As
#1
P
rint
#1,
"Fer
metur
e
d'Exc
el a "
&
Donn
ees
P
rint
#1,
"------
-------
-------
-------
-------
"
C
lose
#1
End
Sub
E
xem
ple
de
fichi
er
géné
ré
Ne pas oublier de copier les deux lignes qui suivent en tête de votre module.
Sub IncrémenteIni()
Dim Compteur As String * 10
GetPrivateProfileStringA "Numero", "NUMERO", 1, Compteur, 10, "C:\Windows\Increm.ini"
WritePrivateProfileStringA "Numero", "NUMERO", CStr(CLng(Compteur) + 1), _
"C:\Windows\Increm.ini"
MsgBox "Le compteur est incrémenté à : " & Compteur & "."
If Compteur = 1000 Then
MsgBox (" La valeur de 1000 est atteinte. Remise à 1 du compteur.")
Compteur = 1
WritePrivateProfileStringA "Numero", "NUMERO", CStr(CLng(Compteur)), _
"C:\Windows\Increm.ini"
End If
End Sub
Lire les enregistrements dans un fichier texte
Ce programme lit les différents enregistrements dans un fichier texte et les inscrits
dans une feuille de calcul.
Sub LireFichierTexte()
Dim Prenom, Nom, Age
' Ouvre le fichier en lecture
Open "C:\Excel\Listing.txt" For Input As #1
' Effectue la boucle jusqu'à la fin du fichier
Do While Not EOF(1)
' Lit les données dans trois variables
Input #1, Prenom, Nom, Age
' Ecrit les données dans la feuille de calcul à partir de la ligne 2
Range("A65536").End(xlUp)(2).Value = Prenom
Range("B65536").End(xlUp)(2).Value = Nom
Range("C65536").End(xlUp)(2).Value = Age
Loop
' Ferme le fichier
Close #1
End Sub
Le résultat
Affich
e la
boîte
de
dialo
gue
stand
ard
Ouvri
r et lit
un
nom
de
fichie
r tapé
ou
sélec
tionn
é par
l'utilis
ateur
sans
réelle
ment
ouvrir
les
fichie
rs.
Sub
Choix
Fichi
erTex
teAO
uvrir(
)
C
hDir
"C:\"
C
hDir
"c:\E
xcel"
C
eFich
ier
=App
licatio
n.Get
Open
Filen
ame(
"Text
Files
(*.txt)
,
*.txt")
If
VarTy
pe(C
eFich
ier) =
vbBo
olean
Then
Exit
Sub
El
se
Wor
kboo
ks.O
penT
ext
Filen
ame:
=CeF
ichier
,
Origi
n:=xl
Wind
ows,
_
Start
Row:
=1,
Data
Type:
=xlD
elimit
ed,
Text
Quali
fier:=
xlDou
bleQ
uote,
_
Cons
ecuti
veDel
imiter
:=Fal
se,
Tab:=
True,
Semi
colon
:=Fal
se,
Com
ma:=
False
,_
Spac
e:=F
alse,
Other
:=Fal
se,
FieldI
nfo:=
Array
(1, 1)
E
nd If
End
Sub
Funct
ion
Short
Filen
ame(
Long
Filen
ame
As
Strin
g) As
Strin
g
For i
=
Len(L
ongFi
lena
me)
To 1
Step
-1
If
Mid(L
ongFi
lena
me, i,
1) =
"\"
Then
Exit
For
N
ext
S
hortFi
lena
me =
Mid(L
ongFi
lena
me, i
+ 1,
Len(L
ongFi
lena
me))
N
ame
Sans
Exten
sion
=
Mid(
Short
Filen
ame,
1,
Len(
Short
Filen
ame)
- 4)
End
Funct
ion
Appli
catio
n.Vol
atile
I
nsere
Che
minCl
asse
ur =
Appli
catio
n.Call
er.Pa
rent.
Pare
nt.Ful
lNam
e
End
Funct
ion
Le code
If
Cell.
Form
ula <
> ""
Then
I
f
Cell.I
nterio
r.Col
orInd
ex =
Color
Index
Then
Temp
Sum
=
Temp
Sum
+_
Cell.
Value
End
If
N
ext
Cell
O
n
Error
GoTo
0
S
et
Cell
=
Nothi
ng
S
umBy
Color
=
Temp
Sum
End
Funct
ion
Vous trouverez dans cette rubrique un recueil de formules pouvant vous rendre de
précieux services.
Vous trouverez dans cette rubrique un recueil de graphiques pouvant vous rendre de
précieux services.
Vous trouverez dans cette rubrique des exemples pour créer, modifier ou personnaliser
les menus d'Excel.
Le
code
pour
insta
ller
l'item
dans
le
men
u
Outil
s
Sub
AddIt
emIn
Menu
Outils
()
Wit
h
Appli
catio
n.Co
mma
ndBa
rs("T
ools")
.Cont
rols.A
dd(m
soCo
ntrol
Butto
n,
befor
e:=7)
.
Capti
on =
"Exe
mple"
.
OnAc
tion =
"Affic
he"
.
FaceI
d=
343
En
d
With
End
Sub
Le
code
pour
effac
er
l'item
du
men
u
Outil
s
Sub
Effac
eItem
()
Co
mma
ndBa
rs("T
ools")
.Cont
rols("
Exem
ple").
Delet
e
End
Sub
Le
code
de
l'acti
on
asso
ciée
à
l'item
Exe
mple
Sub
Affich
e()
Dim
Msg,
Style,
Title
Msg
=
"Vou
s
avez
ajout
é un
item
intitul
é
{Exe
mple}
dans
le
menu
Outils
"
Style
=
vbYe
s
Title
=
"Ajou
t
d'ite
ms
dans
le
menu
Outils
-©
Eric
REN
AUD
-
11/19
99"
Resp
onse
=
MsgB
ox(M
sg,
Style,
Title)
End
Sub
.Capt
ion =
"Exe
mple"
With .
Contr
ols.A
dd(m
soCo
ntrol
Butto
n)
.
Capti
on =
"Tri
crois
sant"
.F
aceId
= 210
.
Begin
Grou
p=
True
.
OnAc
tion =
"Affic
he"
En
d
With
Wit
h
.Cont
rols.A
dd(m
soCo
ntrol
Butto
n)
.
Capti
on =
"Tri
décro
issan
t"
.F
aceId
= 211
.
Begin
Grou
p=
True
.
OnAc
tion =
"Affic
he"
En
d
With
End
With
End
Sub
Le
code
pour
supp
rimer
le
men
u
Exe
mple
.
Sub
Supp
rime
Nouv
eauM
enu()
Com
mand
Bars(
1).Co
ntrols
("Exe
mple"
).Del
ete
End
Sub
Le
code
de
l'acti
on
asso
ciée
aux
item
s
Exe
mple
Sub
Affich
e()
Dim
Msg,
Style,
Title
Msg
=
"Vou
s
avez
ajout
é un
nouv
eau
menu
{Exe
mple}
dans
la
barre
de
menu
s"
Style
=
vbYe
s
Title
=
"Ajou
t d'un
nouv
eau
menu
-©
Eric
REN
AUD
-
11/19
99"
Resp
onse
=
MsgB
ox(M
sg,
Style,
Title)
End
Sub
Le
code
pour
ajout
er le
men
u
Exe
mple
avan
t le
men
u
Form
at.
Ce
code
est
identi
que à
l'exe
mple
précé
dent
sauf
qu'il
faut
ajout
er
befor
e:=5,
5
étant
le le
numé
ro du
menu
avant
leque
l on
veut
insér
er le
menu
Exem
ple.
La
ligne
de
code
:
With
Com
mand
Bars(
1).Co
ntrols
.Add(
mso
Contr
olPop
up)
devie
nt :
With
Com
mand
Bars(
1).Co
ntrols
.Add(
mso
Contr
olPop
up,be
fore:
=5)
Le
code
pour
ajout
er le
men
u
cont
extu
el.
Sub
Inser
eMen
uCon
textu
el()
With
Appli
catio
n.Co
mma
ndBa
rs("C
ell").
Contr
ols.A
dd(m
soCo
ntrol
Butto
n)
.
Capti
on =
"Exe
mple"
.
Begin
Grou
p=
True
.F
aceId
= 343
.
OnAc
tion =
"Affic
he"
End
With
End
Sub
Le
code
pour
supp
rimer
le
men
u
cont
extu
el.
Sub
Supp
rime
Menu
Cont
extue
l()
Appli
catio
n.Co
mma
ndBa
rs("C
ell").
Rese
t
End
Sub
Le
code
de
l'acti
on
asso
ciée
à
l'item
Exe
mple
Sub
Affich
e()
Dim
Msg,
Style,
Title
Msg
=
"Vou
s
avez
ajout
é un
item
intitul
é
{Exe
mple}
dans
le
menu
Outils
"
Style
=
vbYe
s
Title
=
"Ajou
t
d'ite
m
dans
menu
conte
xtuel
-©
Eric
REN
AUD
-
11/19
99"
Resp
onse
=
MsgB
ox(M
sg,
Style,
Title)
End
Sub
2 - Ajouter un menu popup depuis l'item Exemple dans menu contextuel
(clic droit souris).
Le
code
pour
ajout
er le
men
u
cont
extu
el.
Sub
Inser
eMen
uCon
textu
ePop
Up()
With
Appli
catio
n.Co
mma
ndBa
rs("C
ell")
Wit
h
.Cont
rols.A
dd(m
soCo
ntrol
Popu
p)
.
Capti
on =
"Exe
mple"
.
Begin
Grou
p=
False
'
Sous
-
menu
1
(Exe
mple
1.1)
.
Contr
ols.A
dd
(mso
Contr
olButt
on)
.
Contr
ols(1)
.Capt
ion =
"Exe
mple
1.1"
With .
Contr
ols(1)
.OnA
ction
=
"Affic
he"
.Face
Id =
351
E
nd
With
'
Sous
-
menu
2
(Exe
mple
1.2)
.
Contr
ols.A
dd
(mso
Contr
olButt
on)
.
Contr
ols(2)
.Capt
ion =
"Exe
mple
1.2"
With .
Contr
ols(2)
.OnA
ction
=
"Affic
he"
.Face
Id =
352
E
nd
With
En
d
With
End
With
End
Sub
Le
code
pour
supp
rimer
le
men
u
cont
extu
el.
Sub
Supp
rime
Menu
Cont
extue
l()
Appli
catio
n.Co
mma
ndBa
rs("C
ell").
Rese
t
End
Sub
Le
code
de
l'acti
on
asso
ciée
à
l'item
Exe
mple
Sub
Affich
e()
Dim
Msg,
Style,
Title
Msg
=
"Vou
s
avez
ajout
é un
item
intitul
é
{Exe
mple}
dans
le
menu
Outils
"
Style
=
vbYe
s
Title
=
"Ajou
t
d'ite
m
dans
menu
conte
xtuel
-©
Eric
REN
AUD
-
11/19
99"
Resp
onse
=
MsgB
ox(M
sg,
Style,
Title)
End
Sub
Le
code
pour
rendr
e
inacc
essib
le
l'item
Outil
s.
Sub
Inhib
eMen
uOuti
ls()
Com
mand
Bars(
1).Co
ntrols
(6).E
nable
d=
False
End
Sub
Le
code
pour
rendr
e
acce
ssibl
e
l'item
Outil
s.
Sub
Affich
eMen
uOuti
ls()
Com
mand
Bars(
1).Co
ntrols
(6).E
nable
d=
True
End
Sub
Le
code
pour
rendr
e
inacc
essib
le
l'item
Outil
s,
Prote
ction
.
Sub
Inhib
eOuti
lsProt
ectio
n()
Com
mand
Bars(
1).Co
ntrols
(6).C
ontrol
s(6).
Enabl
ed =
False
End
Sub
Le
code
pour
rendr
e
acce
ssibl
e
l'item
Outil
s,
Prote
ction
.
Sub
Affich
eOuti
lsProt
ectio
n()
Com
mand
Bars(
1).Co
ntrols
(6).C
ontrol
s(6).
Enabl
ed =
True
End
Sub
Le
code
pour
supp
rimer
l'intit
ulé
Outil
s de
la
barre
de
men
us.
Sub
Supp
rimeI
ntitul
eOuti
ls()
Com
mand
Bars(
1).Co
ntrols
(6).Vi
sible
=
False
End
Sub
Le
code
pour
réaffi
cher
l'intit
ulé
Outil
s
dans
la
barre
de
men
us.
Sub
Reins
talleI
ntitul
eOuti
ls()
Com
mand
Bars(
1).Co
ntrols
(6).Vi
sible
=
True
End
Sub
Vous trouverez dans cette rubrique des exemples de programmes VBA pour effectuer
différents types de sélection de cellules.
If
Cll.V
alue
=
LaVal
eur
Then
plg =
plg &
Cll.A
ddres
s() &
","
N
ext
Cll
If
Len(p
lg) >
0
Then
Rang
e(Left
(plg,
Len(p
lg) -
1)).S
elect
End
Sub
Le code
Dim
Env
Stri
ng,
Indx
,
Msg
,
Path
Len
Indx
=1
'
Initi
alis
e
l'ind
ex à
1
Do
'
Extr
ait
la
vari
able
d'e
nvir
onn
em
ent
(AU
_LO
CAL
_DI
R)
Env
Stri
ng
=
Envi
ron
(Ind
x)
'
Véri
fie
l'en
trée
AU_
LOC
AL_
DIR
If
Left
(Env
Stri
ng,
13 )
=
"AU
_LO
CAL
_DI
R="
The
n
'
Extr
ait
la
lon
gue
ur
et
met
l'en
trée
dan
s
une
vari
able
.
Path
Len
=
Len
( En
viro
n(
"AU
_LO
CAL
_DI
R" ))
Msg
=
Mid
(Env
Stri
ng,
14 ,
Path
Len)
Exit
Do
Else
'
Pas
d'e
ntré
e
AU_
LOC
AL_
DIR,
don
c on
incr
ém
ent
e.
Indx
=
Indx
+1
End
If
Loo
p
Unti
l
Env
Stri
ng
= ""
If
Path
Len
>0
The
n
Msg
Box
Msg
'
Af
che
le
mes
sag
e
"f:\r
ena
ud\
aud
ros\
tmp
"
Else
Msg
Box
" Il
n'ex
iste
pas
de
vari
able
"&
"d'e
nvir
onn
eme
nt
AU_
LOC
AL_
DIR.
"
End
If
End
Sub
Cette fonction permet de récupérer le nom de login (et non pas le nom
d'utilisateur déclaré dans Excel).
Le code
Decl
are
Fun
ctio
n
WN
etG
etU
ser
Lib
"mp
r.dll
"
Alia
s
"WN
etG
etU
serA
"(
ByV
al
lpN
ame
As
Stri
ng ,
_
ByV
al
lpUs
erN
ame
As
Stri
ng ,
lpnL
eng
th
As
Lon
g)
As
Lon
g
Con
st
NoE
rror
=0
Fun
ctio
n
Get
Use
rNa
me
()
Con
st
lpnL
eng
th
As
Inte
ger
=
255
Dim
stat
us
As
Inte
ger
Dim
lpN
ame
,
lpUs
erN
ame
As
Stri
ng
lpUs
erN
ame
=
Spa
ce$
(lpn
Len
gth
+1
)
stat
us
=
WN
etG
etU
ser(l
pNa
me,
lpUs
erN
ame
,
lpnL
eng
th)
If
stat
us
=
NoE
rror
The
n
lpUs
erN
ame
=
Left
$
(lpU
ser
Na
me,
InSt
r
(lpU
ser
Na
me,
Chr
(0)
)-1
)
Else
Msg
Box
"Im
pos
sibl
e
d'ob
teni
r le
logi
n."
End
End
If
Get
Use
rNa
me
=
lpUs
erN
ame
End
Fun
ctio
n
Sub AfficheLogin()
MsgBox GetUserName
End Sub
Récupérer une valeur stockée dans la base de registre.
Cette procédure permet de récupérer une valeur stockée dans la base de registre.
Cette valeur est stockée dans la clé :
HKEY_CURRENT_USER\Software\VB and VBA Program Settings\
Nu
mFa
c=
Get
Sett
ing
(ap
pna
me:
=
"Fac
ture
Gra
nd
Crès
",
sect
ion:
=
"Nu
mFa
ctur
e" ,
key:
=
"Nu
mér
o" )
'
Incr
ém
ent
atio
n
du
N°
de
fact
ure
Nu
mFa
c=
Nu
mFa
c+
1
'
Ecri
ture
de
la
nou
vell
e
vale
ur
Nu
mF
ac
dan
s la
bas
e
de
regi
stre
Sav
eSe
ttin
g
app
nam
e:=
"Fac
ture
Gra
nd
Crès
",
sect
ion:
=
"Nu
mFa
ctur
e" ,
key:
=
"Nu
mér
o" ,
setti
ng:
=Nu
mFa
c
End
Sub
Priv
ate
Sub
Info
Reg
istr
y()
'
Lect
ure
de
la
vale
ur
dan
s la
bas
e
de
regi
stre
Nu
mFa
c=
Get
Sett
ing
(ap
pna
me:
=
"Fac
ture
Gra
nd
Crès
",
sect
ion:
=
"Nu
mFa
ctur
e" ,
key:
=
"Nu
mér
o" )
'
Si
auc
une
vale
ur
n'es
t
pré
sen
te
dan
s la
bas
e
de
regi
stre
...
If
Nu
mFa
c=
""
The
n
Nu
mde
part
=
Inpu
tBox
( "In
diqu
er le
N°
de
votr
e
der
nièr
e
fact
ure
man
uell
e." ,
"Init
ialis
atio
n du
num
éro
de
fact
ure"
)
' Si
on
cliq
ue
sur
le
bou
ton
Ann
uler
, fin
de
pro
céd
ure
If
Nu
mde
part
= ""
The
n
End
'Sin
on,
on
insc
rit
le
nu
mér
o
sais
i
dan
s la
boît
e
de
dial
ogu
e
Sav
eSe
ttin
g
app
nam
e:=
"Fac
ture
Gra
nd
Crès
",
sect
ion:
=
"Nu
mFa
ctur
e" ,
key:
=
"Nu
mér
o" ,
setti
ng:
=Nu
mde
part
End
If
End
Sub
On
Erro
r
Res
ume
Nex
t
Del
ete
Sett
ing
"Fac
ture
Gra
nd
Crès
"
End
Sub
Echanges de données entre Excel et Word
Page mise à jour le : 28/03/2001
Vous trouverez dans cette rubrique des exemples de programmes permettant d'envoyer
des données Excel vers Word ou récupérer des données Word dans Excel.
Ces exemples fonctionnent avec Word et Excel 2000. Ils n'ont pas été testé sous la
version 97.
Pour que ces exemples fonctionnent, vous devrez créer une référence de bibliothèques
d'objets de Word.
Dans Excel, choisissez la commande Références du menu Outils de Visual Basic Editor
et cochez Microsoft Word 9.0 Object Library.
Récupérer les données d'un document Word et les copier dans Excel.
Copier des données Excel dans un document Word (format tableau).
Copier des données Excel dans un nouveau document Word (format tabulation).
Copier des données Excel dans un tableau Word afin de le compléter.
Récupérer les données d'un document Word et les copier dans Excel
Ce programme permet d'aller chercher des données dans un document Word, de les
copier, de les coller dans Excel et de refermer Word.
Sub DonnéesWordVersExcel()
Dim DocWord As Word.Document
Dim AppWord As Word.Application
Set AppWord = New Word.Application
AppWord.ShowMe
AppWord.Visible = True
'Ouvre le document Word (Fichier.doc) et effectue une copie des données
Set DocWord = AppWord.Documents.Open( "c:\Excel\Fichier.doc" , ReadOnly:= True )
With AppWord
.Selection.WholeStory
.Selection.Copy
End With
' Copie des données dans Excel
ThisWorkbook.Worksheets( "Feuil1" ).Paste
' Fermeture de Word
AppWord.Application.Quit
Application.CutCopyMode = False
End Sub
Dim
Doc
Wor
d As
Wor
d.D
ocu
men
t
Dim
App
Wor
d As
Wor
d.A
ppli
cati
on
Set
App
Wor
d=
New
Wor
d.A
ppli
cati
on
Appl
icati
on.
Disp
layA
lerts
=
True
App
Wor
d.Sh
ow
Me
App
Wor
d.Vi
sibl
e=
True
'Ou
vre
le
doc
um
ent
Wor
d
Set
Doc
Wor
d=
App
Wor
d.D
ocu
men
ts.O
pen
( "c:
\exc
el\Fi
chie
r.do
c" ,
Rea
dOn
ly:=
Fals
e)
'
Cop
ie
les
don
née
s
Exc
el
This
Wor
kbo
ok.
Wor
ksh
eets
( "Fe
uil1
" ).R
ang
e( "
A1:
B6"
).Co
py
'
Coll
e
les
don
née
s
dan
s
Wor
d
Doc
Wor
d.Ra
nge.
Past
eSp
ecia
l
Appl
icati
on.
Cut
Cop
yMo
de
=
Fals
e
Doc
Wor
d.A
ppli
cati
on.A
ctiv
eDo
cum
ent.
Sav
e
App
Wor
d.A
ppli
cati
on.
Quit
End
Sub
Les La
do cop
nn ie
ées da
Exc ns
el Wo
rd
Les La
do cop
nn ie
ées da
Exc ns
el Wo
rd
Vous trouverez dans cette rubrique des exemples de programmes permettant d'envoyer
des données Excel vers Access, de récupérer des données d'Access dans Excel ou de
mettre à jour des enregistrements dans Access depuis Excel.
Ces exemples fonctionnent avec Access et Excel 2000. Ils n'ont pas été testé sous la
version 97.
Pour que ces exemples fonctionnent, vous devrez créer une référence de bibliothèques
d'objets d'accès
aux données de Microsoft (DAO). Dans Excel, choisissez la commande Références du
menu Outils de Visual Basic Editor et cochez Microsoft DAO 3.6 Object Library.
Un lien intéressant (mes sources) traitant de External Data Access with DAO (Data Access
Objects) and ADO (ActiveX Data Objects)
Envoyer les données d'une feuille Excel vers une table Access.
Récupérer les données d'une table Access dans une feuille de calcul Excel.
Récupérer les données d'une table Access dans une feuille de calcul Excel via une
requête .
Mettre à jour un enregistrement dans Access depuis Excel.
Envoyer les données d'une feuille Excel vers une table Access
Ce programme permet de copier les données d'une feuille de calcul Excel
vers une table Access.
Sub WritingWorksheetData_DAO()
Dim Plage As Range
Dim Array1 As Variant
Dim x As Variant
Dim Db1 As Database
Dim Rs1 As Recordset
' Ouverture de la base de données Commandes.mdb
Set Db1 = DBEngine.OpenDatabase(ThisWorkbook.Path & "\Commandes.mdb" )
' Ouverture de la table Factures
' Un objet Recordset représente les enregistrements d'une table
Set Rs1 = Db1.OpenRecordset( "Factures" , dbOpenDynaset)
' Détermination de la taille de la plage à envoyer vers Access
Set Plage = Worksheets( "DAOSheet" ).Range( "A1" ).CurrentRegion.Offset( 1 , 0 )
Set Plage = Plage.Resize(Plage.Rows.Count - 1 , Plage.Columns.Count)
Plage.Select
' Lecture de la plage pour renvoyer une valeur contenant un tableau
Array1 = Plage.Value
' Ecriture des données depuis Excel vers les enregistrement de la table Factures
For x = 1 To UBound (Array1, 1 )
With Rs1
.AddNew
.Fields( "NoFacture" ) = Array1(x, 1 )
.Fields( "Client" ) = Array1(x, 2 )
.Fields( "Date" ) = Array1(x, 3 )
.Fields( "Solde" ) = Array1(x, 4 )
.Update
End With
Next
' Fermeture de la base Commandes.mdb
Db1.Close
' Effacement des données copiées vers la base (sauf les titres)
With Selection.CurrentRegion
Intersect(.Cells, .Offset( 1 )).Select
End With
Selection.ClearContents
End Sub
Les
do
nn
ées
Exc
el
Les
données
copiées
dans la
table
Factures
Récupérer les données d'une table Access dans une feuille de calcul Excel
Ce programme permet de récupérer les données d'une table Access
et de les copier dans une feuille Excel.
Sub CopyFromRecordset_DAO()
Dim Db1 As Database
Dim Rs1 As Recordset
' Ouverture de la base de données
Set Db1 = DBEngine.OpenDatabase(ThisWorkbook.Path & "\Commandes.mdb" )
' Ouverture de la table Factures
' Un objet Recordset représente les enregistrements d'une table
Set Rs1 = Db1.OpenRecordset( Name := "Factures" , Type :=dbOpenDynaset)
' Effacement des données existantes dans la WorkSheet (sauf les titres)
' et copie des enregistrements
With Worksheets( "DonnéesDataBase" ).Range( "A2" )
With Selection.CurrentRegion
Intersect(.Cells, .Offset( 1 )).Select
End With
Selection.ClearContents
.CopyFromRecordset Rs1
End With
'Fermeture de la Base de données
Db1.Close
End Sub
Récupérer les données d'une table Access dans une feuille de calcul Excel
via une requête
Ce
progr
amm
e
perm
et de
récup
érer
les
donn
ées
d'une
table
Acce
ss
par
l'inter
médi
are
d'une
requê
te et
de
les
copie
r
dans
une
feuill
e
Excel
.
Défini
tion
des
élém
ents
utilisé
s:
Nom
de la
base
de
donn
ées
-->
Com
man
des.
mdb
Table
poss
édant
les
donn
ées à
récup
érer
dans
Excel
-->
Fac
tures
Cha
mps
de la
table
Factu
res
-->
NoFa
cture
,
Clien
t,
Date
et
Sold
e
Nom
de la
requê
te -
->
Fact
ures
pour
un
clien
t
Code
SQL
-->
SEL
ECT
Fact
ures.
Nofa
cture
,
Fact
ures.
Clien
t,
Fact
ures.
Date,
Fact
ures.
Sold
e
FRO
M
Fact
ures
WHE
RE
(((Fa
cture
s.Cli
ent)
Like
"ALL
EE
DES
VINS
"));
Feuill
e de
calcul
Excel
recev
ant
les
donn
ées
de la
table;
-->
Don
nées
Data
Base
Sub
Cop
yFr
om
Rec
ord
set
_DA
O()
Dim
Db1
As
Dat
aba
se
Dim
Rs1
As
Rec
ords
et
'
Ouv
ertu
re
de
la
bas
e
de
don
née
s
Set
Db1
=
DBE
ngin
e.O
pen
Dat
aba
se(T
his
Wor
kbo
ok.P
ath
&
"\Co
mm
and
es.
mdb
")
'
Ouv
ertu
re
de
la
tabl
e
Fact
ure
s
'
Un
obje
t
Rec
ord
set
repr
ése
nte
les
enr
egis
tre
me
nts
d'u
ne
tabl
e
Set
Rs1
=
Db1
.Op
enR
ecor
dset
( Na
me :
=
"Fac
ture
s
pou
r un
clie
nt" ,
Typ
e
:=d
bOp
enS
nap
shot
)
'
Effa
cem
ent
des
don
née
s
exis
tant
es
dan
s la
Wor
kSh
eet
(sa
uf
les
titre
s)
'
et
copi
e
des
enr
egis
tre
me
nts
Wit
h
Wor
ksh
eets
( "D
onn
ées
Dat
aBa
se" )
.Ran
ge(
"A2"
)
Wit
h
Sele
ctio
n.C
urre
ntR
egio
n
Inte
rsec
t(.C
ells,
.Off
set(
1 )).
Sele
ct
End
Wit
h
Sele
ctio
n.Cl
ear
Con
tent
s
.Co
pyFr
omR
ecor
dset
Rs1
End
Wit
h
'Fer
met
ure
de
la
Bas
e
de
don
née
s
Db1
.Clo
se
End
Sub
Les
do
nn
ées
de
la
tab
le
Fac
tur
es
Défini
tion
des
élém
ents
utilisé
s:
Nom
de la
base
de
donn
ées
-->
Com
man
des.
mdb
Table
poss
édant
les
donn
ées à
mettr
eà
jour;
-->
Fact
ures
Cha
mp
de la
table
Factu
res à
mettr
eà
jour
-->
Sold
e
Rech
erche
à
partir
du
-->
NoF
actur
e
Note
: Afin
de
propo
ser
les 2
possi
biltés
de
synta
xe,
l'exe
mple
se
propo
se de
tester
quel
est le
type
de la
varia
ble
Nofa
cture
car la
synta
xe
est
différ
ente
suiva
nt
que
la
varia
ble
est
un
nomb
re
(vbInt
eger)
ou
une
chaîn
e
(vbSt
ring).
Sub
Upd
ate
Dat
aAc
ces
s_D
AO(
)
Dim
Db1
As
Dat
aba
se
Typ
eVar
iabl
e=
VarT
ype
(Nu
mFa
ctur
e)
'
Ouv
ertu
re
de
la
bas
e
de
don
née
s
Set
Db1
=
DBE
ngin
e.O
pen
Dat
aba
se(T
his
Wor
kbo
ok.P
ath
&
"\Co
mm
and
es.
mdb
")
'
Mis
eà
jour
de
l'en
regi
stre
me
nt
If
Typ
eVar
iabl
e=
2
The
n
' La
vari
able
Nu
mfa
ctur
e
est
de
typ
e
vbIn
teg
er
(2)
Db1
.Exe
cute
"UP
DAT
E
Fact
ures
SET
Sold
e=
'Oui'
WH
ERE
NoF
actu
re =
"&
Nu
mFa
ctur
e
Else
' La
vari
able
Nu
mfa
ctur
e
est
de
typ
e
vbS
trin
g
(8)
Db1
.Exe
cute
"UP
DAT
E
Fact
ures
SET
Sold
e=
'Oui'
WH
ERE
NoF
actu
re =
'"&
Nu
mFa
ctur
e&
"'"
End
If
Db1
.Clo
se
End
Sub
Téléchargement
Page mise à jour le : 23/04/2001
Vous trouverez sur cette page, des exemples présentés dans les différentes rubriques et
disponibles en téléchargement.
Boite
de
dialo
gue
avec
bouto
ns
d'opti
ons
Boite
de
dialo
gue
avec
liste
dérou
lante
Boite
de
dialo
gue
avec
liste
dérou
lante
modif
iable
Boite
de
dialo
gue
avec
liste
dérou
lante
modif
iable
simpli
fiée
Boite
de
dialo
gue
avec
liste
dérou
lante
à
sélec
tion
multi
ple
Boite
de
dialo
gue
avec
liste
dérou
lante
à
deux
colon
nes
Boite
de
dialo
gue
avec
liste
dérou
lante
comb
inée
Le
contr
ôle
Cale
ndar
(Cale
ndrier
)