voici le code
 
 
Option Explicit
 
 
Private Declare Function ExtractIcon Lib "shell32.dll" Alias "ExtractIconA" (ByVal hInst As Long, ByVal lpszExeFileName As String, ByVal nIconIndex As Long) As Long
 
 
Private Declare Function ExtractIconEx Lib "shell32.dll" Alias "ExtractIconExA" _
                            (ByVal lpszFile As String, _
                            ByVal nIconIndex As Long, _
                            phiconLarge As Long, _
                            phiconSmall As Long, _
                            ByVal nIcons As Long) As Long
 
 
 
Private Declare Function DrawIconEx Lib "user32" _
                            (ByVal hDC As Long, _
                             ByVal xLeft As Long, _
                             ByVal yTop As Long, _
                             ByVal hIcon As Long, _
                             ByVal cxWidth As Long, _
                             ByVal cyWidth As Long, _
                             ByVal istepIfAniCur As Long, _
                             ByVal hbrFlickerFreeDraw As Long, _
                             ByVal diFlags As Long) As Boolean
 
 
Private Declare Function DestroyIcon Lib "user32" _
                            (ByVal hIcon As Long) As Long
' Valeur de diFlags pour DrawIconEx
 'Const DI_MASK = &H1
 'Const DI_IMAGE = &H2
 Const DI_NORMAL = &H3
 'Const DI_COMPAT = &H4
 
 
Private Sub Command1_Click()
 Dim sFilename As String
  Dim nIconIdx As Long
  Dim hSmallIcon As Long
  Dim hLargeIcon As Long
  Dim pDessin
  Dim gDessin
  Dim Extraction
  Dim Ind
 
commonddialog1.showopen
sFilename = commonddialog1.filename
 
'Renvoie le nombre total d'icônes du fichier
Ind = ExtractIcon(Me.hDC, sFilename, -1)
Label1.Caption = "Nombre d'icones dans le fichier = " & Ind
 
If Ind > 0 Then
    'Dans les fichiers l'index de la première icône est toujours 0
    nIconIdx = 0
    Do While nIconIdx < Ind
    'Renvoie le nombre d'icone extrait (ou 0 si erreur)
        Extraction = ExtractIconEx(sFilename, nIconIdx, hLargeIcon, hSmallIcon, 1)
        Label3.Caption = "Index d'icone = " & nIconIdx
        Picture1.Cls
        Picture2.Cls
    ' dessine les icones dans les PictureBox
        pDessin = DrawIconEx(Picture1.hDC, 1, 1, hSmallIcon, 0, 0, 0, 0, DI_NORMAL)
        gDessin = DrawIconEx(Picture2.hDC, 1, 1, hLargeIcon, 0, 0, 0, 0, DI_NORMAL)
    ' Détruit l'icone extrait de la memoire
        DestroyIcon hSmallIcon
        DestroyIcon hLargeIcon
       
        nIconIdx = nIconIdx + 1
         
        DoEvents    'pour raffraichir l'affichage et ne pas bloquer le système
    Loop
End If
End Sub
 
Private Sub Form_Load()
 
'************************************************************
'* NOM : ExtractIcon
'* DATE : 14/11/1998
'*
'* AUTEUR : J-Luc
'*
'* CODE TROUVE SUR "Le petit monde de Visual Basic"
'*                 http://www.vbasic.org
'*
'* DESCRIPTION :
'* Permet d'extraire toutes les icônes contenues dans un fichier
'*, en petite taille (16x16) ainsi qu'en grande taille (32x32)
'* Les icônes sont ensuite placés dans un contrôle PictureBox,
'* ce qui permet d'en faire ensuite ce qu'on veut : les affecter
'* à un autre contrôle comme un ImageList....
'*
'* A noter : dans cet exemple, les icônes défilent à la suite
'* les unes après les autres sans interruption jusqu'à la dernière icône.
'* A vous d'adapter cet exemple en fonction de vos besoins bien sûr
'*
'************************************************************
 
 
 
End Sub
 
 
et mon besoin est de sauvergader la grande icone contenu dans hLargeIcon
 
Merci!