Récuperer valeur cellule pour variable

FOUQUET Yves

XLDnaute Occasionnel
Bonsoir,

Avez vous 5 mn pour m'aider...
Je débute à peine dans VisualBasic.
Mon problème: Récupérer la valeur d'une cellule d'excel pour positionner l'écriture de nouvelle ligne dans mon tableur.

Dim Nbr As Variant 'Ma variable
With Sheets("Feuil2") 'Ma feuille Excel

'feuil2 est ma feuille de calcul Excel
'dans la cellule C6 il y a un nombre entier 23
'Je voudrais le récupérer pour le mettre dans la variable Nbr
'Cette variable servant à me positionner sur une ligne précise de mon tableur
'pour integrer des données de saisie
'-----------------------------------------------------------------------------------------------------------------------
.Range(Nbr).Value = ("C" & 6) 'C'est là que ça ne marche pas!!

' Là j'intégre à partir de Nbr

L = .Range("a" & Nbr + 7).End(xlUp).Row + 1 'Permet de se positionner sur la ligne de tableau définie par Nbr

.Range("A" & L).Value = CDate(TextBox1) 'Insère la donnée de la textbox1 dans la colonne A comme une date
.Range("B" & L).Value = ComboBox1 'Insère la donnée de la liste déroulante dans la colonne B
.Range("D" & L).Value = ComboBox2
.Range("E" & L) = ValeurTBx(TextBox5) 'Insére la donnée formatée monétaire dans la colonne E
.Range("H" & L).Value = ComboBox3
.Range("I" & L).Value = TextBox2
.Range("J" & L).Value = TextBox3
.Range("K" & L).Value = TextBox4
.Range("F" & L).Value = "," ' Colonne de pointage avec relevé banque, passe à "," par défaut
'----------------------------------------------------------------------------------------------------------------------
Voilà si quelqu'un peut m'aider car je galère...
Merci d'avance.
Yves
 

Staple1600

XLDnaute Barbatruc
Re

Bah pour reprendre le précédent mode opératoire
Tu testes sur un classeur vierge ou tu as auras recopié mon code du message#69
Auquel tu rajoute les deux dernières macros
Ensuite tu copies une image dans le dossier ou sera enregistrée le classeur que tu nommes Image.jpg
(Ca c'est pour tester MainA)

Pour MainB, tu remplaces "C:\Users\Toto\Image.jpg" par le chemin d'un dossier qui existe sur ton disque dur dans lequel il y aura une image nommée Image.jpg

Et pour tester tu lances MainA

Et ensuite second test, en lançant MainB

PS: J'ai enfilé mon pyjama en pilou, les quenottes sont brossées, ma vessie vidée, je peux donc aller au dodo ;)
 

FOUQUET Yves

XLDnaute Occasionnel
Bonjour camarade,

Une nuit de sommeil réparateur et me voilà à taper sur le clavier de mon ordinateur.
La procédure d'envoi intégrer dans mon Userform fonctionne très bien.
Elle ouvre automatiquement Outlook, va chercher l'image, la colle dans le corps du teste et dans la pièce jointe (l'un ne va pas sans l'autre), et le message part seul.
Il y a un problème à régler de dimensionnement de l'image dans le message. Elle est toute petite... pour pas dire minuscule!
Tu sais comment on peut remedier à cela. Surtout que c'est du texte à lire et donc...

Merci de ton aide et bonne journée.
Yves.

Je colle toute ma procédure:
VB:
'============= début procédure ouverture Outlook =======================
Function OutlookOuvert() As Boolean
  Dim oOL As Object
  On Error Resume Next
  Set oOL = GetObject(, "Outlook.Application")
  On Error GoTo 0
  OutlookOuvert = Not (oOL Is Nothing)
  Set oOL = Nothing
End Function
'--------------------------

Private Sub CommandButton2_Click()        ' ceci correspond au bouton "Envoyer le message" qui ouvre et compléte Outlookexpress
'================================================
Dim PathName As String
Dim i As Integer

  If OutlookOuvert = False Then i = Shell("Outlook", vbNormalNoFocus)

  With Application.FileDialog(msoFileDialogFilePicker)
    .InitialFileName = "D:\Gestion AHI\Bonjour XXXX.jpg" ' Chemin du fichier
    If .Filters.Count > 0 Then .Filters.Delete
    .Filters.Add "Images", "*.gif; *.png; *.jpg; *.jpeg", 1
    .AllowMultiSelect = False
    'If .Show = False Then Exit Sub
    'PathName = .SelectedItems(1)
    'EmbedPicture "D:\Gestion AHI\Bonjour XXXX.jpg"
  End With
  Call EmbedPicture("D:\Gestion AHI\Bonjour XXXX.jpg")
End Sub


Sub EmbedPicture(PathName As String)
  Dim MyPicture As String
  Dim ligne As Integer

  ligne = Me.ComboBox1.ListIndex + 1
  'se positionne sur l'index (ligne) du nom combobox
  'récuperer les infos dans combobox

  MyPicture = Mid(PathName, InStrRev(PathName, Application.PathSeparator) + 1)
  With CreateObject("Outlook.Application").CreateItem(0)
    .Attachments.Add "D:\Gestion AHI\Bonjour XXXX.jpg"
    .HTMLBody = "<html><p>Cher(e) ami(e) bonjour,</p> En ce jour particulier, un mot du président d'A.H.I</p>" & _
                "<img src=cid:" & Replace(MyPicture, " ", "%20") & _
                "<p>Bon anniversaire,</p>" & _
                "<p>" & "</p></html>"
               
    .To = Range("C" & ligne).Value
    .Subject = " Anniversaire "
    .Display
    .Send
  End With
Attendre 5  ' j'attends 5 secondes. Fonction définie plus haut

'Outlook.Quit là je ne sais pas que faire
'car outlook ferme trop tôt et le message n'est pas parti!!!!
'donc pour l'instant je zappe

End Sub
' ==== fin de procédure envoi du message =====
 

Staple1600

XLDnaute Barbatruc
Bonsoir le fil

Précédemment, tu parlais du fait le répertoire et le nom de l'image soient connus à l'avance
Donc normalement, ceci devrait suffire pour le code du CommandButton2
VB:
Private Sub CommandButton2_Click()
' ceci correspond au bouton "Envoyer le message" qui ouvre et compléte Outlook
'================================================
Dim PathName As String
Dim i As Integer
If OutlookOuvert = False Then i = Shell("Outlook", vbNormalNoFocus)
EmbedPicture "D:\Gestion AHI\Bonjour XXXX.jpg"
End Sub
 

FOUQUET Yves

XLDnaute Occasionnel
Voilà le code actuel qui fonctionne mais toujours très petite photo dans le corps du message.


VB:
'============= debut procedure ouverture Outlook =======================

Function OutlookOuvert() As Boolean
  Dim oOL As Object
  On Error Resume Next
  Set oOL = GetObject(, "Outlook.Application")
  On Error GoTo 0
  OutlookOuvert = Not (oOL Is Nothing)
  Set oOL = Nothing
End Function
'--------------------------

Private Sub CommandButton2_Click()
' ceci correspond au bouton "Envoyer le message" qui ouvre et compléte Outlook
'================================================
Dim PathName As String
Dim i As Integer

If OutlookOuvert = False Then i = Shell("Outlook", vbNormalNoFocus)
EmbedPicture "D:\Gestion AHI\Bonjour XXXX.jpg"
End Sub
'==============================================

Sub EmbedPicture(PathName As String)
  Dim MyPicture As String
  Dim ligne As Integer

  ligne = Me.ComboBox1.ListIndex + 1  'se positionne sur l'index (ligne) du nom combobox

  MyPicture = Mid(PathName, InStrRev(PathName, Application.PathSeparator) + 1)
  With CreateObject("Outlook.Application").CreateItem(0)
    .Attachments.Add "D:\Gestion AHI\Bonjour XXXX.jpg"
    .HTMLBody = "<html><p>Cher(e) ami(e) bonjour,</p> En ce jour particulier, un mot du président d'A.H.I</p>" & _
                "<img src=cid:" & Replace(MyPicture, " ", "%20") & _
                "<p>Bon anniversaire,</p>" & _
                "<p>" & "</p></html>"
               
    .To = Range("C" & ligne).Value
    '.To = "yves.***********@xxxxx.xxxx" 'à remplacer au final
    .Subject = " Anniversaire "
    .Display
    .Send
  End With
Attendre 5
'Outlook.Quit
End Sub
' ==== fin de procédure envoi du message =====
 
Dernière édition:

FOUQUET Yves

XLDnaute Occasionnel
J'ai mis ta procédure dans un Excel vierge, Outlook ouvert et je la re-teste à nouveau pour le même résultat. Petite image.
Par contre si:
avant l'envoie, je me mets sur le petit carré de la petite image et je fais manuellement insérer une image, je choisis la même image, je valide, alors là elle s’insère un grand bon format en lieu et place de la petite.
 

FOUQUET Yves

XLDnaute Occasionnel
Tu es dur toi!
Mais j'ai fait ce que tu m'as dit: j'ai passé la balayette.... le résultat est le même!

VB:
Dim PathName As String
Dim i As Integer

If OutlookOuvert = False Then i = Shell("Outlook", vbNormalNoFocus)
EmbedPicture "D:\Gestion AHI\Bonjour XXXX.jpg"
End Sub
'==============================================

Sub EmbedPicture(PathName As String)
  Dim MyPicture As String
  Dim ligne As Integer

  ligne = Me.ComboBox1.ListIndex + 1  'se positionne sur l'index (ligne) du nom combobox

  MyPicture = Mid(PathName, InStrRev(PathName, Application.PathSeparator) + 1)
  With CreateObject("Outlook.Application").CreateItem(0)
    .Attachments.Add "D:\Gestion AHI\Bonjour XXXX.jpg"
    .HTMLBody = "<html><p>Cher(e) ami(e) bonjour,</p> En ce jour particulier, un mot du président d'A.H.I</p>" & _
                "<img src=cid:" & Replace(MyPicture, " ", "%20") & _
                "<p>Bon anniversaire,</p>" & _
                "<p>" & "</p></html>"
               
    '.To = Range("C" & ligne).Value
    '.To = "yves..xxxxxxxxx260853@xxxxx.cccc" 'à remplacer au final
    '.Subject = " Anniversaire "
    .Display
    .Send
  End With
'Attendre 5
'Outlook.Quit
End Sub
' ==== fin de procédure envoi du message =====
 
Dernière édition:

FOUQUET Yves

XLDnaute Occasionnel
Mais pourquoi ne me dis tu pas "efface l'adresse mail" ? tout simplement. Je croyais que c'était dans la programamtion qu'il falalit effacer les lignes!!
Pour l'adresse OK mais visiblement on est pas dix mille sur ce port.
Bon, pourquoi quand je zappe la ligne de la piece jointe il ne veut plus mettre de photo dans le corps du mail. Pourtant c'est deux choses différentes non ?


PS: je vais faire le ménage
 

Staple1600

XLDnaute Barbatruc
Re

Yves
Comme précédemment indiqué, lorsque j'ai testé le code (que j'ai posté dans le message#66) au boulot.
Code testé tel quel dans un classeur vierge (et sans userform), l'image est bien insérée et sa taille est "normale"

Comme ici, je n'ai pas Outlook, je ferai d'autres tests lundi prochain.

[aparté]
La prochaine fois merci de faire attention rapport aux données confidentielles ;)
NB: tu étais pourtant averti depuis les messages 15 et 18 de ta discussion ;)
[/aparté]
 

Discussions similaires

Réponses
4
Affichages
209

Statistiques des forums

Discussions
312 198
Messages
2 086 132
Membres
103 127
dernier inscrit
willwebdesign