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
 

Dranreb

XLDnaute Barbatruc
Bonjour.
Non, je n'ai pas d'outils qui créent des base de données quand même.
Excel a déjà la commande Mettre sous forme de tableau qui est pas mal, et fabrique à partir d'une plage d'abord ordinaire un ensemble commode à gérer puisque munie de propriété ListRows et ListColumns qui sont des collections, munies donc des méthodes Add et Delete.
Je vous ai envoyé ça en prévision de la suite.
Ce que j'aimerais c'est que vous commenciez par créer ce ListObject, et que vous mettiez dans chaque champ de la fiche une formule =Colonne PlgLCou
Coté UserForm, je joins deux classeurs pour que vous voyez un peu où je veux en venir.
Celui de Tomasdu43 n'a pas, dans dans son UserForm, de système de mise à jour, par contre il a un système de formules dans une grosse fiche, différent toutefois de ce que je vous propose (=INDEX(Colonne;NLig) au lieu de l'intersection =Colonne PlgLCou), mais le principe sera à peu près le même. Au lieu de Feuil2.Names.Add "LGén", Lignes(1) + 1 ce sera FeuilX.Names.Add "PlgLCou", CL.Lignes(LCou).Range
 

Pièces jointes

  • CbxLiéesYahyaBelbachir.xlsm
    49.8 KB · Affichages: 5
  • CBxLiéesThomasdu43.xlsm
    194.6 KB · Affichages: 4
Dernière édition:

Dranreb

XLDnaute Barbatruc
Remarque: Il serait concevable, si ça avait votre préférence, de mettre à jour la base depuis la fiche, l'UserForm se bornant à sélectionner la ligne après l'avoir éventuellement créée et à corriger l'image.
Le principe: La ligne en cours d'affichage serait la seule à porter des formules renvoyant vers les champs de la fiche, et quand il change de ligne il fige les valeurs de l'ancienne, se sert néanmions de ces formules pour retrouver… oui enfin je ne vais pas détailler tout le processus ici …
 
Dernière édition:

bredeche

XLDnaute Occasionnel
Remarque: Il serait concevable, si ça avait votre préférence, de mettre à jour la base depuis la fiche, l'UserForm se bornant à sélectionner la ligne après l'avoir éventuellement créée et à corriger l'image.
Le principe: La ligne en cours d'affichage serait la seule à porter des formules renvoyant vers les champs de la fiche, et quand il change de ligne il fige les valeurs de l'ancienne, se sert néanmions de ces formules pour retrouver… oui enfin je ne vais pas détailler tout le processus ici …
j'ai rempli les info pour crée userform et cela me génère une erreur
 

Pièces jointes

  • GénérateurUFm.xlsm
    165.8 KB · Affichages: 4

Dranreb

XLDnaute Barbatruc
Code Ckx ou Chk plutôt
(Logiquement il aurait fallu CBx, mais c'était déjà pris pour la ComboBox)
1035344
 

bredeche

XLDnaute Occasionnel
car dans mon fichier précédant je duplique une fiche pour facilite les utilisateur et après il modifie la fiche correspondant sélectionne
peut être a place de valider il faut mettre créé nouvelle fiche

j'ai modifier les mémo des checkbox ils sont différents mais cela mets encore une erreur
 

Pièces jointes

  • GénérateurUFm.xlsm
    165.8 KB · Affichages: 6

Dranreb

XLDnaute Barbatruc
J'ai dit: Pas d'espace dans les Mnémo. "sous traitant" pas valide. Mettez "SousTrait"
Le CBnValider affichera aussi déjà "Ajouter" quand aucune ligne existante n'aura été isolée.
Je propose un bouton "Mémoriser" qui notera les valeurs dans un TVLMém(), et lors de la frape d'une combinaison inexistante il en affichera le contenu au lieu de celui d'un tableau vide.
 
Dernière édition:

bredeche

XLDnaute Occasionnel
J'ai dit: Pas d'espace dans les Mnémo. "sous traitant" pas valide. Mettez "SousTrait"
Le CBnValider affichera aussi déjà "Ajouter" quand aucune ligne existante n'aura été isolée.
Je propose un bouton "Mémoriser" qui notera les valeurs dans un TVLMém(), et lors de la frape d'une combinaison inexistante il en affichera le contenu au lieu de celui d'un tableau vide.
j'ai modifier mes éléments plus d'espace plus de doublon et j'ai mis memoriser a la place de modifier
et cela mets une erreurs
 

Pièces jointes

  • GénérateurUFm.xlsm
    166.2 KB · Affichages: 5

Discussions similaires