Microsoft 365 Envoi plage dans corps d'un mail

eric72

XLDnaute Accro
Bonjour,
Je tente d'envoyer une plage de cellule qui s'affiche dans le corps du mail avec ce code:
Sub envoiPlageCellules_Excel()
ActiveSheet.Range("A1:k10").Select ' la plage de cellules à envoyer
'ActiveWorkbook.EnvelopeVisible = True

With ActiveSheet.MailEnvelope
.Introduction = "essai envoi"
.Item.To = "...........@sfr.fr"
.Item.Subject = Range("s2")
.Item.Send
End With
Range("A1").Select
End Sub

Le résultat est que : ca ferme le fichier excel et ca l'ouvre à nouveau, de plus
ca me bloque outlook qui me dit qu'un autre programme utilise outlook
Je ne comprend pas trop le pourquoi mais je suis sur que vous avez une idée de la raison

Merci beaucoup
Eric
 

Olic78124

XLDnaute Nouveau
Bonjour Patrick,
OK tout simple compris donc Cells(1) première cellule à laquelle on peut certainement appliquer un Offset... je vais de ce pas tester tout ça.
Mille fois merci à vous deux, mais on devrait se revoir rapidement car j'ai un problème de date qui lorsqu'elle passe d'un Userform à une cellule se transforme comme par magie (10/02/2020 devient 02/10/2020 !).
 

Olic78124

XLDnaute Nouveau
Je suis d'accord, c'est tellement écrit en dépit du bon sens (je ne suis pourtant pas un pro VBA mais là ça dépasse tout ce que je pouvais imaginer...) que ça me ferait modifier trop de choses dans les différentes Sub/Fonctions sans compter les contrôles dans les TextBox_Change. Ce sera la prochaine, étape, je pare au plus pressé pour que ça fonctionne et je reverrai tout par la suite.

Je vais essayer de tout forcer dans un format dd/mm/yyyy et voir ce que ça donne.
 

patricktoulon

XLDnaute Barbatruc
non non et non robert ;)
tu n'injecte pas une date d'un textebox a une cellule par son texte ou le formatage de son texte

tu peux y arriver par plusieurs chemin
cellule=cdate(textbox1.value)
cellule=datevalue(textbox1.value)'permet la traduction des mois en lettre (si bien orthographiés)

et si tu veux avant tu formate la cellule avant !! injection ; meme d'un autre format avec :
cellule.numberformat="dd-mm-yyyy"
ou le format que tu veux

pour info tu le saura for the next

quand la date s'inverse dans la cellule c'est que tu a injecté le texte de la date et non une date
voili voilou

démonstration
avec ce code
VB:
Private Sub CommandButton1_Click()
    For i = 1 To 3
        With Me.Controls("TextBox" & i)
            If .Value <> "" And IsDate(.Value) Then Cells(i, 1) = .Value
        End With
    Next
End Sub
Capture1.JPG


demonstration avec cdate
VB:
Private Sub CommandButton1_Click()
    For i = 1 To 3
        With Me.Controls("TextBox" & i)
            If .Value <> "" And IsDate(.Value) Then Cells(i, 1) = CDate(.Value)
        End With
    Next
End Sub
Capture2.JPG


et que je t'y reprenne plus hein :D :D :D
;)

allez pour la route avec datevalue
VB:
Private Sub CommandButton1_Click()
    For i = 1 To 3
        With Me.Controls("TextBox" & i)
            If .Value <> "" And IsDate(.Value) Then Cells(i, 1) = DateValue(.Value)
        End With
    Next
End Sub
Capture3.JPG
 
Dernière édition:

Olic78124

XLDnaute Nouveau
Bonjour,
Je suis pour la paix des méninges hein, faut pas vous fâcher à cause de moi ;)
Effectivement, avec un CDate ça semble se passer beaucoup mieux, je vais donc modifier en ce sens.
Merci pour ces réponses et désolé d'avoir provoqué le "pourrissement" de ce post avec des questions qui n'ont rien à voir avec le sujet de base. La prochaine fois j'ouvre une nouvelle discussion.
Excellente journée à vous.
Olivier.
 

dysorthographie

XLDnaute Accro
bonjour Olic et Patrick,
pour les méninges je suis relativement épargné!
il y a plusieurs école,moi je préfère le format international car cdate utilise le paramètres régionaux!

idéalement il faudrait utiliser DateSerial
VB:
année=2020
moi=02
jour=5
DateSerial(année,moi,jour)
 
Dernière édition:

Discussions similaires

Réponses
7
Affichages
538

Statistiques des forums

Discussions
314 628
Messages
2 111 337
Membres
111 105
dernier inscrit
Joffrette