Userform et Image, insertion et dimensionnement
Résolu
MrLafa
Messages postés
9
Statut
Membre
-
cs_Le Pivert Messages postés 8437 Statut Contributeur -
cs_Le Pivert Messages postés 8437 Statut Contributeur -
Bonjour,
je suis entrain de travailler sur un petit programme, jusqu’à présent j'étais pleinement satisfait de mon code.
Le principe étant que utilisateur renseigne un formulaire (userform), avec des infos texte et image. Ces infos sont ensuite envoyées vers une base de donné.
Ma BDD appartenait au même classeur que l'userform, je souhaite maintenant externalisé cette BDD.
Hors je n'arrive pas à adapter mon code
L'image insérée dans l'USF refuse de s’insérer dans la feuille du classeur externe (aucun message d'erreur à l’exécution)
De plus, je me suis rendu compte que le code que j'utilise ne garde pas les proportions de l'image, je souhaiterai donc également adapter le code dans ce sens.
Quelqu'un pourrait il m'aider?
Je travaille sous office 2016
Merci par avance
je suis entrain de travailler sur un petit programme, jusqu’à présent j'étais pleinement satisfait de mon code.
Le principe étant que utilisateur renseigne un formulaire (userform), avec des infos texte et image. Ces infos sont ensuite envoyées vers une base de donné.
Ma BDD appartenait au même classeur que l'userform, je souhaite maintenant externalisé cette BDD.
Hors je n'arrive pas à adapter mon code
L'image insérée dans l'USF refuse de s’insérer dans la feuille du classeur externe (aucun message d'erreur à l’exécution)
De plus, je me suis rendu compte que le code que j'utilise ne garde pas les proportions de l'image, je souhaiterai donc également adapter le code dans ce sens.
Quelqu'un pourrait il m'aider?
Je travaille sous office 2016
Merci par avance
Private Sub UserForm_Initialize()
'Chemin base de donnée
Workbooks.Open ("C:\Users\kentin\Desktop\Fiche NC\BDD_en_cours.xlsx")
Application.Wait Now + TimeValue("0:00:02")
'feuille BDD
Dim MNC As Worksheet
'feuille maquette NC
Set MNC = Workbooks("BDD_en_cours").Sheets("Maquette NC")
End Sub
.
.
Private Sub CommandButton10_Click()
On Error Resume Next
Dim L As Single, T As Single, W As Single, H As Single
cheminComplet = Application.GetOpenFilename
Me.Image8.Picture = LoadPicture(cheminComplet)
Me.Image8.Visible = True
TextBox160.Text = "Ok"
' Image dans la feuille
With MNC
L = .Range("C18").Left
T = .Range("C18").Top
W = .Range("C18:E18").Width
H = .Range("C18:E18").Height
.Shapes.AddPicture cheminComplet, True, True, L, T, W, H
.Shapes(5).Name = "photoNOK"
.Shapes.Range(Array("NOk")).Select
.ShapeRange.ZOrder msoBringToFront
End With
On Error GoTo 0
End Sub
A voir également:
- Application.dialogs(xldialoginsertpicture)
- Touche insertion clavier - Guide
- Image iso - Guide
- Insertion sommaire word - Guide
- Insertion filigrane word - Guide
- Insertion liste déroulante excel - Guide
3 réponses
Bonjour,
comme ceci à adapter:
@+ Le Pivert
comme ceci à adapter:
Private Sub UserForm_Initialize()
'Chemin base de donnée
Workbooks.Open ("C:\Users\LePivert\Documents\essai.xlsx")'a adapter
End Sub
Sub InsertionImage()
Dim Emplacement As Range
Application.Dialogs(xlDialogInsertPicture).Show
Workbooks("essai.xlsx").Worksheets("Feuil1").Activate 'a adapter
Set Emplacement = Range("C18:E25")
Selection.Left = Emplacement.Left
Selection.Top = Emplacement.Top
Selection.Height = Emplacement.Height
Selection.Width = Emplacement.Width
Selection.Name = "photoNOK"
End Sub
@+ Le Pivert
Comme ceci a adapter:
@+ Le Pivert
Option Explicit
Private Const Fichier As String = "C:\Users\LePivert\Documents\mondossier\ImageTemp.gif" 'a adapter
Private Sub CommandButton1_Click()
InsertionImage
End Sub
Private Sub UserForm_Initialize()
'Chemin base de donnée
Workbooks.Open ("C:\Users\LePivert\Documents\mondossier\essai.xlsx") 'a adapter
End Sub
Private Sub UserForm_Terminate()
'Supprime l'image temporaire si elle existe
If Dir(Fichier) <> "" Then Kill Fichier
End Sub
Sub InsertionImage()
Dim Emplacement As Range
Dim nb As Byte
Dim Sh As Shape
'Supprime l'image temporaire si elle existe
If Dir(Fichier) <> "" Then Kill Fichier
Application.Dialogs(xlDialogInsertPicture).Show
Workbooks("essai.xlsx").Worksheets("Feuil1").Activate
Set Emplacement = Range("C18:E25")
Selection.Left = Emplacement.Left
Selection.Top = Emplacement.Top
Selection.Height = Emplacement.Height
Selection.Width = Emplacement.Width
Selection.Name = "photoNOK"
'Définit le 1er shape de la feuille comme image
' à afficher dans l'UserForm
Set Sh = Worksheets("Feuil1").Shapes(1)
'copie le shape dans la feuille
Sh.CopyPicture
'crée un graphique
With ActiveSheet.ChartObjects.Add(0, 0, _
Sh.Width, Sh.Height).Chart
.Paste 'colle l'image dans graphique
' enregistre le graphique au format gif
.Export Fichier, "gif"
End With
nb = ActiveSheet.ChartObjects.Count
'supprime le graphique
ActiveSheet.ChartObjects(nb).Delete
'Affiche l'image dans le graphique
Image1.Picture = LoadPicture(Fichier)
End Sub
@+ Le Pivert
Merci encore pour le temps que tu pense à bidouiller tout ça
Le Option Explicit met le bazar dans mes variables défini dans le UserForm_Initialize(), elles ne sont plus reconnu...
D'autre part, j'ai bossé un peu dessus cet après midi, j'ai réussi à bricoler un code qui fait ce que j'ai besoin.
Mais il se passe quelque chose incompréhensible
j'ai donc une code, deux photo au même format, le code ne réagit pas pareil en fonction de la photo
Pour la première, tout ce passe bien, insertion, positionnement et dimensionnement
Pour la seconde le code se contente de m’insérer la photo...
je ne comprends pas..
Le Option Explicit met le bazar dans mes variables défini dans le UserForm_Initialize(), elles ne sont plus reconnu...
D'autre part, j'ai bossé un peu dessus cet après midi, j'ai réussi à bricoler un code qui fait ce que j'ai besoin.
Mais il se passe quelque chose incompréhensible
j'ai donc une code, deux photo au même format, le code ne réagit pas pareil en fonction de la photo
Pour la première, tout ce passe bien, insertion, positionnement et dimensionnement
Pour la seconde le code se contente de m’insérer la photo...
je ne comprends pas..
'Dim L As Single, T As Single, W As Single, H As Single
'Dim Emplacement As Range
''
'chemincomplet = Application.GetOpenFilename
'
' Me.Image8.Picture = LoadPicture(chemincomplet)
' Me.Image8.Visible = True
' TextBox160.Text = "Ok"
'
' MNC.Range("B6").Select
' ActiveSheet.Pictures.Insert(chemincomplet).Select
' Selection.ShapeRange.Name = "photoNOK"
' MNC.Shape("photoNOK").Select
'
'
' Selection.Left = Range("C18").Left
' Selection.Top = Range("C18").Top
' Selection.Height = Range("C18:E31").Height
voici le code,:
@+ Le Pivert
Private Sub CommandButton1_Click()
Dim Emplacement As Range
Dim chemincomplet As String
chemincomplet = Application.GetOpenFilename
Me.Image1.Picture = LoadPicture(chemincomplet)
' Me.Image8.Visible = True
'TextBox160.Text = "Ok"
' MNC.Range("B6").Select
Workbooks("essai.xlsx").Worksheets("Feuil1").Activate
ActiveSheet.Pictures.Insert(chemincomplet).Select
Selection.ShapeRange.Name = "photoNOK"
'MNC.Shape("photoNOK").Select
Selection.Left = Range("C18").Left
Selection.Top = Range("C18").Top
Selection.Height = Range("C18:E31").Height
End Sub
Private Sub UserForm_Initialize()
Workbooks.Open ("C:\Users\LePivert\Documents\essai.xlsx") 'a adapter
End Sub
@+ Le Pivert
Merci beaucoup!
Hors images, le transfert du contenue des textbox vers ma base de donnée marchait très bien
Et à force de bidouiller à droite à gauche, ce transfert ne marche plus, erreur "424 objet requis"
Je pense que cela vient de la déclaration des variables, débutant en VBA je suis un peu perdu
Hors images, le transfert du contenue des textbox vers ma base de donnée marchait très bien
Et à force de bidouiller à droite à gauche, ce transfert ne marche plus, erreur "424 objet requis"
Je pense que cela vient de la déclaration des variables, débutant en VBA je suis un peu perdu
Private Sub UserForm_Initialize()
'Application.Visible = False
'Date
Me.TextBox131.Text = Format(Now, "dd/mm/yyyy")
'Format date
Me.TextBox156.Text = Format(Now, "yy")
'Chemin base de donnée
Workbooks.Open ("N:\xxxxx\xxxxxxxxx\xxxxxxxxxxx\xxxxxx\BDD_en_cours.xlsx")
Application.Wait Now + TimeValue("0:00:02")
'feuille BDD
Dim BDD As Worksheet
Dim MNC As Worksheet
Dim FPF As Worksheet
Dim PLV As Long
Dim DLP As Long
'feuille BDD
Set BDD = Workbooks("BDD_en_cours.xlsx").Sheets("BDD")
'feuille maquette NC
Set MNC = Workbooks("BDD_en_cours.xlsx").Sheets("Maquette NC")
'feuille parametre
Set FPF = Workbooks("BDD_en_cours.xlsx").Sheets("FPF Finale")
'Premiere Ligne vide
PLV = BDD.Range("A1").End(xlDown).Offset(1, 0).Row
'Derniere Ligne Plein
DLP = BDD.Range("A1").End(xlDown).Row
'Increment référence
If BDD.Range("A3") = "" Then
Me.TextBox157.Text = "1"
Else: Me.TextBox157.Text = BDD.Range("S" & DLP).Value + 1
End If
End Sub
Private Sub CommandButton12_Click()
'copie des données vers BDD
With BDD
.Range("A" & PLV) = TextBox11.Value
.Range("B" & PLV) = TextBox118.Value
.Range("C" & PLV) = TextBox9.Value
.Range("D" & PLV) = TextBox10.Value
.Range("E" & PLV) = TextBox162.Value
.Range("F" & PLV) = TextBox21.Value
.Range("G" & PLV) = TextBox22.Value
.Range("H" & PLV) = TextBox24.Value
.Range("I" & PLV) = TextBox163.Value
.
.
.
.End with
End sub
Là on sort de la demande initiale.
Je pense que cela vient de la déclaration des variables, débutant en VBA je suis un peu perdu
pourquoi mettre Option Explicit ?
pour déclarer toutes les variables
Sans le classeur on ne peux pas beaucoup aider!
Si le problème est résolu au niveau de l'image, cliquez sur résolu.
Faire un nouveau post pour ce nouveau problème.
@+ Le Pivert
Je pense que cela vient de la déclaration des variables, débutant en VBA je suis un peu perdu
pourquoi mettre Option Explicit ?
pour déclarer toutes les variables
Sans le classeur on ne peux pas beaucoup aider!
Si le problème est résolu au niveau de l'image, cliquez sur résolu.
Faire un nouveau post pour ce nouveau problème.
@+ Le Pivert
Voilà une bonne raison de mettre Option Explicit
https://grenier.self-access.com/access/visual-basic/de-linteret-de-option-explicit/
@+
https://grenier.self-access.com/access/visual-basic/de-linteret-de-option-explicit/
@+
Cependant je perds la prévisualisation de l'image dans le userform.
"me.image8" dans le code de mon premier message
Aurais tu une solution?