A voir également:
- [VBA-E] variable Mois
- É - Guide
- E-11 epson ✓ - Forum Imprimante
- Vba ouvrir un fichier excel avec chemin ✓ - Forum VB / VBA
- Find vba - Astuces et Solutions
11 réponses
Christounet
Messages postés
1264
Date d'inscription
mercredi 26 septembre 2007
Statut
Membre
Dernière intervention
29 juillet 2010
1 387
24 juil. 2009 à 15:15
24 juil. 2009 à 15:15
Bonjour,
Pourquoi ne pas utiliser tout simplement la fonction DATEDIFF ?
Exemple de code
Tu peux aussi utiliser cette fonction pour connaître le nombre d'heures entre deux dates, le nombre de jours...
Tu trouveras de la documentation sur cette fonction ici
A plus
Pourquoi ne pas utiliser tout simplement la fonction DATEDIFF ?
Exemple de code
Dim Date1 as Date Dim Date2 as Date Dim NombreMois NombreMois = datediff("m",Date1,Date2)
Tu peux aussi utiliser cette fonction pour connaître le nombre d'heures entre deux dates, le nombre de jours...
Tu trouveras de la documentation sur cette fonction ici
A plus
Merci Christounet !
J'ai un autre problème avec mon code :
Le problème avec ce code c'est que admettons que ma feuille soit sans donnée, je me place au milieu de la feuille sur A160, j'entre une date infèrieure de 36h à la date d'ajourd'hui pour faire executer mon "test1", la valeur de ma cellule Z160 inscrit : en retard. Le problème c'est que toutes, toutes les cellules au dessus de Z135, c'est à dire Z134, jusqu'à Z1 on prit la valeur : en retard ! alors que a34, a33 etc n'est même pas remplit !
j'esspere que mon explication est claire ? comment empecher ca ?
Merci de m'aider c'est important !
J'ai un autre problème avec mon code :
Sub TEST1() Dim lig As Long Dim datesur36 As Single datesur36 = 36 For lig = 2 To [A65536].End(xlUp).Row If Cells(lig, 1) - Now > datesur36 / 24 Then 'Colonne A Cells(lig, 15).Value = "en retard" 'Colonne O End If Next lig End Sub
Le problème avec ce code c'est que admettons que ma feuille soit sans donnée, je me place au milieu de la feuille sur A160, j'entre une date infèrieure de 36h à la date d'ajourd'hui pour faire executer mon "test1", la valeur de ma cellule Z160 inscrit : en retard. Le problème c'est que toutes, toutes les cellules au dessus de Z135, c'est à dire Z134, jusqu'à Z1 on prit la valeur : en retard ! alors que a34, a33 etc n'est même pas remplit !
j'esspere que mon explication est claire ? comment empecher ca ?
Merci de m'aider c'est important !
Christounet
Messages postés
1264
Date d'inscription
mercredi 26 septembre 2007
Statut
Membre
Dernière intervention
29 juillet 2010
1 387
24 juil. 2009 à 16:23
24 juil. 2009 à 16:23
Bonjour,
Tu peux tester d'abord si la cellule est vide ou non
A plus
Tu peux tester d'abord si la cellule est vide ou non
For lig = 2 To [A65536].End(xlUp).Row If Cells(lig,1).value <> "" If Cells(lig, 1) - Now > datesur36 / 24 Then 'Colonne A Cells(lig, 15).Value = "en retard" 'Colonne O End If End If Next lig
A plus
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Une derniere question j'ai besoin d'envoyer dans le corps d'un email via une macro une plage de cellule.
donc dans .body, j'ai mis :
.body = Sheets("feuil1").Range["a1:z65535"].Value
j'ai testé aussi : Sheets("feuil1").Range("a1:z65535").Value
mais ca ne fonctionne pas comment faire ?
donc dans .body, j'ai mis :
.body = Sheets("feuil1").Range["a1:z65535"].Value
j'ai testé aussi : Sheets("feuil1").Range("a1:z65535").Value
mais ca ne fonctionne pas comment faire ?
Christounet
Messages postés
1264
Date d'inscription
mercredi 26 septembre 2007
Statut
Membre
Dernière intervention
29 juillet 2010
1 387
27 juil. 2009 à 10:56
27 juil. 2009 à 10:56
Bonjour,
Peut-être que cet exemple pourra t'aider?
A plus
Peut-être que cet exemple pourra t'aider?
A plus
J'ai testé ce code mais il me renvoi un erreur sur .send a la fin. j'ai excel 2000. une idée?
merci !
merci !
Sub PlageDeCellulesDansCorpsDuMessage() 'testé avec XP 'adapté de : https://support.microsoft.com/en-us/help/286430 Dim iMsg As Object, iConf As Object Dim strHTML As String Dim i As Byte, j As Byte Set iMsg = CreateObject("CDO.Message") Set iConf = CreateObject("CDO.Configuration") strHTML = "" strHTML = strHTML & "<HEAD>" strHTML = strHTML & "<BODY>" strHTML = strHTML & "Bonjour , <BR>vous trouverez ci joint le tableau demandé<BR><BR>" strHTML = strHTML & "<B><SPAN STYLE='background-color:green;font-size:6mm'>Résultats : </SPAN></B><BR><BR>" strHTML = strHTML & "<TABLE BORDER>" For i = 1 To 5 'nombre de lignes (exemple plage A1:B5) strHTML = strHTML & "<TR halign='middle'nowrap>" For j = 1 To 2 'nombre de colonnes strHTML = strHTML & "<TD bgcolor='yellow'align='center'><FONT COLOR='blue'SIZE=3>" _ & Cells(i, j) & "</FONT></TD>" Next j strHTML = strHTML & "</TR>" Next i strHTML = strHTML & "</TABLE>" strHTML = strHTML & "<BR><BR>Cordialement<BR>" & Environ("username") strHTML = strHTML & "</BODY>" strHTML = strHTML & "" With iMsg Set .Configuration = iConf .To = "destinataire@dvp.fr" 'renvoie une erreur si l'adresse est non valide '.From = "youralias@yourdomain.com" .Subject = "Test Envoi Tableau par mail" .HTMLBody = strHTML .Send End With End Sub
Christounet
Messages postés
1264
Date d'inscription
mercredi 26 septembre 2007
Statut
Membre
Dernière intervention
29 juillet 2010
1 387
27 juil. 2009 à 11:53
27 juil. 2009 à 11:53
Bonjour,
CDO (Collaboration Data Object) nécessite un Exchange Server pour Outlook, ou alors tu dois définir dans Configuration.Fields.Item le nom du serveur SMTP que tu as (exemple pour Free : smtp.free.fr) comme dans cet exemple.
A plus
CDO (Collaboration Data Object) nécessite un Exchange Server pour Outlook, ou alors tu dois définir dans Configuration.Fields.Item le nom du serveur SMTP que tu as (exemple pour Free : smtp.free.fr) comme dans cet exemple.
A plus
C aussi compliquer juste pour intégrer une plage de cellule dans le corps du texte d'un mail outlook ?
Il n'y a pas d'autres solutions?
Il n'y a pas d'autres solutions?
Christounet
Messages postés
1264
Date d'inscription
mercredi 26 septembre 2007
Statut
Membre
Dernière intervention
29 juillet 2010
1 387
27 juil. 2009 à 14:01
27 juil. 2009 à 14:01
Bonjour,
J'ai testé le code ci-dessous (Excel 2003, Outlook 2003)
Il te faut encore changer le range, l'introduction, le To et le subject.
A toi de voir si cela fonctionne avec Excel 2000
A plus
J'ai testé le code ci-dessous (Excel 2003, Outlook 2003)
Sub Send_Range() ' Sélection des cellules. ActiveSheet.Range("A1:B5").Select ' Indique si l'en-tête de composition du message et la barre d'outils d'enveloppe sont tous deux visibles.. ActiveWorkbook.EnvelopeVisible = True 'Définition du titre (Introduction) , Destinataire (To) , Sujet (Subject) et Envoi (Send) With ActiveSheet.MailEnvelope .Introduction = "Voici les cellules - C'est le titre." .Item.To = "Adresse destinataire" .Item.Subject = "Le sujet" .Item.Send End With End Sub
Il te faut encore changer le range, l'introduction, le To et le subject.
A toi de voir si cela fonctionne avec Excel 2000
A plus