Envoyer les sms
Bonjour
s'il vous plaît j'ai aussi la situation suivante dont je demande votre aide:
J'ai une liste qui contient 3000 enregistrements (ligne).
La colonne C contient le nom et le nom des clients.
La colonne D contient les numéros de téléphone.
La colonne E contient la date de naissance du client.
Je veux l'arbre de conditionnalité suivant:
Le programme au démarrage parcourt la liste, compare la date actuelle avec celles entrées dans la colonne C; en cas d'égalité par exemple pour Ex, cela signifierait que c'est l'anniversaire du client. Ensuite, le programme récupère les informations Cx (nom du client) et Dx (numero du client) afin qu'elles puissent être utilisées dans le système d'envoi automatique de SMS vers un api
Dim Recipient As Variant
Dim Message As String
Dim i As Integer
Dim rowname As Variant
Dim rownumber As String
Dim rowdateanniv As Variant
'Dim rowtimerdv, rownumber, rowdaterdv, x As String
'rowtimerdv = Worksheets("PLANNING").Range("I4").Text
'rowprestardv = Worksheets("PLANNING").Range("H4").Text
'rowname = Worksheets("CLIENTS").Range("C35:C5000").Value
rownumber = Worksheets("CLIENTS").Cells(i, 5).Offset(, -1).Value
'rowdateanniv = Worksheets("CLIENTS").Range("E35:E5000").Value
x = "237"
Recipient = x & rownumber
If Now - Date > TimeSerial(9, 0, 0) Then
For i = 35 To 5000
If (Day(Worksheets("CLIENTS").Cells(i, 5).Value) = Day(Date) And Month(Worksheets("CLIENTS").Cells(i, 5).Value) = Month(Date)) Then
Message = "Dear " & Worksheets("CLIENTS").Cells(i, 5).Offset(, -2).Value & ", we wish you a happy birthday and all the best for you."
'Next i
Else
Exit Sub
End If
Next i
End IfCi-dessus ce que j'ai confectionné, mais ne fonctionne pas
bonsoir,
supprime ces instructions
Else
Exit Subavec ces instructions, tu arrêtes ta macro dès qu'une personne n'a pas son anniversaire à la date du jour.
Merci. C'est fait
au niveau de la ligne:
rownumber = worksheets("CLIENTS").Cells(i,5.offset(,-1).value j'ai une erreur "Erreur définie par l'application ou par l'objet Dim Recipient As Variant
Dim Message As String
Dim i As Integer
Dim rowname As Variant
Dim rownumber As String
Dim rowdateanniv As Variant
'Dim rowtimerdv, rownumber, rowdaterdv, x As String
'rowtimerdv = Worksheets("PLANNING").Range("I4").Text
'rowprestardv = Worksheets("PLANNING").Range("H4").Text
'rowname = Worksheets("CLIENTS").Range("C35:C5000").Value
rownumber = Worksheets("CLIENTS").Cells(i, 5).Offset(, -1).Value
'rowdateanniv = Worksheets("CLIENTS").Range("E35:E5000").Value
x = "237"
Recipient = x & rownumber
If Now - Date > TimeSerial(9, 0, 0) Then
For i = 35 To 5000
If (Day(Worksheets("CLIENTS").Cells(i, 5).Value) = Day(Date) And Month(Worksheets("CLIENTS").Cells(i, 5).Value) = Month(Date)) Then
Message = "Dear " & Worksheets("CLIENTS").Cells(i, 5).Offset(, -2).Value & ", we wish you a happy birthday and all the best for you."
'Next i
End If
Next i
End IfBonjour,
Essayez comme ça :
rownumber = worksheets("CLIENTS").Cells(i, 4).valueet plus bas dans le code :
Message = "Dear " & Worksheets("CLIENTS").Cells(i, 3).Value & ", we wish you a happy birthday and all the best for you."Cdlt,
Merci, j'ai corrigé tel que vous avez indiquez.
Mais j'ai le même message d'erreur
Il semble que le problème se situe au niveau de l’ordonnancement car j'ai déplacé les deux ligne des variables et sa semble jouer.
rowname = Worksheets("CLIENTS").Cells(i, 3).Value
rownumber = Worksheets("CLIENTS").Cells(i, 4).ValueSauf que ça ne respecte pas la condition. Je voudrais qu'il charge uniquement les informations des clients dont c'est leur anniversaire. Il charge exhaustivement ligne par ligne, il balancera les sms probable à tout le monde y compris ceux dot c'est pas leurs anniversaire
Set objHTTP = CreateObject("WinHttp.WinHttpRequest.5.1")
Dim Recipient As Variant
Dim Message As String
Dim i As Integer
Dim rowname As String
Dim rownumber As String
Dim rowdateanniv As Variant
'Dim rowtimerdv, rownumber, rowdaterdv, x As String
'rowtimerdv = Worksheets("PLANNING").Range("I4").Text
'rowprestardv = Worksheets("PLANNING").Range("H4").Text
'rownumber = Worksheets("CLIENTS").Cells(i, 5).Offset(, -1).Value
'rowdateanniv = Worksheets("CLIENTS").Range("E35:E5000").Value
x = "237"
Recipient = x & rownumber
' If Now - Date > TimeSerial(9, 0, 0) Then
For i = 35 To 5000
rowname = Worksheets("CLIENTS").Cells(i, 3).Value
rownumber = Worksheets("CLIENTS").Cells(i, 4).Value
If (Day(Worksheets("CLIENTS").Cells(i, 5).Value) = Day(Date) And Month(Worksheets("CLIENTS").Cells(i, 5).Value) = Month(Date)) Then
'Message = "Dear " & Worksheets("CLIENTS").Cells(i, 5).Offset(, -2).Value & ", we wish you a happy birthday and all the best for you."
Message = "Dear " & rowname & ", we wish you a happy birthday and all the best for you."
'Next i
Else
End If
Next i
' End If
''' Preparation sms
''
''
''' Checking for valid mobile number
''
If rownumber <> 700000000 Then
' Call lastrownumber(lastrowtypevente)
Else
Recipient = CStr(rownumber)
End IfBonjour,
J'ai répondu un peu vite hier sans faire assez attention à votre code.
En fait, le problème, c'est que votre ligne est en dehors de la boucle, avec un i non initialisé (donc à 0). Il faut que vous placiez la ligne au sein de la boucle ou que vous remplaciez le i par un entier.
Cdlt,
bonjour,
voici ton code restructuré, à toi de mettre les instructions nécessaires pour l'envoi des sms.
Dim Recipient As Variant
Dim Message As String
Dim i As Integer
Dim rowname As String
Dim rownumber As String
Dim rowdateanniv As Variant
With Worksheets("CLIENTS")
For i = 35 To 5000
rowname = .Cells(i, 3).Value
rownumber = .Cells(i, 4).Value
If (Day(.Cells(i, 5).Value) = Day(Date) And Month(.Cells(i, 5).Value) = Month(Date)) Then
' préparation en envoi du sms
Message = "Dear " & rowname & ", we wish you a happy birthday and all the best for you."
Recipient = CStr(rownumber)
'envoi du message au recipient
MsgBox " send message to recipient" & vbNewLine & Recipient & vbNewLine & Message
End If
Next i
End WithMerci beaucoup.
Je souhaite aussi conditionner la tranche horaire que le programme envoi les sms, pour éviter les envois multiples
If Now - Date > TimeSerial(9, 0, 0) and now - date < 10,0,0 ThenLes lignes de code suivantes me permettent de concaténer le code de mon pays au numéro de téléphone présents dans ma base de données pour répondre au exigences de mon API
x = "237"
Recipient = x & rownumberDans ma base, j'ai les numéros 700 000 000 pour les clients anonymes d'où cette ligne de code pour les exclurent du processus des sms
If rownumber < 700000000 Then
'Call lastrownumber(lastrowtypevente)
Recipient = CStr(rownumber)
MsgBox " send message to recipient" & vbNewLine & Recipient & vbNewLine & Message
Else
End IfVoila comment j'ai donc modifié pour répondre aux besoins détaillés
Dim Recipient As Variant
Dim Message As String
Dim i As Integer
Dim rowname, x As String
Dim rownumber As String
Dim rowdateanniv As Variant
With Worksheets("CLIENTS")
For i = 35 To 5000
rowname = .Cells(i, 3).Value
rownumber = .Cells(i, 4).Value
If (Day(.Cells(i, 5).Value) = Day(Date) And Month(.Cells(i, 5).Value) = Month(Date)) Then
''''''''''''''' préparation en envoi du sms
Message = "Dear " & rowname & ", we wish you a happy birthday and all the best for you."
'Recipient = CStr(rownumber)
'''''''''''''envoi du message au recipient
'MsgBox " send message to recipient" & vbNewLine & Recipient & vbNewLine & Message
End If
'''''''''''''''''''''Checking for valid mobile number'''''''''''''''''''''''''''''''
If rownumber < 700000000 Then
'Call lastrownumber(lastrowtypevente)
Recipient = CStr(rownumber)
MsgBox " send message to recipient" & vbNewLine & Recipient & vbNewLine & Message
Else
End If
URL = Replace(URL, " ", "%20")
objHTTP.Open "GET", URL, False
objHTTP.SetRequestHeader "Authorization", "Bearer =" 'Your Token'
objHTTP.SetRequestHeader "Accept", "application/json"
objHTTP.send ("")
Next i
End WithLe problème que j'ai présentement c'est qu'en exécutant pas à pas, il charge tous les numéros. Autrement dit, la condition anniversaire n'est pas respectée.
Je ne sais pas si c'est conséquent la position que j'ai attribué à next i
Je ne suis pas autorisé à publier un lien, d'où l'absence de mon url....
bonsoir,
voici comment tu aurais dû adapter le code que je t'ai fourni.
Dim Recipient As Variant
Dim Message As String
Dim i As Integer
Dim rowname, x As String
Dim rownumber As String
With Worksheets("CLIENTS")
x = "237"
For i = 35 To 5000
If (Day(.Cells(i, 5).Value) = Day(Date) And Month(.Cells(i, 5).Value) = Month(Date)) Then
' anniversaire
rownumber = .Cells(i, 4).Value
If rownumber < 700000000 Then
'numéro valable
rowname = .Cells(i, 3).Value
Message = "Dear " & rowname & ", we wish you a happy birthday and all the best for you."
Recipient = x & CStr(rownumber)
'envoi du sms
Url = Replace(Url, " ", "%20")
objHTTP.Open "GET", Url, False
objHTTP.SetRequestHeader "Authorization", "Bearer =" 'Your Token'
objHTTP.SetRequestHeader "Accept", "application/json"
'<---------------------- compléter l'appel d'envoi du sms par le numéro et le message
objHTTP.send ("")
End If
End If
Next i
End WithMerci. ça marche parfaitement maintenant.
Une dernière préoccupation.
J'ai déclaré la zone de balayage
for i = 35 to 5000car je prévois que la base pourrais un jour avoir 5000 clients. Actuellement que je ne suis pas à 5000, instruit le programme d’arrêter le traitement automatique à la dernière ligne qui contient une chaîne de caractère ou autrement dit, un enregistrement.
Cdlt
bonjour,
adapte ton instruction for
for i = 35 to .cells(rows.count,3).end(xlup).rowMerci Beaucoup.
J'aimerais aussi si possible :
1- avoir le choix au niveau de msgbox de l'envoi du sms du genre (voulez-vous notifier le client par sms) si ok le sms est envoyer, si non ne pas envoyer.
2-permettre au programme ne poursuivre son exécution qui à ne pas envoyer le sms en l'absence de la liaison a internet. Présentement, le processus s’arrête, lorsqu'il y a pas internet
3- Instruire le programme de temps à autre à aller à la ligne. Si dans ce sms on peut se positionner à la ligne après chaque (;) point virgule
Message = "Rapport du " & dateout & " : Orange Money = " & OM & "; Mobile Money = " & MM & "; Carte credit = " & CC & "; Cash = " & EPS & ", Tot Prod = " & PROD & "; Tot Presta = " & TotVente & "; Tot Depense = " & TotDep & "; CAISSE REELLE = " & CaisseRelle & "; BANK = " & VERSBAN & ". Bonne soirée"Cdlt