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 :

Insertion photos depuis un fichier spécifique


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Novembre 2022
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2022
    Messages : 2
    Points : 3
    Points
    3
    Par défaut Insertion photos depuis un fichier spécifique
    Bonjour,

    Je souhaite insérer des photos sur Excel depuis un fichier spécifique. Ce dossier comprend toutes des photos issues d'un endoscope pour lequel une dénomination et une codification a été créée. J'arrive à présent à sélectionner mon dossier mais j'ai un code d'erreur à un moment donné. L'idée est de charger ces photos et de les placer sur une ligne en fonction de la codification (il peut y avoir plusieurs photos pour un même élément et donc les photos devront être en ligne à partir d'une certaine colonne. Je ne suis pas un spécialiste des macros et après plusieurs heures de recherche, je bloque sur cette erreur.

    Merci d'avance pour votre aide!

    Nom : Capture.PNG
Affichages : 75
Taille : 20,2 Ko

    For t = 0 To 59 '54

    ligneCorrespondante(t) = Range(codification(t)).Row

    Chemin = selDossier & "\" & image(t)


    colonne = firstColumInsertImage

    For i = 1 To 30

    If i >= 10 Then
    zero = ""
    Else
    zero = "0"
    End If

    chemincomplet = Chemin & zero & i & ".JPG"


    If Len(Dir(chemincomplet)) > 0 Then
    Gauche = ActiveSheet.Cells(ligneCorrespondante(t) + 1, colonne).Left + margeGauche
    haut = ActiveSheet.Cells(ligneCorrespondante(t) + 1, colonne).Top + margeHaut
    colonne = colonne + 1



    End If
    '------

    Set im = ActiveSheet.Shapes.AddPicture(chemincomplet, False, True, Gauche, haut, largeurImage, hauteurImage)

    im.Name = codification(t) & "_" & zero & i & "_Endo" ' je mets le nom en commençant par la codification pour pouvoir la faire bouger correctement après

    compteimage = compteimage + 1

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 389
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 389
    Points : 2 022
    Points
    2 022
    Par défaut
    A priory, tu assaie d'insérer une image, même si elle n'existe pas, puisqu'ils sont codifiés, il vaut mieux partir du nom du fichier pour en déduire sa place.
    Il va faloir plus de détails pour proposer une solution.

    PS: La fonction Dir est une calamité, mieux vaut passer par la librairie FSO qui est plus explicite et plus sécurisée.

  3. #3
    Candidat au Club
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Novembre 2022
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2022
    Messages : 2
    Points : 3
    Points
    3
    Par défaut
    Citation Envoyé par deedolith Voir le message
    A priory, tu assaie d'insérer une image, même si elle n'existe pas, puisqu'ils sont codifiés, il vaut mieux partir du nom du fichier pour en déduire sa place.
    Il va faloir plus de détails pour proposer une solution.

    PS: La fonction Dir est une calamité, mieux vaut passer par la librairie FSO qui est plus explicite et plus sécurisée.
    Bonjour, merci pour votre retour! Pour être plus explicite, il y a 59 noms présélectionnés dans l'appareil représentant chacun un composant interne d'une boîte de vitesse, mais tous ne seront pas pris en photos (composant non présent de par sa technologie). L'idée est de pouvoir caler les photos sur chacune des lignes codifiées à partir de la colonne "K" avec un format de photo de 6 cm de hauteur et de 7.08 de largeur. ci-dessous le script détaillé. Toutes ces photos prises sont dans un dossier et c'est le dossier en général que je souhaite appeler et que les photos se places automatiquement.

    Sub InsertImageFromEndo()

    Dim image(59) As String
    Dim codification(59) As String
    Dim ligneCorrespondante(59) As Long
    Dim premiereLigneVide As Long


    ' SVI : tout ca je l'ai copié du code précédent
    '--------------
    'demande à l'utilisateur de selectionner le dossier dans lequel se trouve l'inspection MDI
    Dim fd As FileDialog

    Set fd = Application.FileDialog(msoFileDialogFolderPicker)
    Do Until selDossier <> ""
    With fd
    .InitialFileName = Defaut
    If .Show = -1 Then
    selDossier = fd.SelectedItems(1)
    End If
    If selDossier = "" Then
    MsgBox ("Selectionner un dossier")
    i = i + 1
    If i = 2 Then
    MsgBox ("Pas de dossier selectionné le programme est arrêté")
    Exit Do

    End If

    End If

    End With
    Loop

    Set fd = Nothing
    '--------------



    'début de nom des photos générées par MDI

    'Planetary train 1
    image(0) = "Planetary_stage_1_Position_PS1_RG0"
    codification(0) = "PS1_RG__"

    image(1) = "Planetary_stage_1_Position_PS1_PW10"
    codification(1) = "PS1_PW1_"

    image(2) = "Planetary_stage_1_Position_PS1_PW20"
    codification(2) = "PS1_PW2_"

    image(3) = "Planetary_stage_1_Position_PS1_PW30"
    codification(3) = "PS1_PW3_"

    image(4) = "Planetary_stage_1_Position_PS1_PW40"
    codification(4) = "PS1_PW4_"

    image(5) = "Planetary_stage_1_Position_PS1_PB1R0"
    codification(5) = "PS1_PB1R"

    image(6) = "Planetary_stage_1_Position_PS1_PB1M0"
    codification(6) = "PS1_PB1M"

    image(7) = "Planetary_stage_1_Position_PS1_PB1G0"
    codification(7) = "PS1_PB1G"

    image(8) = "Planetary_stage_1_Position_PS1_PB2R0"
    codification(8) = "PS1_PB2R"

    image(9) = "Planetary_stage_1_Position_PS1_PB2M0"
    codification(9) = "PS1_PB2M"

    image(10) = "Planetary_stage_1_Position_PS1_PB2G0"
    codification(10) = "PS1_PB2G"

    image(11) = "Planetary_stage_1_Position_PS1_PB3R0"
    codification(11) = "PS1_PB3R"

    image(12) = "Planetary_stage_1_Position_PS1_PB3M0"
    codification(12) = "PS1_PB3M"

    image(13) = "Planetary_stage_1_Position_PS1_PB3G0"
    codification(13) = "PS1_PB3G"

    image(14) = "Planetary_stage_1_Position_PS1_PB4R0"
    codification(14) = "PS1_PB4R"

    image(15) = "Planetary_stage_1_Position_PS1_PB4M0"
    codification(15) = "PS1_PB4M"

    image(16) = "Planetary_stage_1_Position_PS1_PB4G0"
    codification(16) = "PS1_PB4G"

    image(17) = "Planetary_stage_1_Position_PS1_SP0"
    codification(17) = "PS1_SP__"

    image(18) = "Planetary_stage_1_Position_PS1_PCBR0"
    codification(18) = "PS1_PCBR"

    image(19) = "Planetary_stage_1_Position_PS1_PCBG0"
    codification(19) = "PS1_PCBG"

    'planetery train 2
    image(20) = "Planetary_stage_2_Position_PS2_RG0"
    codification(20) = "PS2_RG__"

    image(21) = "Planetary_stage_2_Position_PS2_PW10"
    codification(21) = "PS2_PW1_"

    image(22) = "Planetary_stage_2_Position_PS2_PW20"
    codification(22) = "PS2_PW2_"

    image(23) = "Planetary_stage_2_Position_PS2_PW30"
    codification(23) = "PS2_PW3_"

    image(24) = "Planetary_stage_2_Position_PS2_PB1R0"
    codification(24) = "PS2_PB1R"

    image(25) = "Planetary_stage_2_Position_PS2_PB1G0"
    codification(25) = "PS2_PB1G"

    image(26) = "Planetary_stage_2_Position_PS2_PB2R0"
    codification(26) = "PS2_PB2R"

    image(27) = "Planetary_stage_2_Position_PS2_PB2G0"
    codification(27) = "PS2_PB2G"

    image(28) = "Planetary_stage_2_Position_PS2_PB3R0"
    codification(28) = "PS2_PB3R"

    image(29) = "Planetary_stage_2_Position_PS2_PB3G0"
    codification(29) = "PS2_PB3G"

    image(30) = "Planetary_stage_2_Position_PS2_SP0"
    codification(30) = "PS2_SP__"

    image(31) = "Planetary_stage_2_Position_PS2_PCBR0"
    codification(31) = "PS2_PCBR"

    image(32) = "Planetary_stage_2_Position_PS2_PCBG0"
    codification(32) = "PS2_PCBG"

    'Planetary train 3
    image(33) = "Planetary_stage_3_Position_PS3_RG0"
    codification(33) = "PS3_RG__"

    image(34) = "Planetary_stage_3_Position_PS3_PW10"
    codification(34) = "PS3_PW1_"

    image(35) = "Planetary_stage_3_Position_PS3_PW20"
    codification(35) = "PS3_PW2_"

    image(36) = "Planetary_stage_3_Position_PS3_PW30"
    codification(36) = "PS3_PW3_"

    image(37) = "Planetary_stage_3_Position_PS3_PB1R0"
    codification(37) = "PS3_PB1R"

    image(38) = "Planetary_stage_3_Position_PS3_PB1G0"
    codification(38) = "PS3_PB1G"

    image(39) = "Planetary_stage_3_Position_PS3_PB2R0"
    codification(39) = "PS3_PB2R"

    image(40) = "Planetary_stage_3_Position_PS3_PB2G0"
    codification(40) = "PS3_PB2G"

    image(41) = "Planetary_stage_3_Position_PS3_PB3R0"
    codification(41) = "PS3_PB3R"

    image(42) = "Planetary_stage_3_Position_PS3_PB3G0"
    codification(42) = "PS3_PB3G"

    image(43) = "Planetary_stage_3_Position_PS3_SP0"
    codification(43) = "PS3_SP__"

    image(44) = "Planetary_stage_3_Position_PS3_PCBR0"
    codification(44) = "PS3_PCBR"

    image(45) = "Planetary_stage_3_Position_PS3_PCBG0"
    codification(45) = "PS3_PCBG"

    'low speed shaft
    image(46) = "Low_speed_shaft_Position_LSS-LSSW0"
    codification(46) = "LSS_W___"

    image(47) = "Low_speed_shaft_Position_LSS-LSSBR0"
    codification(47) = "LSS_B_R_"

    image(48) = "Low_speed_shaft_Position_LSS-LSSBG10"
    codification(48) = "LSS_B_G1"

    image(49) = "Low_speed_shaft_Position_LSS-LSSBG20"
    codification(49) = "LSS_B_G2"



    'intermediate shaft
    image(50) = "Interm_Speed_Shaft_Position_IMS-IMSW0"
    codification(50) = "IMS_W___"

    image(51) = "Interm_Speed_Shaft_Position_IMS-IMSP0"
    codification(51) = "IMS_P___"

    image(52) = "Interm_Speed_Shaft_Position_IMS-IMSBR0"
    codification(52) = "IMS_B_R_"

    image(53) = "Interm_Speed_Shaft_Position_IMS-IMSBG10"
    codification(53) = "IMS_B_G1"

    image(54) = "Interm_Speed_Shaft_Position_IMS-IMSBG20"
    codification(54) = "IMS_B_G2"




    'high speed shaft
    image(55) = "High_Speed_Shaft_Position_HSS-HSSP0"
    codification(55) = "HSS_P___"

    image(56) = "High_Speed_Shaft_Position_HSS-HSSBR10"
    codification(56) = "HSS_B_R1"

    image(57) = "High_Speed_Shaft_Position_HSS-HSSBR20"
    codification(57) = "HSS_B_R2"

    image(58) = "High_Speed_Shaft_Position_HSS-HSSBG10"
    codification(58) = "HSS_B_G1"

    image(59) = "High_Speed_Shaft_Position_HSS-HSSBG20"
    codification(59) = "HSS_B_G2"



    compteimage = 0


    For t = 0 To 59 '54

    ligneCorrespondante(t) = Range(codification(t)).Row

    Chemin = selDossier & "\" & image(t)


    colonne = firstColumInsertImage

    For i = 1 To 30

    If i >= 10 Then
    zero = ""
    Else
    zero = "0"
    End If

    chemincomplet = Chemin & zero & i & ".JPG"


    If Len(Dir(chemincomplet)) > 0 Then
    Gauche = ActiveSheet.Cells(ligneCorrespondante(t) + 1, colonne).Left + margeGauche
    haut = ActiveSheet.Cells(ligneCorrespondante(t) + 1, colonne).Top + margeHaut
    colonne = colonne + 1



    End If
    '------

    Set im = ActiveSheet.Shapes.AddPicture(chemincomplet, False, True, Gauche, haut, largeurImage, hauteurImage)

    im.Name = codification(t) & "_" & zero & i & "_Endo" ' je mets le nom en commençant par la codification pour pouvoir la faire bouger correctement après

    compteimage = compteimage + 1



    'on ajoute un lien relatif (en commancant par l'emplacement du fichier excel et pas depuis C
    If Range("add_link_external_use") Then
    dernierSlash = InStrRev(chemincomplet, "\")
    avantDernierSlash = InStrRev(chemincomplet, "\", dernierSlash - 1)
    ActiveSheet.Hyperlinks.Add Anchor:=im, Address:=Right(chemincomplet, Len(chemincomplet) - avantDernierSlash)
    End If

    'je remplis une table de liens, c'est pour pouvoir utiliser la fonction OpenImage après
    If Range("add_link_internal_use") Then
    premiereLigneVide = Range("numberOfLink") + 1
    Sheets("ImageLink").Range("A" & premiereLigneVide) = im.Name 'nomSouhait
    Sheets("ImageLink").Range("B" & premiereLigneVide) = chemincomplet
    End If









    Next i
    Next t

Discussions similaires

  1. Supprimer photo depuis un fichier
    Par Msysteme dans le forum C#
    Réponses: 3
    Dernier message: 10/02/2015, 13h10
  2. Mise à jour, insertion données depuis un fichier excel
    Par Titototi dans le forum VBA Access
    Réponses: 3
    Dernier message: 02/10/2009, 18h27
  3. Réponses: 5
    Dernier message: 24/10/2008, 11h43
  4. Réponses: 3
    Dernier message: 26/04/2006, 12h52
  5. pb d'insertion de données depuis un fichier externe-COPY
    Par boulou32 dans le forum PostgreSQL
    Réponses: 4
    Dernier message: 29/01/2005, 19h50

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