02 51 76 0 34

Accès client :  mot de passe oublié   inscription

       (oubli)
AccueilDéveloppeurs / API › VBA / Excel

Envoyer des SMS depuis Excel (macro VBA)

Mis à jour le 22 juillet 2026

Votre fichier clients est déjà dans Excel : cette macro VBA ajoute une fonction =EnvoyerSMS() utilisable en cellule et un envoi en série colonne par colonne, sans aucun logiciel à installer. Excel 2013 ou plus récent sous Windows.

1Le module VBA complet (prêt à importer)

Attribute VB_Name = "Module123SMS"

' =====================================================================

' 123-SMS.net - Envoi de SMS depuis Excel (VBA)

' Copyright (C) 123-Sms.net - licence MIT

' Necessite Excel 2013+ sous Windows (fonction ENCODEURL et MSXML2).

'

' 1. Renseignez SMS_EMAIL et SMS_CLEAPI ci-dessous

'    (cle API : espace client https://www.123-sms.net > rubrique API).

' 2. =EnvoyerSMS("33601020304";"Bonjour !")  depuis une cellule,

'    ou lancez la macro EnvoyerSMSListe (colonne A = numeros,

'    colonne B = messages, codes retour ecrits en colonne C).

'

' IMPORTANT : formatez la colonne des numeros en TEXTE (sinon Excel

' supprime le 0 initial). Formats acceptes : 0601020304 ou 33601020304.

' =====================================================================



Const SMS_EMAIL As String = "votre-email@exemple.fr"

Const SMS_CLEAPI As String = "CLEAPI"

Const SMS_URL As String = "https://www.123-sms.net/http.php"



' Envoie un SMS et renvoie le code retour de l'API (80 = envoye).

Public Function EnvoyerSMS(numero As String, message As String, _

                           Optional senderID As String = "") As String

    Dim http As Object, corps As String

    On Error GoTo Erreur

    Set http = CreateObject("MSXML2.XMLHTTP.6.0")

    corps = "email=" & EncodeParam(SMS_EMAIL) & _

            "&pass=" & EncodeParam(SMS_CLEAPI) & _

            "&numero=" & EncodeParam(numero) & _

            "&message=" & EncodeParam(message)

    If senderID <> "" Then corps = corps & "&sender=" & EncodeParam(senderID)

    ' POST en HTTPS : la cle API ne transite jamais en clair

    http.Open "POST", SMS_URL, False

    http.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"

    http.send corps

    EnvoyerSMS = Trim$(http.responseText)

    Exit Function

Erreur:

    EnvoyerSMS = "ERREUR : " & Err.Description

End Function



' Encodage URL (accents, espaces, caracteres speciaux).

Private Function EncodeParam(texte As String) As String

    EncodeParam = Application.WorksheetFunction.EncodeURL(texte)

End Function



' Envoi en serie : col. A = numeros, col. B = messages (des la ligne 2).

' Le code retour est ecrit en colonne C (80 = envoye).

Public Sub EnvoyerSMSListe()

    Dim ligne As Long, code As String, envoyes As Long

    ligne = 2

    Do While Trim$(CStr(Cells(ligne, 1).Value)) <> ""

        code = EnvoyerSMS(CStr(Cells(ligne, 1).Value), CStr(Cells(ligne, 2).Value))

        Cells(ligne, 3).Value = code

        If code = "80" Or code = "81" Then envoyes = envoyes + 1

        ligne = ligne + 1

    Loop

    MsgBox envoyes & " SMS envoye(s). Codes retour en colonne C" & vbCrLf & _

           "(80 = envoye, 82 = identifiants invalides, 83 = credit insuffisant)", _

           vbInformation, "123-SMS.net"

End Sub

2Installation et utilisation

  • Téléchargez l'archive et importez 123sms.bas dans l'éditeur VBA (Alt+F11 › Fichier › Importer un fichier).
  • Renseignez SMS_EMAIL et SMS_CLEAPI en tête de module (espace client › API).
  • En cellule : =EnvoyerSMS("33601020304";"Votre message") — la cellule affiche le code retour (80 = envoyé).
  • En série : colonne A = numéros (formatée en Texte), colonne B = messages, puis Alt+F8 › EnvoyerSMSListe. Codes retour en colonne C.
  • Enregistrez le classeur au format .xlsm pour conserver la macro.
La clé API se génère dans l'espace client, rubrique API › Générer Clé API. Les codes réponse et le retour des accusés de réception par HTTP sont détaillés dans la documentation technique.

Questions fréquentes

Quelles versions d'Excel sont compatibles ?

Excel 2013 et plus récent sous Windows (la macro utilise la fonction ENCODEURL et le composant MSXML2, absents d'Excel pour Mac). Sur Mac ou sans macro, utilisez le publipostage SMS par dépôt de fichier.

Mes numéros perdent le 0 initial, que faire ?

Excel transforme 0601020304 en 601020304 quand la colonne est numérique. Formatez la colonne des numéros en Texte (clic droit › Format de cellule) avant la saisie, ou saisissez les numéros au format international 33601020304.

Puis-je personnaliser le message pour chaque destinataire ?

Oui : construisez le message en colonne B avec une formule, par exemple ="Bonjour "&D2&", votre commande est prête.", puis lancez EnvoyerSMSListe. Chaque ligne reçoit son SMS personnalisé.

La clé API est-elle en sécurité dans le classeur ?

La clé est stockée dans le module VBA : ne diffusez pas le classeur en dehors de votre organisation. En cas de doute, régénérez la clé en un clic dans l'espace client (rubrique API) — l'ancienne est aussitôt révoquée.

Existe-t-il une solution sans macro ?

Oui, le publipostage SMS depuis Excel par simple dépôt de fichier : vous déposez votre fichier de contacts dans l'espace client, sans une ligne de code.

Téléchargement

Module VBA Excel (.zip)

Licence MIT — libre et gratuit.

L'essentiel

  • API HTTPS en un appel : email, clé API, numéro, message.
  • Code réponse immédiat + accusés de réception par HTTP.
  • Crédits prépayés sans abonnement ni expiration.
  • Adaptations spécifiques développées gratuitement.