[VBA-E] variable Mois
MissExcel
-
MissExcel -
MissExcel -
Bonjour,
Je cherche à faire la différence entre 2 dates dans une macro. Je saus faire la différence entre des jours mais en heure, comment faire la différence entre 2 dates mais en mois.
Exemple pour mieux illustrer :
Dim dateheure as date
dateheure = 36
if ....> dateheure / 24 ' différence en heures.
Comment faire la différence pour faire en mois:
if ... [supèrieure ou égale à 1 mois] Then...
j'ai pensé à faire 24h * 31 jours dans un mois = 744 mais ca n'est pas très propre.
merci de m'aider.
Je cherche à faire la différence entre 2 dates dans une macro. Je saus faire la différence entre des jours mais en heure, comment faire la différence entre 2 dates mais en mois.
Exemple pour mieux illustrer :
Dim dateheure as date
dateheure = 36
if ....> dateheure / 24 ' différence en heures.
Comment faire la différence pour faire en mois:
if ... [supèrieure ou égale à 1 mois] Then...
j'ai pensé à faire 24h * 31 jours dans un mois = 744 mais ca n'est pas très propre.
merci de m'aider.
A voir également:
- [VBA-E] variable Mois
- É majuscule - Guide
- Convertir trimestre en mois - Forum Excel
- Excel mois en lettre ✓ - Forum Excel
- Vba range avec variable ✓ - Forum VB / VBA
- 600h en mois ✓ - Forum Bureautique
11 réponses
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 !
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 ?
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
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?
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