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 If

Ci-dessus ce que j'ai confectionné, mais ne fonctionne pas

bonsoir,

supprime ces instructions

Else
                    Exit Sub

avec 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 If

Bonjour,

Essayez comme ça :

rownumber = worksheets("CLIENTS").Cells(i, 4).value

et 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).Value

Sauf 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 If

Bonjour,

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 With

Merci 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 Then

Les 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 & rownumber

Dans 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 If

Voila 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 With

Le 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 With

Merci. ça marche parfaitement maintenant.

Une dernière préoccupation.

J'ai déclaré la zone de balayage

for i = 35 to 5000

car 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).row

Merci 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

Rechercher des sujets similaires à "envoyer sms"