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

- - Dernière réponse :  mattbboys - 1 févr. 2013 à 09:59
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
Afficher la suite 

15 réponses

Meilleure réponse
Messages postés
781
Date d'inscription
lundi 22 janvier 2007
Statut
Membre
Dernière intervention
30 octobre 2013
3
3
Merci
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.

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 208 internautes nous ont dit merci ce mois-ci

Commenter la réponse de 4u4me4us
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
61
3
Merci
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

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 208 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_Jack
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
214
3
Merci
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.

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 208 internautes nous ont dit merci ce mois-ci

Commenter la réponse de ucfoutu
Messages postés
781
Date d'inscription
lundi 22 janvier 2007
Statut
Membre
Dernière intervention
30 octobre 2013
3
0
Merci
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
Commenter la réponse de 4u4me4us
0
Merci
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 : ×
Commenter la réponse de Zermelo
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
61
0
Merci
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)
Commenter la réponse de cs_Jack
0
Merci
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
Commenter la réponse de mattbboys
Messages postés
781
Date d'inscription
lundi 22 janvier 2007
Statut
Membre
Dernière intervention
30 octobre 2013
3
0
Merci
Oui jack, je vois ce que tu veux dir

Donc mat si tu prends cette solution fais les modif qu' indique jack c mieux.
Commenter la réponse de 4u4me4us
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
214
0
Merci
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.
Commenter la réponse de ucfoutu
0
Merci
Merci à tous, ça marche nikel !
Le problème venait bien de là je n'ai pas fait attention!
Commenter la réponse de mattbboys
0
Merci
La je suis gaté! Merci encore, ma macro va pas tarder à marcher aux petits oignons!
Commenter la réponse de mattbboys
0
Merci
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?
Commenter la réponse de mattbboys
Messages postés
781
Date d'inscription
lundi 22 janvier 2007
Statut
Membre
Dernière intervention
30 octobre 2013
3
0
Merci
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.
Commenter la réponse de 4u4me4us
0
Merci
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.
Commenter la réponse de mattbboys
0
Merci
Merci bien pour l'info !
Commenter la réponse de mattbboys