Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

(vba) action sur une feuille, impossible !

6 réponses
Avatar
j-pascal
Bonjour,

Pour une raison que j'ignore, je n'arrive pas à agir sur une feuille de
calcul ... Le problème se situe à la fin de ce "morceau" de code ; mes
remarques sont entre crochets [ ]. Je précise que le code est dans un
module de feuille et qu'il est lancé depuis cette même feuille à partir
d'un bouton de boite à outils de contrôle.

Merci d'avance pour vos lumières.

'------------------------------
Private Sub MAJ_Click()
Dim LeNom As String
Dim typeFichier As String
Dim Titre As String
Dim nomFichier As Variant 'String = non
Dim réponse As String
Dim NbItems As Integer
Dim NouvelExport As String


DoEvents

Application.ScreenUpdating = False
LeNom = ActiveWorkbook.Name 'prévient les modifs

typeFichier = "Fichiers, *.csv; *.xls"
Titre = "sélectionnez le fichier à importer"

ChDrive "C"

On Error Resume Next

If Dir("C:\Documents and Settings\toto\Bureau", vbDirectory) <> ""
Then
ChDir "C:\Documents and Settings\toto\Bureau"
Else
ChDir "C:\Documents and Settings"
End If

If Err <> 0 Then
Err = 0
MsgBox "Aucun des répertoires n'existe !"
Exit Sub
End If

nomFichier = Application.GetOpenFilename(typeFichier, , Titre)

typeFichier = "Fichiers, *.csv; *.xls"
Titre = "Sélectionnez le fichier à importer"

If nomFichier = False Then
MsgBox "Aucun fichier n'a été sélectionné."
Exit Sub
Else
nomFichier = Dir(nomFichier)
réponse = MsgBox("Vous avez sélectionné le fichier : " &
nomFichier & Chr(10) _
& Chr(10) & "Confirmez-vous ce choix ?", vbYesNo +
vbQuestion, "validation en cours")
If réponse = vbNo Then
Exit Sub
End If
End If

If Right(nomFichier, 3) = "xls" Then
Workbooks.Open nomFichier
Else
Workbooks.OpenText nomFichier, Tab:=True, semicolon:=True,
local:=True
End If

'[la ligne suivante ne fonctionne pas]

Cells.Copy

'[pour vérifier que cette nouvelle feuille était bien active, j'ai
essayé plusieurs trucs comme : ]

'TheName = ActiveSheet.Name
'MsgBox TheName

'[ce qui me renvoit bien le nom de l'onglet !]

'[J'ai essayé : ]

'ActiveWorkbook.Sheets("TheName").Range("B3").Select

'[ ... mais seule la cellule A1 reste sélectionnée ! ]

'[J'ai essayé : ]

'Sheets("TheName").Cells.Copy

'[... en vain !]

'[J'ai enfin essayé : ]

'Application.EnableEvents = True
'Do Events

End Sub
'------------------------------

6 réponses

Avatar
Daniel.C
Bonjour.
C'est le problème des boutons de commande. La feuille par défaut n'est pas
la feuille active, mais la feuille du bouton.
"cells.copy" fait référence à la feuille du bouton, même si ce n'est pas la
feuille active. Mets :
with activesheet
.Cells.Copy
Cordialement.
Daniel
"j-pascal" a écrit dans le message de news:

Bonjour,

Pour une raison que j'ignore, je n'arrive pas à agir sur une feuille de
calcul ... Le problème se situe à la fin de ce "morceau" de code ; mes
remarques sont entre crochets [ ]. Je précise que le code est dans un
module de feuille et qu'il est lancé depuis cette même feuille à partir
d'un bouton de boite à outils de contrôle.

Merci d'avance pour vos lumières.

'------------------------------
Private Sub MAJ_Click()
Dim LeNom As String
Dim typeFichier As String
Dim Titre As String
Dim nomFichier As Variant 'String = non
Dim réponse As String
Dim NbItems As Integer
Dim NouvelExport As String


DoEvents

Application.ScreenUpdating = False
LeNom = ActiveWorkbook.Name 'prévient les modifs

typeFichier = "Fichiers, *.csv; *.xls"
Titre = "sélectionnez le fichier à importer"

ChDrive "C"

On Error Resume Next

If Dir("C:Documents and SettingstotoBureau", vbDirectory) <> "" Then
ChDir "C:Documents and SettingstotoBureau"
Else
ChDir "C:Documents and Settings"
End If

If Err <> 0 Then
Err = 0
MsgBox "Aucun des répertoires n'existe !"
Exit Sub
End If

nomFichier = Application.GetOpenFilename(typeFichier, , Titre)

typeFichier = "Fichiers, *.csv; *.xls"
Titre = "Sélectionnez le fichier à importer"

If nomFichier = False Then
MsgBox "Aucun fichier n'a été sélectionné."
Exit Sub
Else
nomFichier = Dir(nomFichier)
réponse = MsgBox("Vous avez sélectionné le fichier : " & nomFichier
& Chr(10) _
& Chr(10) & "Confirmez-vous ce choix ?", vbYesNo + vbQuestion,
"validation en cours")
If réponse = vbNo Then
Exit Sub
End If
End If

If Right(nomFichier, 3) = "xls" Then
Workbooks.Open nomFichier
Else
Workbooks.OpenText nomFichier, Tab:=True, semicolon:=True,
local:=True
End If

'[la ligne suivante ne fonctionne pas]

Cells.Copy

'[pour vérifier que cette nouvelle feuille était bien active, j'ai essayé
plusieurs trucs comme : ]

'TheName = ActiveSheet.Name
'MsgBox TheName

'[ce qui me renvoit bien le nom de l'onglet !]

'[J'ai essayé : ]

'ActiveWorkbook.Sheets("TheName").Range("B3").Select

'[ ... mais seule la cellule A1 reste sélectionnée ! ]

'[J'ai essayé : ]

'Sheets("TheName").Cells.Copy

'[... en vain !]

'[J'ai enfin essayé : ]

'Application.EnableEvents = True
'Do Events

End Sub
'------------------------------




Avatar
LE TROLL
Bon,jour,

Je ne connais pas la réponse, mais dans un autre régistre, après lecture
:

If Err <> 0 Then
Err = 0
MsgBox "Aucun des répertoires n'existe !"
Exit Sub
End If

Ben NON, il peut y avoir une autre erreur, donc:

select case err
case 0
case Ton erreur: exit sub
case else: ' traitement autre erreur que la tienne et 0
end select
-------------------

Dim NbItems As Integer

Sauf si conforme à une entête prédéfinie : processeur = 32 ou 64 bits = LONG
dim ... as LONG

-------------------

If réponse = vbNo Then
Exit Sub
End If

Peut faire :

If réponse = vbNo Then Exit Sub


Cordialement :o)

------
Romans, logiciels, email, site personnel
http://irolog.free.fr/joe.htm
------------------------------------------------------------------------------------
"j-pascal" a écrit dans le message de news:

| Bonjour,
|
| Pour une raison que j'ignore, je n'arrive pas à agir sur une feuille de
| calcul ... Le problème se situe à la fin de ce "morceau" de code ; mes
| remarques sont entre crochets [ ]. Je précise que le code est dans un
| module de feuille et qu'il est lancé depuis cette même feuille à partir
| d'un bouton de boite à outils de contrôle.
|
| Merci d'avance pour vos lumières.
|
| '------------------------------
| Private Sub MAJ_Click()
| Dim LeNom As String
| Dim typeFichier As String
| Dim Titre As String
| Dim nomFichier As Variant 'String = non
| Dim réponse As String
| Dim NbItems As Integer
| Dim NouvelExport As String
|
|
| DoEvents
|
| Application.ScreenUpdating = False
| LeNom = ActiveWorkbook.Name 'prévient les modifs
|
| typeFichier = "Fichiers, *.csv; *.xls"
| Titre = "sélectionnez le fichier à importer"
|
| ChDrive "C"
|
| On Error Resume Next
|
| If Dir("C:Documents and SettingstotoBureau", vbDirectory) <> ""
| Then
| ChDir "C:Documents and SettingstotoBureau"
| Else
| ChDir "C:Documents and Settings"
| End If
|
| If Err <> 0 Then
| Err = 0
| MsgBox "Aucun des répertoires n'existe !"
| Exit Sub
| End If
|
| nomFichier = Application.GetOpenFilename(typeFichier, , Titre)
|
| typeFichier = "Fichiers, *.csv; *.xls"
| Titre = "Sélectionnez le fichier à importer"
|
| If nomFichier = False Then
| MsgBox "Aucun fichier n'a été sélectionné."
| Exit Sub
| Else
| nomFichier = Dir(nomFichier)
| réponse = MsgBox("Vous avez sélectionné le fichier : " &
| nomFichier & Chr(10) _
| & Chr(10) & "Confirmez-vous ce choix ?", vbYesNo +
| vbQuestion, "validation en cours")
| If réponse = vbNo Then
| Exit Sub
| End If
| End If
|
| If Right(nomFichier, 3) = "xls" Then
| Workbooks.Open nomFichier
| Else
| Workbooks.OpenText nomFichier, Tab:=True, semicolon:=True,
| local:=True
| End If
|
| '[la ligne suivante ne fonctionne pas]
|
| Cells.Copy
|
| '[pour vérifier que cette nouvelle feuille était bien active, j'ai
| essayé plusieurs trucs comme : ]
|
| 'TheName = ActiveSheet.Name
| 'MsgBox TheName
|
| '[ce qui me renvoit bien le nom de l'onglet !]
|
| '[J'ai essayé : ]
|
| 'ActiveWorkbook.Sheets("TheName").Range("B3").Select
|
| '[ ... mais seule la cellule A1 reste sélectionnée ! ]
|
| '[J'ai essayé : ]
|
| 'Sheets("TheName").Cells.Copy
|
| '[... en vain !]
|
| '[J'ai enfin essayé : ]
|
| 'Application.EnableEvents = True
| 'Do Events
|
| End Sub
| '------------------------------
|
|
Avatar
maelween
j-pascal a écrit le 03/09/2008 à 19h40 :
Bonjour,

Pour une raison que j'ignore, je n'arrive pas à agir sur une feuille de

calcul ... Le problème se situe à la fin de ce
"morceau" de code ; mes
remarques sont entre crochets [ ]. Je précise que le code est dans un
module de feuille et qu'il est lancé depuis cette même feuille
à partir
d'un bouton de boite à outils de contrôle.

Merci d'avance pour vos lumières.

'------------------------------
Private Sub MAJ_Click()
Dim LeNom As String
Dim typeFichier As String
Dim Titre As String
Dim nomFichier As Variant 'String = non
Dim réponse As String
Dim NbItems As Integer
Dim NouvelExport As String


DoEvents

Application.ScreenUpdating = False
LeNom = ActiveWorkbook.Name 'prévient les modifs

typeFichier = "Fichiers, *.csv; *.xls"
Titre = "sélectionnez le fichier à importer"

ChDrive "C"

On Error Resume Next

If Dir("C:Documents and SettingstotoBureau", vbDirectory)
<> ""
Then
ChDir "C:Documents and SettingstotoBureau"
Else
ChDir "C:Documents and Settings"
End If

If Err <> 0 Then
Err = 0
MsgBox "Aucun des répertoires n'existe !"
Exit Sub
End If

nomFichier = Application.GetOpenFilename(typeFichier, , Titre)

typeFichier = "Fichiers, *.csv; *.xls"
Titre = "Sélectionnez le fichier à importer"

If nomFichier = False Then
MsgBox "Aucun fichier n'a été
sélectionné."
Exit Sub
Else
nomFichier = Dir(nomFichier)
réponse = MsgBox("Vous avez sélectionné le
fichier : " &
nomFichier & Chr(10) _
& Chr(10) & "Confirmez-vous ce choix ?", vbYesNo
+
vbQuestion, "validation en cours")
If réponse = vbNo Then
Exit Sub
End If
End If

If Right(nomFichier, 3) = "xls" Then
Workbooks.Open nomFichier
Else
Workbooks.OpenText nomFichier, Tab:=True, semicolon:=True,
local:=True
End If

'[la ligne suivante ne fonctionne pas]

Cells.Copy

'[pour vérifier que cette nouvelle feuille était bien active,
j'ai
essayé plusieurs trucs comme : ]

'TheName = ActiveSheet.Name
'MsgBox TheName

'[ce qui me renvoit bien le nom de l'onglet !]

'[J'ai essayé : ]

'ActiveWorkbook.Sheets("TheName").Range("B3").Select

'[ ... mais seule la cellule A1 reste sélectionnée ! ]

'[J'ai essayé : ]

'Sheets("TheName").Cells.Copy

'[... en vain !]

'[J'ai enfin essayé : ]

'Application.EnableEvents = True
'Do Events

End Sub
'------------------------------


Bonjour j-pascal,

Je pense que la solution est d'activer le nouveau classeur créé (workbook) à l'aide de l'une des instructions suivantes au choix :


Workbooks(Workbooks.Count).Activate 'Active le dernier classeur de la collection avec l'index

ou bien

Workbooks(Nomfichier).Activate 'Active le classeur avec le nom

Bonne programmation ;)
Avatar
j-pascal
Daniel.C a pensé très fort :
Bonjour.
C'est le problème des boutons de commande. La feuille par défaut n'est pas la
feuille active, mais la feuille du bouton.
"cells.copy" fait référence à la feuille du bouton, même si ce n'est pas la
feuille active. Mets :
with activesheet
.Cells.Copy
Cordialement.
Daniel
"j-pascal" a écrit dans le message de news:

Bonjour,

Pour une raison que j'ignore, je n'arrive pas à agir sur une feuille de
calcul ... Le problème se situe à la fin de ce "morceau" de code ; mes
remarques sont entre crochets [ ]. Je précise que le code est dans un
module de feuille et qu'il est lancé depuis cette même feuille à partir
d'un bouton de boite à outils de contrôle.

Merci d'avance pour vos lumières.

'------------------------------
Private Sub MAJ_Click()
Dim LeNom As String
Dim typeFichier As String
Dim Titre As String
Dim nomFichier As Variant 'String = non
Dim réponse As String
Dim NbItems As Integer
Dim NouvelExport As String


DoEvents

Application.ScreenUpdating = False
LeNom = ActiveWorkbook.Name 'prévient les modifs

typeFichier = "Fichiers, *.csv; *.xls"
Titre = "sélectionnez le fichier à importer"

ChDrive "C"

On Error Resume Next

If Dir("C:Documents and SettingstotoBureau", vbDirectory) <> "" Then
ChDir "C:Documents and SettingstotoBureau"
Else
ChDir "C:Documents and Settings"
End If

If Err <> 0 Then
Err = 0
MsgBox "Aucun des répertoires n'existe !"
Exit Sub
End If

nomFichier = Application.GetOpenFilename(typeFichier, , Titre)

typeFichier = "Fichiers, *.csv; *.xls"
Titre = "Sélectionnez le fichier à importer"

If nomFichier = False Then
MsgBox "Aucun fichier n'a été sélectionné."
Exit Sub
Else
nomFichier = Dir(nomFichier)
réponse = MsgBox("Vous avez sélectionné le fichier : " & nomFichier
& Chr(10) _
& Chr(10) & "Confirmez-vous ce choix ?", vbYesNo + vbQuestion,
"validation en cours")
If réponse = vbNo Then
Exit Sub
End If
End If

If Right(nomFichier, 3) = "xls" Then
Workbooks.Open nomFichier
Else
Workbooks.OpenText nomFichier, Tab:=True, semicolon:=True,
local:=True
End If

'[la ligne suivante ne fonctionne pas]

Cells.Copy

'[pour vérifier que cette nouvelle feuille était bien active, j'ai essayé
plusieurs trucs comme : ]

'TheName = ActiveSheet.Name
'MsgBox TheName

'[ce qui me renvoit bien le nom de l'onglet !]

'[J'ai essayé : ]

'ActiveWorkbook.Sheets("TheName").Range("B3").Select

'[ ... mais seule la cellule A1 reste sélectionnée ! ]

'[J'ai essayé : ]

'Sheets("TheName").Cells.Copy

'[... en vain !]

'[J'ai enfin essayé : ]

'Application.EnableEvents = True
'Do Events

End Sub
'------------------------------







Bonsoir Daniel,

Merci pour ta réponse.
Effectivement, ça fonctionne !
Ce qui me surprend c'est que lorsqu'avais essayé :
'-------
TheName = ActiveSheet.Name
MsgBox TheName
'-------
... la feuille active était bien celle où je voulais copier les données
! Cela reste un mystère pour moi !

Par contre, j'ai eu le même pb pour coller ... J'ai ajouté :
'-------
With ActiveSheet 'ajout 5/9 (Daniel.c)
.Cells.Copy
End With

Workbooks(LeNom).Activate 'ajout 05/09 2nd proposit° de maelween
Windows(LeNom).Activate 'ajout (je ne suis pas sûr de l'utilité !)

Application.EnableEvents = False

Sheets("import").Visible = True '(feuille où sont copiées les
données - même classeur que celui où se trouve le bouton pour lancer la
macro)

Sheets("import").Select

With ActiveSheet 'ajout 05/09 'ajout du 5/9 (pb idem que + haut !)
.Range("A1").Select 'ajout
.Paste
End With

Application.CutCopyMode = False

Windows(nomFichier).Activate '(fichier d'où je copie les données)
ActiveWorkbook.Close

Sheets("import").Activate
Sheets("import").Visible = False

Application.EnableEvents = True
'-------

@+ ?

JP
Avatar
j-pascal
maelween avait énoncé :
j-pascal a écrit le 03/09/2008 à 19h40 :
Bonjour,

Pour une raison que j'ignore, je n'arrive pas à agir sur une feuille de

calcul ... Le problème se situe à la fin de ce
"morceau" de code ; mes
remarques sont entre crochets [ ]. Je précise que le code est dans un
module de feuille et qu'il est lancé depuis cette même feuille
à partir
d'un bouton de boite à outils de contrôle.

Merci d'avance pour vos lumières.

'------------------------------
Private Sub MAJ_Click()
Dim LeNom As String
Dim typeFichier As String
Dim Titre As String
Dim nomFichier As Variant 'String = non
Dim réponse As String
Dim NbItems As Integer
Dim NouvelExport As String


DoEvents

Application.ScreenUpdating = False
LeNom = ActiveWorkbook.Name 'prévient les modifs

typeFichier = "Fichiers, *.csv; *.xls"
Titre = "sélectionnez le fichier à importer"

ChDrive "C"

On Error Resume Next

If Dir("C:Documents and SettingstotoBureau", vbDirectory)
<> ""
Then
ChDir "C:Documents and SettingstotoBureau"
Else
ChDir "C:Documents and Settings"
End If

If Err <> 0 Then
Err = 0
MsgBox "Aucun des répertoires n'existe !"
Exit Sub
End If

nomFichier = Application.GetOpenFilename(typeFichier, , Titre)

typeFichier = "Fichiers, *.csv; *.xls"
Titre = "Sélectionnez le fichier à importer"

If nomFichier = False Then
MsgBox "Aucun fichier n'a été
sélectionné."
Exit Sub
Else
nomFichier = Dir(nomFichier)
réponse = MsgBox("Vous avez sélectionné le
fichier : " &
nomFichier & Chr(10) _
& Chr(10) & "Confirmez-vous ce choix ?", vbYesNo
+
vbQuestion, "validation en cours")
If réponse = vbNo Then
Exit Sub
End If
End If

If Right(nomFichier, 3) = "xls" Then
Workbooks.Open nomFichier
Else
Workbooks.OpenText nomFichier, Tab:=True, semicolon:=True,
local:=True
End If

'[la ligne suivante ne fonctionne pas]

Cells.Copy

'[pour vérifier que cette nouvelle feuille était bien active,
j'ai
essayé plusieurs trucs comme : ]

'TheName = ActiveSheet.Name
'MsgBox TheName

'[ce qui me renvoit bien le nom de l'onglet !]

'[J'ai essayé : ]

'ActiveWorkbook.Sheets("TheName").Range("B3").Select

'[ ... mais seule la cellule A1 reste sélectionnée ! ]

'[J'ai essayé : ]

'Sheets("TheName").Cells.Copy

'[... en vain !]

'[J'ai enfin essayé : ]

'Application.EnableEvents = True
'Do Events

End Sub
'------------------------------


Bonjour j-pascal,

Je pense que la solution est d'activer le nouveau classeur créé (workbook) à
l'aide de l'une des instructions suivantes au choix :


Workbooks(Workbooks.Count).Activate 'Active le dernier classeur de la
collection avec l'index

ou bien

Workbooks(Nomfichier).Activate 'Active le classeur avec le nom

Bonne programmation ;)



Bonsoir Maelween,

Comme je le disais à Daniel, j'ai emprunté ta deuxième proposition ! Je
ne suis pas sûr de bien comprendre la première ;-( S'il y avait 10
classeurs ouverts ... lequel serait activé ? l'avant dernier utilisé ?

Merci pour ton aide.

JP
Avatar
j-pascal
Le 03/09/2008, LE TROLL a supposé :
Bon,jour,

Je ne connais pas la réponse, mais dans un autre régistre, après lecture




If Err <> 0 Then
Err = 0
MsgBox "Aucun des répertoires n'existe !"
Exit Sub
End If

Ben NON, il peut y avoir une autre erreur, donc:

select case err
case 0
case Ton erreur: exit sub
case else: ' traitement autre erreur que la tienne et 0
end select
-------------------

Dim NbItems As Integer

Sauf si conforme à une entête prédéfinie : processeur = 32 ou 64 bits = LONG
dim ... as LONG

-------------------

If réponse = vbNo Then
Exit Sub
End If

Peut faire :

If réponse = vbNo Then Exit Sub


Cordialement :o)

------
Romans, logiciels, email, site personnel
http://irolog.free.fr/joe.htm
------------------------------------------------------------------------------------
"j-pascal" a écrit dans le message de news:

Bonjour,

Pour une raison que j'ignore, je n'arrive pas à agir sur une feuille de
calcul ... Le problème se situe à la fin de ce "morceau" de code ; mes
remarques sont entre crochets [ ]. Je précise que le code est dans un
module de feuille et qu'il est lancé depuis cette même feuille à partir
d'un bouton de boite à outils de contrôle.

Merci d'avance pour vos lumières.

'------------------------------
Private Sub MAJ_Click()
Dim LeNom As String
Dim typeFichier As String
Dim Titre As String
Dim nomFichier As Variant 'String = non
Dim réponse As String
Dim NbItems As Integer
Dim NouvelExport As String


DoEvents

Application.ScreenUpdating = False
LeNom = ActiveWorkbook.Name 'prévient les modifs

typeFichier = "Fichiers, *.csv; *.xls"
Titre = "sélectionnez le fichier à importer"

ChDrive "C"

On Error Resume Next

If Dir("C:Documents and SettingstotoBureau", vbDirectory) <> ""
Then
ChDir "C:Documents and SettingstotoBureau"
Else
ChDir "C:Documents and Settings"
End If

If Err <> 0 Then
Err = 0
MsgBox "Aucun des répertoires n'existe !"
Exit Sub
End If

nomFichier = Application.GetOpenFilename(typeFichier, , Titre)

typeFichier = "Fichiers, *.csv; *.xls"
Titre = "Sélectionnez le fichier à importer"

If nomFichier = False Then
MsgBox "Aucun fichier n'a été sélectionné."
Exit Sub
Else
nomFichier = Dir(nomFichier)
réponse = MsgBox("Vous avez sélectionné le fichier : " &
nomFichier & Chr(10) _
& Chr(10) & "Confirmez-vous ce choix ?", vbYesNo +
vbQuestion, "validation en cours")
If réponse = vbNo Then
Exit Sub
End If
End If

If Right(nomFichier, 3) = "xls" Then
Workbooks.Open nomFichier
Else
Workbooks.OpenText nomFichier, Tab:=True, semicolon:=True,
local:=True
End If

'[la ligne suivante ne fonctionne pas]

Cells.Copy

'[pour vérifier que cette nouvelle feuille était bien active, j'ai
essayé plusieurs trucs comme : ]

'TheName = ActiveSheet.Name
'MsgBox TheName

'[ce qui me renvoit bien le nom de l'onglet !]

'[J'ai essayé : ]

'ActiveWorkbook.Sheets("TheName").Range("B3").Select

'[ ... mais seule la cellule A1 reste sélectionnée ! ]

'[J'ai essayé : ]

'Sheets("TheName").Cells.Copy

'[... en vain !]

'[J'ai enfin essayé : ]

'Application.EnableEvents = True
'Do Events

End Sub
'------------------------------







Bonsoir LeTroll,

Ben NON, il peut y avoir une autre erreur, donc:



Ce qui m'importe dans le cas présent c'est "seulement" de détecter
l'erreur due à l'absence de chemin vers ce répertoire. Je ne vois pas
comment je pourrais identifier d'autres types d'erreur dont je ne
connais pas (encore) l'existence ... Je ne peux donc pas utiliser
efficacement ta proposition.

Dim NbItems As Integer

Sauf si conforme à une entête prédéfinie : processeur = 32 ou 64 bits = LONG
dim ... as LONG



Pour moi, "Integer" est très peu consommateur de ressources mémoire.
Dans le cas présent, je peux "facilement" deviner que ma variable ne
peut pas varier au delà de la limite "Integer". Qu'aurais-je dû mettre
à la place ?

If réponse = vbNo Then
Exit Sub
End If

Peut faire : If réponse = vbNo Then Exit Sub



Ca c'est clair (quoique !) le fait de mettre la condition sur une même
ligne peut dispenser d'un "End If" ?? Oui apparemment ;-)

Je te remercie pour ces quelques conseils ; j'apprécie de pouvoir
"optimiser" le code y compris lorsque ça déborde un peu du sujet.

JP