Retour à la ligne à partir d'un certain nombre de caractères... [Résolu]

Signaler
-
 mattbboys -
Bonjour,

J'ai une variable "contenu" qui contient un texte (plus ou moins long). Ce texte est inséré de excel vers autocad.

Néanmoins, j'aimerais réaliser une retour à la ligne dès que le texte dépasse 15 caractères...

Je commencerais donc par:

if len(contenu)>=15 then
...?

Un peu d'aide SVP!

PS: Je travaille sous Microsoft Visual Basic

15 réponses

Messages postés
781
Date d'inscription
lundi 22 janvier 2007
Statut
Membre
Dernière intervention
30 octobre 2013
3
Je penses que ton problème vient du fait que commentaire n'est pas un string.

Regarde si commentaire a une méthode tosring (ou autre)et utilise la pour la boucle.

Si non il faut que tu crées un varible string qui prendra la valeur que tu veux et que tu utiliseras pour la boucle et qui sera envoyé a autocad.
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
68
PS : Rectifications à faire, mais juste par esprit de perfection :
- j = j + 15 + 2, le +2 à cause du vbCrLf
- & à la place des +, les chaines se concatènent avec des &
- Remplace While-Wend (obsolète) par Do While-Loop
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
227
Bonjour,
Ce que tu cherches, au bout du compte, n'est pas ouvrir un fichier, mais l'exécuter, en fonction de son extension, avec le programme qui le concerne.
Intéresse-toi donc dans ce cas à l'utilisation de la fonction ShellExecute de l'Api de Windows. Tu trouveras de très nombreuses discussions et des sources déposées à ce propos sur ce forum. Sers-toi de son moteur de recherche (mot clef : ShellExecute).


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
Messages postés
781
Date d'inscription
lundi 22 janvier 2007
Statut
Membre
Dernière intervention
30 octobre 2013
3
Teste cela

  
Dim j As Integer
    j = 15  
  While j < Len(contenu)
    
    contenu= Mid(contenu, 1, j) + vbCrLf + Mid(contenu, j + 1)
     j = j + 15
 Wend
Bonjour mattbboys.

Je suppose que vous travaillez sous vb6, et non pas vb.net. Dans cette hypothèse, je vous suggère de chercher dans votre aide les fonctions Left, Mid, et Right, appliquées aux variables de type String. Avec la fonction Len que vous avez déjà mentionnée, vous devriez pouvoir vous débrouiller.


Cordialement.


Étant illettré, je signe d'une croix : ×
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
68
Bien joué 4u4me4us

Juste pour parfaire cette solution déjà fonctionnelle :
Puisqu'on insère un vbCrLf, on ajoute donc 2 caractères à la chaine.
Donc le saut fait après cette insertion devrait être de 15+2.

Pour les chaines de caractères, mieux vaut utiliser le symbole & pour concaténer les morceaux, + pouvant être mal interprété par le compilo sous certaines conditions ... sur lesquelles on finira forcément par tomber un jour.

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on le partage (Socrate)
Merci pour votre rapidité !

Effectivement ça a l'air logique, néanmoins l'ajout de ce petit morceau me fait un joli bug général d'AutoCAD qui ne répond plus :) !

Voici la partie du code concerné, j'ai certainement du faire une erreur...

'Début de la boucle d'insertion des commentaires

If commentairechoice = True Then

contenu1 = ExcelSheet.Cells(row, column1)

PointInsertion(0) = xc
PointInsertion(1) = yc
PointInsertion(2) = 0

Hauteur = 0.18

Set commentaire = ThisDrawing.ModelSpace.AddText(contenu1, PointInsertion, Hauteur)

commentaire.Rotation = (2 * Atn(1) / 2)

Dim j As Integer
j = 15

While j < Len(commentaire)

commentaire = Mid(commentaire, 1, j) + vbCrLf + Mid(commentaire, j + 1)
j = j + 15
Wend
commentaire.Update

row1 = row1 + 1
xc = xc + 4

End If
Messages postés
781
Date d'inscription
lundi 22 janvier 2007
Statut
Membre
Dernière intervention
30 octobre 2013
3
Oui jack, je vois ce que tu veux dir

Donc mat si tu prends cette solution fais les modif qu' indique jack c mieux.
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
227
Bonjour,
dans on code tu as déclaré commentaire comme un objet.
Un objet n'est pas une chaine de caractères.


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
Merci à tous, ça marche nikel !
Le problème venait bien de là je n'ai pas fait attention!
La je suis gaté! Merci encore, ma macro va pas tarder à marcher aux petits oignons!
tant que j'y suis, quelle fonction utilise-t-on pour parcourir et ouvrir un fichier?
la fonction "GetOpenFilename" ne fonctionne pas, j'ai l'erreur 438 "Ppté ou méthode non gérée par cet objet"

cela veut dire que ça fonctionne uniquement avec excel sous excel?
Messages postés
781
Date d'inscription
lundi 22 janvier 2007
Statut
Membre
Dernière intervention
30 octobre 2013
3
Renseigne toi sur l'aide ou le net pour la fonction Open (qui j’espère n'est pas périmée )

Il y a x façons de parcourir un fichier mais il y a x exemples aussi sur l net.
Je cherche... Mais tout ce que je trouve c'est ouvrir un pauvre fichier directement avec son lien. Et la fonction Open c'est pour les fichiers textes ou binaires.
Merci bien pour l'info !