IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Retour à la ligne au bout de 27 caractères


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Homme Profil pro
    Lycéen
    Inscrit en
    Février 2017
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Lycéen
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2017
    Messages : 12
    Par défaut Retour à la ligne au bout de 27 caractères
    bonjour,

    Je rencontre un léger contre-temps sur la fonctionnalité de mon programme.
    Je dispose de 254 caractère au total, au sein d'une cellule arrangée avec les graduations. En clair tout est délimité.
    Cependant quand je fais un copier/coller normal (pas spécial cela ne sera pas possible par la suite) la mise en forme est perdue et je me retrouve avec mes 254 caractères en ligne dans mon corps de mail.
    Même avec le renvoi automatique cela ne résout pas le problème. Je suis passé par l'enregistreur cependant il me donne ce que je sais déjà.
    Ce que je voudrais c'est un retour ligne dans la cellule tous les 27 caractères (calculer en fonction de la police utilisée)
    En imposant une "limite" au longueur de ligne je pense pouvoir récupérer mes 254 caractères en 9 lignes et ainsi récupérer ce format dans mon corps de mail.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    range("C2").select
    activecell.formulaR1C1= " text" & (chr (10)
    J'aimerais intégré une ligne de code qui puisse me fixer à 27 le nombre de caractères

    Je vous remercie par avance du temps consacré à ma demande.

  2. #2
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut
    Bonjour,

    pas sûr d'avoir compris mais s'il s'agit juste d'extraire une sous-chaine d'une chaine de caractères alors

    voir du côté de la fonction texte   Mid   (cf aide VBA interne, voir aussi le tutoriel sur les fonctions texte de ce forum) …

    ___________________________________________________________________________________________________________
    Je suis Paris, Barcelone, London, Manchester, Egypte, Stockholm, Istanbul, Berlin, Nice, Bruxelles, Charlie, …

  3. #3
    Membre averti
    Homme Profil pro
    Lycéen
    Inscrit en
    Février 2017
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Lycéen
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2017
    Messages : 12
    Par défaut
    au lieu d'avoir une ligne de x caractères je veux imposer dans ma cellule x/27 au total avec 27 étant mon nombre de caractère que je désire sur une ligne puis un retour à la ligne (dans cette même cellule) avec une possibilité de 27 caractères ainsi de suite.
    Le but in fine, c'est d'avoir ma plage de données excel sélectionnées et qui garde le format imposé par ce code dans le corps du mail outlook

    Je pourrais vous envoyer un exemple en pj dans quelques minutes
    Fichiers attachés Fichiers attachés

  4. #4
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut
    Pas besoin d'exemple vu la simplicité …

    Mesurer la longueur de la chaine et si elle est supérieure à 27 alors lire les 27 premiers caractères
    puis insérer VbLf (cf aide VBA interne) puis tronquer la chaine à partir du 28ème caractère et recommencer le cycle.

    Pour les fonctions texte en dehors de l'aide VBA (tout y est, suffit de l'ouvrir et de la lire !)
    voir aussi le tutoriel Manipuler les chaînes de caractères en VB6 et VBA Excel

    Et aussi La gestion des boucles dans Excel !

  5. #5
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Tu as besoin de len(texte) de mid(texte,i,1) , i mod 27 =0 , & et vbcrlf !

  6. #6
    Membre averti
    Homme Profil pro
    Lycéen
    Inscrit en
    Février 2017
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Lycéen
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2017
    Messages : 12
    Par défaut
    je me dis quand imposant un nombre de caractère je conserverai ce format dans mon corps de mail.

    Qu'en dites-vous?

  7. #7
    Invité
    Invité(e)
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    html="<table><tr>"
    Html=html & "<td heigth='10%'>" & Sting(48,"s") & "</td>" & "<td heigth='10%'>" & Sting(12,"s") & "</td>" 
    Html = html & "</tr></table>

  8. #8
    Membre averti
    Homme Profil pro
    Lycéen
    Inscrit en
    Février 2017
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Lycéen
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2017
    Messages : 12
    Par défaut
    question si je me place dans ma cellule j'introduis le code à la suite?

  9. #9
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 83
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Bonjour
    Quel est le besoin de sélectionner une cellule ? Aucun.
    On invoque directement une cellule en se référant à l'objet Excel qu'elle est.

  10. #10
    Membre très actif
    Avatar de frunch
    Homme Profil pro
    Développeur / comptable
    Inscrit en
    Janvier 2022
    Messages
    156
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur / comptable

    Informations forums :
    Inscription : Janvier 2022
    Messages : 156
    Par défaut
    Citation Envoyé par Invité Voir le message
    Bonjour,
    Tu as besoin de len(texte) de mid(texte,i,1) , i mod 27 =0 , & et vbcrlf !
    Bonjour à tous,
    Le code cette solution m'intéresserait.
    mon texte se trouve en ws1.Range("M2")
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
        a = Len(ws1.Range("M2"))
        b = a Mod 30
    For i = 1 To a Step 30
        If b = 0 Then
                Me.obs.Value = Mid(ws1.Range("M2"), i, i + 30) & Chr(10)
        End If
    Next i
    Cà donne rien
    Merci

  11. #11
    Membre émérite
    Homme Profil pro
    Retraité
    Inscrit en
    Octobre 2022
    Messages
    685
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Octobre 2022
    Messages : 685
    Par défaut
    Bonjour

    Le mid est mal utilisé mid(texte,debut,longueur) et pas (texte,debut,fin)
    Le test "if b=0" teste le reste de la division par 30 de la longueur. Donc 29 fois sur 30 il ne se passera rien. Je ne vois pas quelle était la finalité de ce test.

    Je propose :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Dim a As Integer
    Dim W As String
    W = ""
    a = Len(WS1.Range("M2"))
    For i = 1 To a Step 30
        If W <> "" Then W = W & Chr(10)
        W = W & Mid(WS1.Range("M2"), i, 30)
    Next i
    debug.print W

  12. #12
    Membre très actif
    Avatar de frunch
    Homme Profil pro
    Développeur / comptable
    Inscrit en
    Janvier 2022
    Messages
    156
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur / comptable

    Informations forums :
    Inscription : Janvier 2022
    Messages : 156
    Par défaut c'est bon
    Bonjour,
    Merci pour ta réponse.
    J'ai trouvé un fichier ou çà allait à la ligne sans code, la solution à mon problème est dans les propriétés de la textbox.Nom : 1.png
Affichages : 889
Taille : 7,8 Ko
    Cdt

Discussions similaires

  1. Caractère de retour à la ligne.
    Par Pari dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 18/03/2009, 09h59
  2. Réponses: 8
    Dernier message: 04/07/2007, 14h33
  3. [PC] Caractère de retour à la ligne
    Par Lnanau dans le forum Cobol
    Réponses: 7
    Dernier message: 14/04/2006, 11h28
  4. Retour à la ligne qui compte pour 2 caractères!
    Par Pragmateek dans le forum C++
    Réponses: 5
    Dernier message: 04/04/2006, 16h59
  5. [SQL server 2005] caractère de retour à la ligne
    Par Louis-Guillaume Morand dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 06/02/2006, 14h34

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo