IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

boucle sur image.picture


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Octobre 2011
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2011
    Messages : 1
    Par défaut boucle sur image.picture
    Bonjour,

    je vous expose mon problème en espérant que vous pourrez m'aider.

    sur une feuille j'ai 36 controls active x image.picture .
    Pour afficher l'image dans une control j'utilise le code suivant sachant que le nom du jpg viens de la feuil "BD" col 10 et ligne x defini plus haut :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Fichier1 = "C:\xxxxxx\picto\" & Worksheets("BD").Cells(pos, 10).Value & ".jpg"
     
        'Vérifie si le fichier existe.
          If Dir(Fichier1) <> "" Then
     
            'si le fichier existe, il est chargé pour visualisation.
     
            Image4.Picture = LoadPicture(Fichier1)
         Else
            'Sinon, affiche aucune image.
            Image4.Picture = LoadPicture("")
     
        End If
    cela fonctionne très bien

    mais je ne trouve pas le moyen de faire une boucle pour que le control suivant c'est à dire image5.picture puissent afficher l'image dont le nom viens de la page BD même ligne mais colonne11 , image6.picture puissent afficher l'image dont le nom viens de la page BD même ligne mais colonne12 , ect......

    je ne sais pas si mes explications sont claires mais et je m'en excuse

    merci de votre aide


    j'ai testé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
        Dim Fichier1 As String
        Dim i As Byte
        Dim a As Integer
         a = 9
       For i = 3 To 38
              Fichier1 = "C:\Users\jaushua_fixe\Documents\picto\interdiction\" & Worksheets("BD").Cells(pos, a).Value & ".jpg"
      'Vérifie si le fichier existe.
              If Dir(Fichier1) <> "" Then
                   Sheets("Fiche").Shapes("image" & i).Picture = LoadPicture(Fichier1)
            Else
                 Sheets("Fiche").Shapes("image" & i).Picture = LoadPicture("")
           End If
      a = a + 1
    Next i
    Mais j'ai une "erreur 448 objet ou méthode non gérée par cette objet" sur la ligne 11

  2. #2
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par jaushua Voir le message
    Bonjour,

    A tester et à adapter :

    Nb : Je pense que votre nom de fichier contient déjà son extension dans l'onglet BD ou que son extension est ".JPG", c'est pour cette raison que le code vous a orienté sur la ligne 11. Cette ligne est par ailleurs inutile.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
     
    Sub Test()
     
    Dim Fichier1 As String, Repertoire As String
    Dim I As Integer, Pos As Integer, a As Integer
     
        Repertoire = "C:\Users\jaushua_fixe\Documents\picto\interdiction\"
        I = 1
     
        For Pos = 1 To 1 ' A adapter
            For a = 10 To 12
                ' Fichier1 = Repertoire & Worksheets("BD").Cells(Pos, a).Value ' Si le nom de l'image contient déjà son extension
                Fichier1 = Repertoire & Worksheets("BD").Cells(Pos, a).Value & ".JPG"
                Debug.Print Fichier1
     
                If Dir(Fichier1) <> "" And ExistenceShape(Sheets("Fiche"), I) = True Then
                   'Sheets("Fiche").Shapes("Image" & I).Fill.UserPicture Fichier1  ' Attention à la syntaxe
                   Sheets("Fiche").Shapes("image" & I).Fill.UserPicture Fichier1
                   I = I + 1
                End If
            Next a
        Next Pos
     
    End Sub
     
    Function ExistenceShape(ByVal ShFiche As Worksheet, ByVal NumeroImage As Byte) As Boolean
     
    Dim J As Integer
     
            ExistenceShape = False
            With ShFiche
                 If .Shapes.Count = 0 Then Exit Function
                 For J = 1 To .Shapes.Count
                     'If .Shapes(J).Name = "Image" & NumeroImage Then  ' Attention à la syntaxe
                     If .Shapes(J).Name = "image" & NumeroImage Then
                        ExistenceShape = True
                        Exit Function
                     End If
                 Next J
            End With
     
    End Function

Discussions similaires

  1. Boucle sur src image
    Par Seds994 dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 02/01/2018, 16h50
  2. Boucle sur les pixels d'une fichier image
    Par Beaudelicius dans le forum Général Python
    Réponses: 2
    Dernier message: 19/02/2012, 18h57
  3. [XSLT] Faire une boucle sur une variable [i]
    Par PoT_de_NuTeLLa dans le forum XSL/XSLT/XPATH
    Réponses: 8
    Dernier message: 07/06/2010, 12h45
  4. [allegro]passage de pointeur sur image
    Par Gonath dans le forum Autres éditeurs
    Réponses: 3
    Dernier message: 13/12/2003, 18h47
  5. zoom sur image de formulaire
    Par bourvil dans le forum VBA Access
    Réponses: 2
    Dernier message: 01/10/2003, 09h25

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo