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
 

FOUQUET Yves

XLDnaute Occasionnel
Bonsoir,

Bon, j'ai également réglé mon problème de transfert de variable pour ouvrir feuille dans Userforme.
Il fallait utiliser: ThisWorkbook.Sheets(feuille).Select
Une chose de faite.
Maintenant je voudrai en sortant de l'userform Menu bonton quitter que mon travail soit enregistré à travers l'enregistrement du document Excel sur lequel j'interviens à travers plusieurs Userform..
Si quelqu'un à une suggestion, une piste,... je suis preneur parce que là je ne trouve pas.
Mon document Excel s'appelle "Projet sestion AHI " et c'est lui qu'il faut fermer...
Merci.
 

FOUQUET Yves

XLDnaute Occasionnel
Bonjour,

Quelqu'un peut me dire pourquoi dans ce bloc, je ne me retrouve pas dans le bon répertoire D:\Gestion AHI\ à l'enregistrement ?

VB:
'================  debut SUB  =========================
'Correspond au programme du bouton QUITTER
Private Sub CommandButton3_Click()
Dim fichier As String
Unload Me

   On Error Resume Next
   ChDir "D:\Gestion AHI\"
   fichier = Application.GetSaveAsFilename(fileFilter:="Excel Files (*.xls), *.xls")
   If fichier <> False Then ThisWorkbook.SaveAs fichier

'CH = "E:\Facture\" & Me.ComboBox1.Value & "\" 'définit le chemin d'accès au fichier
'ThisWorkbook.SaveAs (*.xls), *.xls") 'enregistre le fichier sous (extension à adapter)

End Sub
/CODE]

Merci d'avance.
 

Staple1600

XLDnaute Barbatruc
Bonsoir

D'habitude, on écrit la chose ainsi, non?
VB:
Private Sub CommandButton3_Click()
Dim fichier As String
On Error Resume Next
   ChDir "D:\Gestion AHI\"
   fichier = Application.GetSaveAsFilename(fileFilter:="Excel Files (*.xls), *.xls")
   If fichier <> False Then ThisWorkbook.SaveAs fichier
Unload Me
End Sub
 

FOUQUET Yves

XLDnaute Occasionnel
Oh! Vaut mieux un qui sait que dix qui cherche...
Un grand merci mais ce qui te parait évident, toi qui a l'air de connaitre ça sur le bout des doigts, ressemble pour moi à un défi permanent.
Trouver les bonnes expressions, les mettre au bon endroit, avec la bonne syntaxe, ... c'est aussi compliqué que vouloir écrire en chinois.

Un grand MERCI tout de même et surtout reste à l'écoute j'arrive maintenant dans l'affichage de liste de personnes d'une feuille Excel a l'écran. Mais il 1h du mat et je vais dormir.
Bonsoir.
 

FOUQUET Yves

XLDnaute Occasionnel
Bonjour,

J'essaye d'envoyer un mail directement de mon Userfrom via Outlook.
Ca j'ai réussi si il n' y a que du texte. Mais je voudrais mettre une image dans le corps du message.
J'ai trouvé ce code mais qui me renvoie toujours une erreur "chemin introuvable". J'ai essayé de déplacer mon fichier y compris à la racine C:\ mais rien n'y fait.
Quelqu'un a peut être une idée...
VB:
Private Sub CommandButton2_Click() ' ceci correspond au bouton "Envoyer le message" qui ouvre et compléte Outlookexpress
'================================================

Dim objOL As Object, ObjMail As Object
    Dim oAttach As Object, ColAttach As Object
 
    Set objOL = CreateObject("Outlook.Application")
    Set ObjMail = objOL.CreateItem(0)
    Set ColAttach = ObjMail.Attachments
    Set oAttach = ColAttach.Add("C:\Bonjour XXX.jpg>") 'Changer le chemin et le nom de l'image RIEN NE PASSE!
 
    With ObjMail
        .To = Cells(8, 11)
        .CC = Cells(9, 11)
        .Subject = Cells(7, 11) & "Test" & Cells(7, 3)
        .HTMLBody = "<BODY><FONT face=Arial color=#000080 size=2></FONT>" & _
            "Bonjour, <br><br><IMG src=cid:Bonjour XXXX.jpg></BODY>"   'Nom de l'image sans chemin
        ObjMail.Save
        .Display    'Send   Display permet d'afficher le message, Send l'envoie sans affichage
    End With
 
'    ActiveWorkbook.Close
 
    Set oAttach = Nothing
    Set ColAttach = Nothing
    Set ObjMail = Nothing
    Set objOL = Nothing

Merci d'avance de votre aide.
Cordialement.
 

Staple1600

XLDnaute Barbatruc
Bonsoir le fil, Yves

Yves
VB:
'source:oz|ZVI-25319
Sub Main()  Dim PathName As String
  With Application.FileDialog(msoFileDialogFilePicker)
    '.InitialFileName = "D:\Temp\" ' <-- Use this line to set a default folder
    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)
  End With
  Call EmbedPicture(PathName)
End Sub


Sub EmbedPicture(PathName As String)
  Dim MyPicture As String
  MyPicture = Mid(PathName, InStrRev(PathName, Application.PathSeparator) + 1)
  With CreateObject("Outlook.Application").CreateItem(0)
    .Attachments.Add PathName
    .HTMLBody = "<html><p>This is a picture</p>" & _
                "<img src=cid:" & Replace(MyPicture, " ", "%20") & _
                "<p>Best Regards,</p>" & _
                "<p>" & UCase(Environ("USERNAME")) & "</p></html>"
    .Display
  End With
End Sub
 

FOUQUET Yves

XLDnaute Occasionnel
Et je mets ça ou ?
Là j'arrive à mettre une image en pièce jointe, puis je suis arrivé à intégrer l'image dans le message mais tout fonctionnait sauf que j'avais un carré rouge avec une croix dans le message mais pas l'image.
Je te mets mon code tel qu'il est maintenant et si tu peux me dire ou j'intégre ton code cela m'aiderai beaucoup.

Un grand merci.

VB:
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
'================================================



'Avant de lancer cette macro, Dans l'éditeur VBA: Faire Menu / Tools / Reference / Cocher "Microsoft Outlook Library"
'Il est possible de vérifier avant l'exécution de la macro si la référence est activée ou non, et de l'activer si ce n'est pas le cas
 Dim Ol As New Outlook.Application
 Dim Olmail As MailItem
 Dim CurrFile As String
 Dim ligne As Integer
 Dim i
 Dim filename As String
'-----------------------
 If OutlookOuvert = False Then i = Shell("Outlook", vbNormalNoFocus)
    filename = "Bonjour XXX.jpg"
    ligne = Me.ComboBox1.ListIndex + 1  'se positionne sur l'index (ligne) du nom selectionné dans la combobox
    Set Ol = New Outlook.Application
    Set Olmail = Ol.CreateItem(olMailItem)
    With Olmail
        .To = Range("C" & ligne).Value
        .Subject = Range("E1").Value  ' E1 cellule qui contient du texte qui va aussi dans le corps du message
        ' j'ai fait des essais avec ça mais !!! .HTMLBody = "<img src=[B]D:\Gestion AHI\Bonjour XXX.jpg>"[/B] '& "<br /><br /><br />"  ' & Range("F1").Value   'image
                                                                                                                                                  '& "corps de texte" 'insertion du texte
        ' et aussi avec ça!!!  .HTMLBody = "<img src='[B]D:\Gestion AHI\Bonjour XXXX.jpg[/B]" & "'" & "width='400' height='130'>" & " <br><br>" & Range("F1").Value
        .Body = Range("F1").Value     ' F1 cellule contient du texte qui va aussi dans le corps du message
        .Attachments.Add [B]"D:\Gestion AHI\Bonjour XXXX.jpg"[/B]
        '.Display   '<- affiche l'email (si vous ne voulez pas l'afficher, mettez cette ligne en commentaire)
        '.Save      '<- sauvegarde l'email avant l'envoi (pour ne pas le sauvegarder, mettez cette ligne en commentaire)
        .Send       '<- envoie l'email (si vous voulez seulement préparer l'email et l'envoyer manuellement, mettez cette ligne en commentaire)
              
    End With

Attendre 5
'Outlook.Quit
End Sub
 

Staple1600

XLDnaute Barbatruc
Re

Testes déjà le code* tel quel sur un classeur vide (et avec Outlook ouvert)
pour voir déjà ce que fait le code.

Ensuite, compare avec ce qu'il a déjà dans ton code

PS: *:Je ne peux pas t'en dire plus pour le moment
(sur ce PC ou je suis actuellement connecté sur XLD, je n'utilise pas Outlook)

[aparté capillaro-tracté ;)]
Tu es fan de Julien Clerc?
Notamment: "La Cavalerie"
[/aparté]
 
Dernière édition:

FOUQUET Yves

XLDnaute Occasionnel
J'ai testé et rien ne se passe l'userforme s'ouvre et puis plus rien!
1030755


Pour sortir je clique sur la croix et puis c'est fini...

Pour Julien Clerc, ??
 

Staple1600

XLDnaute Barbatruc
Bonsoir le fil, Yves

Je n'ai jamais parlé d'userform pour faire le test ;)
J'avais sciemment écrit
Testes déjà le code* tel quel sur un classeur vide (et avec Outlook ouvert)
pour voir déjà ce que fait le code.
Donc c'est ce que j"ai fait ce matin au boulot (où j'utilise Outlook)
Et je confirme que cela fonctionne très bien.
Tu lances la procédure nommée MAIN
1) S'affiche alors une boite de dialogue te demandant de sélectionner un fichier image
2) Un mail est ensuite créé et l'image sélectionnée insérée dans le corps du mail.

[aparté (donc tiré par les cheveux)]
La Cavalerie
=>Cavalier
=>Un message* sans même un petit bonsoir à mon endroit, n'est-ce point là, cavalier, camarade Yves ? ;)
*: j'évoquais le message#70
[tiré par les cheveux comme j'avais dit, non ? ;)]
 
Dernière édition:

FOUQUET Yves

XLDnaute Occasionnel
Salut, bonjour, ça va,

Bon trêve de plaisanterie.
Je ne comprends pas ce que tu me dis.
J'ouvre un classeur Excel.
Et puis je fais un copie collé où ?

Je sais, je suis certainement borné mais je me permets de dire que tu n'es pas très explicite... lol
Alors, le débutant que je suis a besoin de plus de détail sur ce que je dois faire.

Merci
et, bonsoir, au revoir, bonne soirée, bonne nuit, bon réveil et... à te lire.
Le camarade Yves;
mais pourquoi camarade? ........
 

Staple1600

XLDnaute Barbatruc
Re,

Yves
Au vue de des codes que tu emploies dans ton fil, tu n'es pas ce que j’appellerai un débutant ;)
Donc pour tester le dernier code que j'ai posté
1) Tu ouvres Outlook (puis tu le réduit), ensuite tu ouvres Excel
2) Dans Excel, faire ALT+F11 -> Insertion/Module -> là tu colles le code VBA
3) ALT+F11 -> Affichage -> Macros -> Tu sélectionnes MAIN puis tu cliques sur Exécuter.

Donc tout ceci, c'est juste pour tester
(ce n'est pas une solution à ta question)

Pourquoi camarade ?
Parce que sur XLD, nous sommes tous camarades, non ? ;)
Ou si tu préfères c'était juste un trait d'humour de ma part
J'aurai pu aussi écrire: padawan Yves ;)
Bref rien qui mérite qu'on se formalise.
 

FOUQUET Yves

XLDnaute Occasionnel
Bien, je m'en vais tester cela mon camarade!

Mais je te donne ma parole, il y a dix jours je ne savais pas ce qu'était VBA. Je me suis amusé il y a très longtemps sur du turbopascal puis un peu sur Delphi, mais pas plus. La plupart des procédures que j'utilise sont des copies collé et puis je teste voir si cela fonctionne et j'essaye pas à pas de comprendre c'est tout. J'avoue que j'ai bien avancé. Juste j'ai compris le principe voilà.
Je n'ai rien contre les camarades bien au contraire.... C'est un joli nom camarade, c'est un joli nom tu sais.
 

FOUQUET Yves

XLDnaute Occasionnel
Bien, j'ai intégrer ta proposition à ma procédure et cela fonctionne. J 'ai même pu ajouter la commande d'ouverture d'Outlook, j'ai modifié la teneur du message et integre l'objet et le destinataire. Grâce à toi j'ai résolu 95% de mon problème. Merci. Reste qui si on n'avait pas à sélectionner l'image et qu'elle se mette directement ce serait alors parfait... Je sens que tu vas y réfléchir camarade. Moi j'abandonne. Deja tard et ça fait dix jours que ça dure . Demain je poste le code tel qu'il est et qui fonctionne.
Bonne nuit camarade.
 

Staple1600

XLDnaute Barbatruc
Re

C'est tout réfléchi ;)
Il suffit de simplifier comme ceci
VB:
Sub MainA()
Dim PathName As String
PathName = ThisWorkbok.Path & "\image.jpg"
Call EmbedPicture(PathName)
End Sub
Ou comme cela
VB:
Sub MainB()
EmbedPicture "C:\Users\Toto\Image.jpg"
End Sub
 

Discussions similaires

Réponses
4
Affichages
209

Membres actuellement en ligne

Statistiques des forums

Discussions
312 206
Messages
2 086 219
Membres
103 158
dernier inscrit
laufin