Creer un index pour objet "Image"

Signaler
Messages postés
372
Date d'inscription
vendredi 27 juillet 2007
Statut
Membre
Dernière intervention
22 juillet 2013
-
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
-
Bonjour ,
Je travaille avec Excel 2010.
Je veux inserer plusieurs images sur une feuille excel
grace à l'objet 'IMAGE'.Cela ne me pose pas de souci.
Par contre, je souhaite nommer tous ces images avec une indexation.C'est à dire par exemple Image(1),Image(2),
Image(3).....Image(20).
Avec Excel 2000, c'etait possible, je crois.
Comment puis je faire maintemant ?

Merci
Dedenet2

3 réponses

Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
225
Bonjour,
1) En d'autres termes : créer un pseudo groupe de contrôles indexés ? C'est celà ?
2) si oui (et j'attends ta confirmation) : Excel 2000 n'offrait à ma connaissance pas cette possibilité et il fallait donc construire une classe. Sous 2010, la démarche serait exactement la même !

________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
Messages postés
372
Date d'inscription
vendredi 27 juillet 2007
Statut
Membre
Dernière intervention
22 juillet 2013
1
Bonjour ucfoutu,
Oui, c'est cela.
Si tu peux m'expliquer comment on peut faire,cela m'aiderait beaucoup.
Je pourrais le tester ce soir.

Merci
Dedenet57
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
225
Que veux-tu que je t'explique ? C'est un cours complet qu'il te faudrait pour que tu puisses traiter tous les cas de figure !

Ce que je peux faire, c'est un petit exemple que tu devras comprendre et analyser pour faire ensuite ce qui te convient, en fonction de TON appli :
1) Un userform avec ce code
Private Sub UserForm_Activate()
  Dim nb As Integer, obj As Control, i As Integer
  Me.Move 0, 0, 500, 400
  Dim boitetexte As MSForms.Control
  On Error Resume Next
  For i = 0 To 2
    Set boitetexte = Me.Controls("" & i)
    If boitetexte Is Nothing Then
      Set boitetexte = Me.Controls.Add("Forms.TextBox.1", "toto(" & i & ")", True)
      With boitetexte
        .Caption = "Ma textbox" & i
        .Top = 20 * i
        .Left = 100 * i
        .Height = 20
        .Width = 100
      End With
    Else
      MsgBox "existe déjà !"
    End If
    Set boitetexte = Nothing
  Next
  For Each obj In Me.Controls
     If obj.Name Like "toto*" Then
      nb = nb + 1
      ReDim Preserve mestextboxes(1 To nb)
      Set mestextboxes(nb).TextBoxEvents = obj
    End If
  Next obj
  Set obj = Nothing
End Sub

un module standard avec cette seule ligne de code :
Public mestextboxes() As New Classe1

Un module de classe avec ce code :
Option Explicit

Public WithEvents TextBoxEvents As MSForms.TextBox

Private Sub TextBoxEvents_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
  Dim index As Integer, qui As String
  qui = UserForm1.ActiveControl.Name
  index = Val(Mid(qui, InStr(qui, "(") + 1))
  Select Case index
    Case 0
      If KeyAscii <> 8 And Not IsNumeric(Chr(KeyAscii)) Then
        KeyAscii = 0
      End If
    Case 1
      If IsNumeric(Chr(KeyAscii)) And KeyAscii <> 8 Then
        KeyAscii = 0
      End If
    Case 2
      KeyAscii = Asc(UCase(Chr(KeyAscii)))
    End Select
End Sub

Lance ton userform === >> on y a ajouté 3 textboxes qui répondent à un seul évènement keypress
Elle réagissent différemment selon leur index
Dans la première, tu ne pourras saisir que des numériques, dans seconde : aucun numérique et dans la 3ème tout passera en majuscules
Ce n'est qu'un exemple/démonstration
A toi de comprendre et de faire ce qui te convient, sur ces principes.

________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ