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 :

Un texte "tranchée" [XL-MAC 2011]


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Profil pro
    Excusez mon français, ce n'est pas ma langue de base
    Inscrit en
    Août 2011
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Excusez mon français, ce n'est pas ma langue de base

    Informations forums :
    Inscription : Août 2011
    Messages : 50
    Par défaut Un texte "tranchée"
    Bonjour le forum,

    Je voudrais demander votre aide pour résoudre le problème suivant:
    J'ai un formulaire dans lequel chaque cellule de la G10:G49 peut être remplie par le «texte libre». Le texte peut être écrit manuellement par l'utilisateur, ou collé d’une source extérieure. La longueur du texte est illimitée et n'est pas si important. J'ai besoin de trouver un moyen par lequel le texte est automatiquement divisé en segments de 34 caractères et cette «séparation» sera vue.
    Le nom de la feuille est "Com_eq".

    Par exemple une phrase:
    L’appareil sera utilisé par les étudiants pendant les vacances scolaires sous la responsabilité du Monsieur Bernhardt.
    Le texte a une longueur de 118 caractères, espaces compris. Je voudrais être en mesure de voir les 34 premiers caractères sans changement, les caractères 35-68 en gras, 69-102 - nouveau dans son format original, 103-118 - en gras (comme ici).
    Quelqu'un peut-il suggérer des moyens de résoudre ce problème?

    Merci d’avance,
    Gogia

  2. #2
    Membre Expert
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    673
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2007
    Messages : 673
    Par défaut
    Bonjour,
    Il faut coder la règle, je ne connais pas de moyen plus simple.
    Voici une proposition de code pour traiter la cellule active :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Dim lngLongueur As Long
    Dim lngNbBlocs As Long
    Dim i As Long
        'Nombre de caractères à traiter
        lngLongueur = Len(ActiveCell.Value)
        'Nombre de blocs de 34 caractères (ou moins pour le dernier)
        lngNbBlocs = Int((lngLongueur - 1) / 34) + 1
        'On prend tous les caractères dans les blocs impairs (début à 1 et saut de 2 en 2) et on les met en gras
        'Position de début du bloc = 34 * i + 1
        For i = 1 To lngNbBlocs Step 2
            ActiveCell.Characters(Start:=34 * i + 1, Length:=34).Font.FontStyle = "Gras"
        Next i

  3. #3
    Membre averti
    Profil pro
    Excusez mon français, ce n'est pas ma langue de base
    Inscrit en
    Août 2011
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Excusez mon français, ce n'est pas ma langue de base

    Informations forums :
    Inscription : Août 2011
    Messages : 50
    Par défaut
    Bonsoir tedo01,
    Merci beaucoup pour votre réponse.
    Je me permets de poser deux questions supplémentaires car je ne sais pas « parler la VBA ».
    1. Est-ce que cette macro s’appliquera sur chaque cellule de la feuille ? En effet, je la besoin seulement pour les cellules G10:G49 (appart pour chaque cellule de cette plage).
    2. La macro sera exécutée automatiquement ou il faudra l’exécuter chaque fois?
    Excusez-moi pour la primitivité de mes questions.
    Merci d’avance
    Gogia

  4. #4
    Membre Expert
    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    673
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2007
    Messages : 673
    Par défaut
    Bonjour,

    1. Cet exemple de code s'applique à la cellule active. Pour l'appliquer à un Range, il faut boucler sur les cellule de la plage et faire ce traitement sur les cellules une par une. Par exemple, pour la plage G10:G49 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    Dim lngLongueur As Long
    Dim lngNbBlocs As Long Dim i As Long
    Dim objCell As Range
     
    For Each objCell in Range("G10:G49")
        'Nombre de caractères à traiter    
        lngLongueur = Len(objCell.Value)    
        'Nombre de blocs de 34 caractères (ou moins pour le dernier)    
        lngNbBlocs = Int((lngLongueur - 1) / 34) + 1    
        'On prend tous les caractères dans les blocs impairs (début à 1 et saut de 2 en 2) et on les met en gras    
        'Position de début du bloc = 34 * i + 1    
        For i = 1 To lngNbBlocs Step 2
            objCell.Characters(Start:=34 * i + 1, Length:=34).Font.FontStyle = "Gras"    
        Next i
    Next objCell
    2. Le code doit se trouver dans une procédure, qu'il faut ensuite appeler à chaque fois qu'on veut faire la mise à jour.

    Pour mieux comprendre comment marche la programmation VBA, je te conseille les excellent tutoriels à partir de cette page : http://excel.developpez.com/cours/?p...#environnement

  5. #5
    Membre averti
    Profil pro
    Excusez mon français, ce n'est pas ma langue de base
    Inscrit en
    Août 2011
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Excusez mon français, ce n'est pas ma langue de base

    Informations forums :
    Inscription : Août 2011
    Messages : 50
    Par défaut
    Bonjour tedo01,

    Merci pour le lien! Je n'ai jamais appris la programmation mais il faut commencer le faire.
    J’ai vu que tu as rajouté la plage. Merci !
    Je ne pourrai pas vérifier le fonctionnement de la macro avant mardi car je n’ai pas le MAC chez moi.
    Sur Excel 2007 je n’ai pas réussi obtenir le résultat. J’ai activé les macro et recopié le code sur le fichier (clic droit sur le nom de la page => visualiser le code => coller). J’ai écrit un texte mais le « tranchement » n’a pas apparu.
    Peut être j’ai fait quelque chose pas correctement ?
    Ma dernière question : est-ce qu’il y a la possibilité exécuter la macro automatiquement chaque fois quand le texte sera apparu sur une de cellule de la plage G10 :G49 ?
    Merci et bonne journée !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Export requete texte -> Excel : erreur quote
    Par Sam 069 dans le forum VBA Access
    Réponses: 1
    Dernier message: 18/07/2007, 16h27
  2. [MySQL] Sauvegarder du texte (db mysql) CR, single-quote, double-quote, etc
    Par vandeyy dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 12/03/2007, 12h22

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