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 :

ranger des images sur une feuille à partir d'un classeur


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    139
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 139
    Par défaut ranger des images sur une feuille à partir d'un classeur
    Bonjour à tous.
    J’ai un classeur « Album »
    Dans ce classeur : une feuille « Image »
    Une feuille « classement »

    Dans la feuille Image 30 images que j’ai insérées à partir d’un album quelconque.
    Je voudrais en cliquant ( doubleClic ou ClicDroit) sur ces images , les coller sur la feuille classement, de la gauche vers la droite les unes après les autres dans l’ordre choisit en cliquant,
    Je m’explique.
    Le Clic sur [image 3] la colle en haut à gauche de ma feuille.
    Le Clic sur la suivante [image 18] par exemple la colle en haut juste à droite de l’image 3, etc, etc. Soit image 3 dans cellule A1, image 18 dans cellule A2 etc,etc.
    Les cellules qui reçoivent les images dans la feuille classement sont un peu plus grandes que les images.
    Je veux alligner 15 images sur la première ligne soit de A1 à A15
    et les 15 autres sur la suivante soit de B1 à B15.
    Dès qu’une image est classée on ne doit plus pouvoir la sélectionner.
    A la fin de l’opération je dois réinitialiser les feuilles en cliquant sur un bouton.
    J’avais déjà obtenu une solution il y a quelques temps mais je l’ai perdue dans un formatage inconsidéré.
    Je vous en livre une partie ci-dessous mais elle est incomplète et ne fonctionne pas.

    Code dans la feuille [images]
    Bouton (CommandButton1) sur la feuille image associé à la macro Initialisation


    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
    43
    44
    45
    46
    47
    48
    Option Explicit
    Dim Compteur As Byte
    Dim Sh As Shape
    Dim Ligne As Byte
    Private Sub CommandButton1_Click()
       With UsedRange 'Attention efface tour le texte et les couleurs de fond, adapte au besoin
          .Interior.ColorIndex = xlNone
          .ClearContents
       End With
     
       'affectation des macros aux images
       For Each Sh In Sheets("image").Shapes
          If Not Sh.Name Like "CommandButton1" Then Sh.OnAction = "Feuil1.Classement"
       Next Sh
     
       'suppression des images de la feuille classement
       For Each Sh In Sheets("classement").Shapes
          Sh.Delete
       Next Sh
     
       Compteur = 0
       Ligne = 1
     
    End Sub
    Sub Classement()
    Compteur = Compteur + 1
     
    'suppression de la macro pour ne pas recliquer sur la même image
    'et par la même occasion ne pas avoir d'image cliquable sur la feuille de destination
    Sheets("image").Shapes(Application.Caller).OnAction = ""
     
    'copie de l'image
    Sheets("image").Shapes(Application.Caller).Copy
     
    'fond de cellule rouge et position
    With Range(Sheets("image").Shapes(Application.Caller).TopLeftCell.Address)
       .Interior.ColorIndex = 3
       .Value = Compteur + (Ligne - 1) * 15
    End With
     
    'collage de l'image
    Sheets("classement").Cells(Ligne, Compteur).PasteSpecial "Image (GIF)"
     
    If Compteur * Ligne = 30 Then MsgBox "Classement terminé.": _
       Application.Goto Sheets("classement").Range("A1"): Exit Sub
     
    If Compteur = 15 Then Compteur = 0: Ligne = Ligne + 1
    End Sub
    [/CODE]
    Voila je crois que mon message est complet, merci pour votre aide.
    Cordialement Bob

  2. #2
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Mars 2008
    Messages
    203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 203
    Par défaut
    Bonsoir,

    Je n'ai pas vraiment analysé tout ton code, mais je pense que la routine qui fait un couper/coller de l'image cliquée est assez simple à faire.
    Est-ce que tu as donné des "noms" aux images?
    En donnant un nom "facile" cela te permettrai de faire ceci dans chacune des macros associées aux images:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    'copie de l'image
    Sheets("image").Shapes("nom1").Cut
    'collage de l'image
    Sheets("classement").Cells(Ligne, Compteur).Select
    Sheets("classement").Paste
    Sheets("classement").Shapes("Image1").Name = "nom1"
    La gestion ligne/compteur est assez simple à faire avec des variables globales.

    PS: Pour donner un nom à une image, c'est dans excel, en sélectionnant l'image, dans la Zone Nom. Il suffit d'éditer "picture x" et de rentrer "nomx".

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    139
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 139
    Par défaut
    Salut did et merci pour ta réponse.
    Mon projet avait déjà été résolu il y a quelques temps par fred65200 sur ce forum dans cette rubrique sous le nom de « vba pour copier des images ».
    Le projet fonctionnait mais comme un idiot lors un formatage j’ai oublié de le sauvegarder.
    J’ai retrouvé le code mais il doit être incomplet car ça ne fonctionne pas.
    Pour le fonctionnement :
    Lorsqu’on clique sur une image elle doit apparaître sur la 1ère cellule A1 de la feuille classement, la 2ème image à la suite sur B1 et ainsi de suite.
    Lorsque j’ai terminé cette opération je dois effacer toute les images de la feuille classement pour recommencer une nouvelle opération.
    Je joins mon fichier pour l’exemple.
    J’espère que je suis assez clair.
    Merci d’avance.
    Bob
    Fichiers attachés Fichiers attachés

  4. #4
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Mars 2008
    Messages
    203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 203
    Par défaut
    Salut,
    Dis, il est pas déverminé ton fichier...
    Ca risque pas marcher:
    Dim mal placés, nom macro associé à l'image faux, macro Classement dans la feuille image et pas sous module Macro, manque des END IF...
    j'ai fait l'affectation des images.
    reste à gérer les compteurs.
    Pour l'instant tout ce range en ligne.
    Fichiers attachés Fichiers attachés

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    139
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 139
    Par défaut
    Merci Did,
    ça marche mais qu'est ce que tu veux dire "reste à g"rer les compteurs"
    Tu dis que mon fichier n'est pas déverminer, pourtant je l'ai soumis à mon antivirus AVG8 qui ne signale rien.
    Merci à plus.
    Bob

  6. #6
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Mars 2008
    Messages
    203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 203
    Par défaut
    Déverminé, pas au sens anti-virus!!!!
    Je voulais parler du code écrit, il était pas jojo.
    Le forum permet de donner des idées, d'échanger, de mettre sur la voie.
    Il n'est pas là pour donner son job aux autres.

    pour les compteurs, la var Compteur s'incrémente bien.
    Y a la var Ligne à revoir, car le résultat n'est que sur 1 seule ligne sur la page Classement. Il faudrait que Ligne passe à 2 lorsque Compteur = 5.
    C'est tout...

Discussions similaires

  1. Réponses: 2
    Dernier message: 16/12/2011, 19h20
  2. Aligner des images sur une même ligne
    Par cdevl32 dans le forum Mise en page CSS
    Réponses: 7
    Dernier message: 08/10/2007, 03h13
  3. comment créer des boutons sur une feuille en utilisant eclipse
    Par ratamahatta dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 09/06/2006, 19h17
  4. Afficher des images sur une grille
    Par Coussati dans le forum Composants VCL
    Réponses: 3
    Dernier message: 27/10/2005, 09h27

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