Retour à la ligne en VBA

Résolu
lefort32 -  
 lefort32 -
Bonjour,

Je suis un grand débutant en VB, dont j'ai appris les grands principes de base. Je souhaiterais créer une fonction pour effectuer un retour à ligne automatique à chaque apparition d'un caractère spécifique, en l'occurence "/" dans une cellule.

C'est à dire qu'à chaque fois qu'un / se trouve dans une cellule, j'aimerais que soit effectuer un retour à la ligne.

Je vois à peu près comment utiliser Chr(10) ainsi que la fonction Replace, mais pas comment combiner les deux. Cela est-il possible?

Merci d'avance pour toute suggestion!

3 réponses

  1. Utilisateur anonyme
     
    Bonjour lefort32,

    Pour la fonction, je te propose ce code VBA :

    
    Option Explicit
    
    Function SlashCar10(chn As String) As String
      SlashCar10 = WorksheetFunction.Substitute(chn, "/", Chr$(10))
    End Function
    
    

    J'ai testé ce code, et il marche impeccable : si tu as un texte en A1
    avec des slashs ( / ), et que tu mets en B1 : =SlashCar10(A1)
    le texte en B1 sera bien celui de A1 avec des Chr$(10) au lieu
    de slashs ; CEPENDANT, ÇA NE SUFFIT PAS ! En effet, ça ne
    pourra marcher QUE SI le format de la cellule DESTINATRICE
    est avec : ☑ Renvoyer à la ligne automatiquement (voir fenêtre
    « Format de cellule », onglet « Alignement », cadre « Contrôle
    du texte »).

    Il y a bien cette instruction VBA qui le fait automatiquement :
    ActiveCell.WrapText = True
    MAIS cette instruction, qui modifie une cellule, ne peut être
    exécutée QUE dans une Sub, et PAS dans une Function !

    C'est donc impossible de faire mieux, sauf en ABANDONNANT
    l'idée d'utiliser une fonction.

    Mais si tu peux sans problème mettre par avance le format adéquat
    dans toutes les cellules destinatrices, alors le problème sera réglé !

    Si oui, merci de l'indiquer, afin que le sujet puisse être mis en résolu.

    Cordialement.  😊
     
    0
    1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      Je pense pas de soucis pour faire wraptext dans une fonction. Exemple :
      Function test()
      Columns("A:A").WrapText = True
      End Function
      0
      1. Utilisateur anonyme > yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention  
         
        Bonjour yg_be,
        Si tu as raison, alors bravo !!! Mais moi, ça a refusé
        de le faire pour une seule cellule ! Cdlt.  😊
        0