Bonsoir Bernard, re Michel, Laurent (qu'on a pas encore revu), Davis, le Forum.
Oui je sais que l'aide VBA n'indique rien d'autre à ce sujet et que l'exemple donné est donc bien en "Auto-Instancing". De là à dire "Bingo", non !
L'aide VBA est primordiale et, si elle était bien et patiemment analysée par tout le monde... pas mal de posts n'auraient pas lieu d'être dans XLD. Donc je persiste à recommander sa consultation sans modération. F1 is the Key of the VBA's World !
Toutefois l'aide VBA est un peu comme le guide d'une voiture neuve, on a l'essentiel mais pas tout le mode d'emploi pour faire (par exemple) un talon/pointe (lol)... Un exemple tout simple, faite une recherche à "MsgBox" dans l'aide VBA et vous aurez l'exemple suivant :
Dim Msg, Style, Title, Help, Ctxt, Response, MyString
Msg = "Souhaitez-vous continuer?" ' Définit le message.
Style = vbYesNo + vbCritical + vbDefaultButton2 ' Définit les boutons.
Title = "Démonstration de MsgBox " ' Définit le titre.
Help = "DEMO.HLP" ' Définit le fichier d'aide.
Ctxt = 1000 ' Définit le contexte de la rubrique.
' Affiche le message.
Response = MsgBox(Msg, Style, Title, Help, Ctxt)
If Response = vbYes Then ' L'utilisateur a choisi Oui.
MyString = "Oui" ' Effectue une action.
Else ' L'utilisateur a choisi Non.
MyString = "Non" ' Effectue une action.
End If
........ çà ne te rapelle rien Bernard dans ce même fil !
Mais où sont passée les déclarations de Variables !! 7 variables as Variant !! alors qu'aucune ne l'est !!! sont pas économes de nos petits PC chez MS (remarquez on le savait !!!)
Bien sûr on peut s'en "contre-ficher" et pour des MsgBox se dire que ce n'est pas grave, aucun souci quand on fait sa petite appli qui tourne dans son coin... Mais là où et je suis content de voir l'implication dans le même sens de tous les Contributeurs et Contributrices d'XLD, c'est qu'ici on essaie de donner des informations complètes et sérieuses. Rares sont les fils où on a laissé passer une information bidon ou erronée, c'est le pire de tout, un Forum de Base de Connaissance Foireuse !! lol
Donc pour en revenir à ce Set d'Objet As New Collection plutôt que de faire donc une "Auto-Instancing", je pense que Chip Pearson est un MVP qui n'a pas volé sa médaille (lol) son site et son travail son autant reconnus que ceux de John Walkenbach.
Mais pour le fun j'ai été récupérer mon moteur de recherche XLD Ce lien n'existe plus avec la base de donnée complète des fils de 2001 à 2003 (soit 63417 lignes)Ce lien n'existe plus et j'ai fait les modifs nécessaires sur la Collection "StringFound" et j'ai fait un timer comme suit :
Debut de Private Sub CmdOKStandard
Dim StartTime As Single
StartTime = Timer
la création de la collection "StringFound.Add" (et d'autres trucs)
MsgBox Timer - StartTime
End Sub
Avec le Set StringFound = New Collection ===> 1,310107 (meilleurs temps)
Avec le Dim StringFound As New Collection ===> 1.920013 (meilleurs temps)
Tests effectué en cherchant "Thierry" dans le sujet sur un vieux PIII 800 512 Ram)
Donc ce n'est pas vraiment significatif vu la quantité de lignes. Mais au moins on aura été jusqu'au bout !! lol
Mais pour moi-même çà me sert à ne pas revenir en arrière sur des anciennes applis mais dorénavant je donnerai la préférence à cette méthode de Chip qui, pour finir dit bien ceci aussi (sorry je ne traduis pas) :
VBA's flexibility may seem useful, but it can also lead to inefficient and hard-to-maintain code. Just because VBA allows you do certain things doesn't mean that you should do them. You should develop good coding habits early, rather than trying to break bad habits later. You'll be glad you did.
Bonne Nuit et bonne semaine à tous et toutes
@+Thierry