Retour à la ligne en VBA

Résolu/Fermé
lefort32 - 11 nov. 2016 à 12:16
 lefort32 - 12 nov. 2016 à 13:58
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

Utilisateur anonyme
11 nov. 2016 à 13:48
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
yg_be Messages postés 23406 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 25 décembre 2024 1 557
11 nov. 2016 à 14:15
Je pense pas de soucis pour faire wraptext dans une fonction. Exemple :
Function test()
Columns("A:A").WrapText = True
End Function
0
Utilisateur anonyme > yg_be Messages postés 23406 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 25 décembre 2024
11 nov. 2016 à 14:19
Bonjour yg_be,
Si tu as raison, alors bravo !!! Mais moi, ça a refusé
de le faire pour une seule cellule ! Cdlt.  😊
0