XL 2013 insertion image dans cellule

bredeche

XLDnaute Occasionnel
bonjour
j'ai un formulaire qui me permet d'inséré une image dans un onglet qui se crée a l’emplacement H20 et le chemin dans un tableau en aw

pour les éléments qui s 'inscris dans la cellule de l'onglet cela me place que des chiffres je ne comprend pas voici mon code
VB:
Option Explicit


Private Sub CommandButton2_Click() 'Bouton VALIDER
Dim NewLig As Long
Dim laconcat As String


 
 'ELEMENT ENREGISTRE DANS LE TABLEAU PRESENTATION RECAP
  With Sheets("02-Présentation Recap")
    
        NewLig = Application.Max(10, .Range("A" & Rows.Count).End(xlUp).Row + 1)
        .Range("A" & NewLig).Value = Application.WorksheetFunction.Max(Range("A:A")) + 1
      
      laconcat = ComboBox4.Value & " _ " & TextBoxfiche.Text & " _ " & TextBoxannée.Text & " " & ComboBox5.Value
   .Range("B" & NewLig).Value = laconcat
   .Range("C" & NewLig).Value = TextBoxobjet
    .Range("D" & NewLig).Value = ComboBox1
    
     End With
    
    'ELEMENT ENREGISTRE DANS LE TABLEAU  RECAP
    With Sheets("00-Recap")
    
    
        NewLig = Application.Max(10, .Range("A" & Rows.Count).End(xlUp).Row + 1)
        .Range("A" & NewLig).Value = Application.WorksheetFunction.Max(Range("A:A")) + 1
      
        .Range("C" & NewLig).Value = TextBoxobjet
        .Range("Y" & NewLig).Value = ComboBox4
        .Range("Z" & NewLig).Value = TextBoxfiche
        .Range("AA" & NewLig).Value = CDate(TextBoxdate)
        .Range("AB" & NewLig).Value = TextBoximputation
        .Range("AC" & NewLig).Value = TextBoxlocalisation
        .Range("AD" & NewLig).Value = ComboBox1
        .Range("D" & NewLig).Value = ComboBox1
        .Range("AE" & NewLig).Value = TextBoxannée
        .Range("AF" & NewLig).Value = CheckBox1
        .Range("AG" & NewLig).Value = CheckBox2
        .Range("AH" & NewLig).Value = CheckBox3
        .Range("AI" & NewLig).Value = TextBoxconstat
        .Range("AJ" & NewLig).Value = TextBoxrisque
        
        .Range("AK" & NewLig).Value = TextBoxorigine
        .Range("AL" & NewLig).Value = CheckBox4
        .Range("AM" & NewLig).Value = CheckBox5
        .Range("AN" & NewLig).Value = CheckBox6
        
        
        .Range("AO" & NewLig).Value = TextBoxtravaux
        .Range("AP" & NewLig).Value = CheckBox7
        .Range("AQ" & NewLig).Value = CheckBox8
        .Range("AR" & NewLig).Value = CheckBox9
        
        .Range("AS" & NewLig).Value = TextBoxobservation
        
        .Range("AT" & NewLig).Value = TextBoxconstructeur
        .Range("AU" & NewLig).Value = TextBoxdureevie1
        .Range("AV" & NewLig).Value = TextBoxdureevie2
        .Range("AW" & NewLig).Value = CHEMIN
        
   laconcat = ComboBox4.Value & " _ " & TextBoxfiche.Text & " _ " & TextBoxannée.Text & " " & ComboBox5.Value
   .Range("B" & NewLig).Value = laconcat
  
    End With
   Application.ScreenUpdating = False
    'On crée les onglets
        'on copie le modèle en dernier
        Worksheets("03-TRAME").Copy After:=Worksheets(ThisWorkbook.Sheets.Count)
            With ActiveSheet
            .Name = Worksheets("00-RECAP").Range("B" & NewLig)    'je renome
            'Je remplit mon modèle comme je veut...
            .Range("B3") = TextBoxobjet
            .Range("A6") = TextBoxfiche
            .Range("B6") = TextBoxdate
            .Range("C6") = TextBoximputation
            .Range("D6") = TextBoxlocalisation
            .Range("E6") = ComboBox1
            .Range("F6") = TextBoxannée
            .Range("G6") = ComboBox4
            
            .Range("A9") = TextBoxconstat
            .Range("E11") = CheckBox1
            .Range("E12") = CheckBox2
            .Range("E13") = CheckBox3
            
            .Range("A16") = TextBoxrisque
            
            .Range("A21") = TextBoxorigine
            .Range("E23") = CheckBox4
            .Range("E24") = CheckBox5
            .Range("E25") = CheckBox6
            
            
            .Range("A28") = TextBoxtravaux
            .Range("E31") = CheckBox7
            .Range("E32") = CheckBox8
            .Range("E33") = CheckBox9
            
            .Range("A36") = TextBoxobservation
            
            .Range("H15") = TextBoxconstructeur
            
            .Range("K17") = TextBoxdureevie1
            .Range("K18") = TextBoxdureevie2
            
            [h20].Select
    ActiveSheet.Pictures.Insert (Me.Image1.Picture)
          
        End With
            Application.ScreenUpdating = True
    Unload UserForm1
End Sub

 Private Sub Textboxdate_Change()
'Code permettant de mettre une date au format 00/00/0000 dans une textbox
Dim valeur As Byte
TextBoxdate.MaxLength = 8 'nb caractères maxi autorisé dans le textbox
valeur = Len(TextBoxdate)
If valeur = 2 Or valeur = 5 Then TextBoxdate = TextBoxdate & "/"

End Sub

Private Sub ComboBox4_Change()
    Dim c As Range, sh As Worksheet
    Set sh = Worksheets("01-données")
    Set c = sh.[B:B].Find(ComboBox4, LookIn:=xlValues, lookat:=xlWhole)
    TextBoximputation = IIf(c Is Nothing, "", c.Offset(, 1))
End Sub

Private Sub CommandButton3_Click()
 Dim NF
  NF = Application.GetOpenFilename("Fichiers jpg,*.jpg")
  If Not NF = False Then
    Me.CHEMIN = NF
    Me.Image1.Picture = LoadPicture(NF)
    Me.Image1.PictureSizeMode = fmPictureSizeModeStretch
  End If

merci de votre aide par avance
 
End Sub

Private Sub CommandButton4_Click()
Image1.Picture = LoadPicture("")
End Sub
 

bredeche

XLDnaute Occasionnel
Oui, je commençais à comprendre ça, et je refuse de vous aider sur un système aussi absurde. Votre feuille Trame deviendra la seule et unique feuille fiche servant à imprimer n'importe laquelle. Est-ce bien compris ?
non a chaque fois je cree une nouvelle fiche donc nouvelle onglet sous la forme de ma trame simplement
donc mon imagepicture s'appelle toujour image1 sur n'importe quel fiche

voir mon code du debut
VB:
 Application.ScreenUpdating = False
    'On crée les onglets
        'on copie le modèle en dernier
        Worksheets("03-TRAME").Copy After:=Worksheets(ThisWorkbook.Sheets.Count)
            With ActiveSheet
            .Name = Worksheets("00-RECAP").Range("B" & NewLig)    'je renome
            'Je remplit mon modèle comme je veut...
            
             Range("K1") = ActiveSheet.Name
            
             ..........
 

bredeche

XLDnaute Occasionnel
il faut que j’intervienne sur chaque fiche que de clique mode création et je modifie les propriétés
je voudrais que cela ce fasse automatiquement dans mon code vba
1035237
 

Dranreb

XLDnaute Barbatruc
Pas de problème je veux bien vous écrire de quoi modifier la fiche courante qui sera toujours dans la même feuille.
Un petit UserForm ne comportant que des ComboBox permettrait de l'initialiser à partir d'une ligne d'un tableau de base.
Mais à mon avis ce sera aussi simple de modifier dans l'UserForm, en prévoyant un bouton imprimer qui renseignera la fiche.
 

Dranreb

XLDnaute Barbatruc
Joignez un fichier exemple avec juste quelques lignes dans la feuille "Base" (de préférence sous forme de tableau Excel donnant lieu à un ListObject), la feuille "Fiche", et indiquez bien quels critères doinvent permettre de rappeler dans la fiche une ligne de la base.
Il est fort possibles que de simples formules dans la fiche conviennent, surtout si tous les renseignements par ailleurs peuvent être corrigés dans l'UserForm.
 

bredeche

XLDnaute Occasionnel
Joignez un fichier exemple avec juste quelques lignes dans la feuille "Base" (de préférence sous forme de tableau Excel donnant lieu à un ListObject), la feuille "Fiche", et indiquez bien quels critères doinvent permettre de rappeler dans la fiche une ligne de la base.
Il est fort possibles que de simples formules dans la fiche conviennent, surtout si tous les renseignements par ailleurs peuvent être corrigés dans l'UserForm.

ci dessous le lien car le fichier fais 70 mo environ

https://transfernow.net/87ac4411k2cd
 

Dranreb

XLDnaute Barbatruc
Étonnant qu'il soit si gros.
C'est quoi la base servant à garnir la fiche, "00-Recap" ou "02-Présentation Recap" ?
On va entrer si vous le voulez bien dans un moule donné par les deux classeurs joints.
Le GénérateurUFm ne permet pas pour l'instant d'implanter une image, ni l'objet ControlsAssociés d'en gérer une. Mais ça pourrait changer. Il me faudrait dans la Base une colonne pour le Chemin\NomDeFichier de l'image.
Ce serait intéressant qu'il y ait dans la fiche des formules renvoyant vers le titre de la base.
Je m'arrangerais pour qu'elles se transforment automatiquement en formules renvoyant vers la ligne sélectionnée dans la base par l'UserForm.
Édition: Important: Mettez la base sous forme de tableau. Ça permettra de mentionner dans le code les titres de ce tableau.
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Information: J'ai ajouté deux types de contrôles que l'objet ControlsAssociés ne prenait pas en charge: le Label et l'Image. Mais il faut que je les teste d'abord. Envoyez moi un classeur contenant une seule feuille Fiche avec des renvois vers les titres de la base.
Vous pouvez même y mettre les formules définitives: un renvoi vers une colonne entière suivi d'un espace suivi d'un nom dans la feuille se référant à une ligne de la base, que l'UserForm corrigera selon les choix dans les ComboBox.
Et, rappel : Mettez la plage de base sous forme de tableau. Ce n'est pas qu'une simple mise en forme: ça apporte des facilités de gestion des lignes et des colonnes.
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Le GénérateurUFm.xlsm (tiens je me suis trompé de fichier) sert à fabriquer des UserForm propres avec des noms de contrôles standardisés.
Le CBxLCtlA.xlsm demande la permission de s'installer en complément .xlam quand on l'ouvre.
Il contient la définition des objets ComboBoxLiées et ControlsAssociés. Une fois installé, la référence à son projet CLsCAs doit être cochée dans les références des projets où on veut les utiliser.
Commencez par établir une base contenant une colonne pour chaque champ de la fiche. Mettez la sous forme de tableau (groupe Style du menu Accueil, commande Mettre sous forme de tableau)
Définissez un nom dans la feuille par exemple PlgLCou (plage de la ligne courante) se référant à la ligne d'entêtes de ce ListObject.
Mettez dans chaque champ de la fiche une formule =Colonne PlgLCou.
Cela devrait y mettre l'intersection entre la colonne et la ligne de titre, donc le titre.
Quand on tapera des choses existantes dans les ComboBox, l'UserForm rectifiera la référence au nom PlgLCou de manière à ce que la fiche y soit aussitôt mise en conformité.
 

Pièces jointes

  • GénérateurUFm.xlsm
    191.1 KB · Affichages: 7
  • CBxLCtlA.xlsm
    168 KB · Affichages: 6
Dernière édition:

bredeche

XLDnaute Occasionnel
Le GénérateurUFm.xlsm (tiens je me suis trompé de fichier) sert à fabriquer des UserForm propres avec des noms de contrôles standardisés.
Le CBxLCtlA.xlsm demande la permission de s'installer en complément .xlam quand on l'ouvre.
Il contient la définition des objets ComboBoxLiées et ControlsAssociés. Une fois installé, la référence à son projet CLsCAs doit être cochée dans les références des projets où on veut les utiliser.
Commencez par établir une base contenant une colonne pour chaque champ de la fiche. Mettez la sous forme de tableau (groupe Style du menu Accueil, commande Mettre sous forme de tableau)
Définissez un nom dans la feuille par exemple PlgLCou (plage de la ligne courante) se référant à la ligne d'entêtes de ce ListObject.
Mettez dans chaque champ de la fiche une formule =Colonne PlgLCou.
Cela devrait y mettre l'intersection entre la colonne et la ligne de titre, donc le titre.
Quand on tapera des choses existantes dans les ComboBox, l'UserForm rectifiera la référence au nom PlgLCou de manière à ce que la fiche y soit aussitôt mise en conformité.

par ou je commence
j'ai bien mis le fichier aide et après???
cela me mais une erreur
1035330
 

Discussions similaires

Statistiques des forums

Discussions
312 095
Messages
2 085 249
Membres
102 835
dernier inscrit
Alexandrax971