Bonjour,
J'utilise au travail un petit programme me permettant de saisir dans un commentaires la liste d'actions que j'ai réalisé.
Ce commentaire est limité en nombre de caractère (250)
Je cherche depuis un moment à réaliser une fonction qui permette à stocker dans le presse papier le contenu d'une variable et de le décomposer en plusieurs commentaires de - de 250 caractères.
Par principe j'utilise une fonction personnelle qui coupe à partir de 224 caractères au premier espace disponible.
J'ai définit 10 commentaires possibles.
Ma première fonction fonctionne très bien jusqu'à 2 commentaires mais elle déconne après, dont en voici le code
J'ai réécrit le module "contacts" qui est celui qui pose problème.
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
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93 Sub contactosr(interloc As String, contenu As String) a = Len(contenu) 'compte le nombre de caractère du contact - max 250 If a > 249 Then liste = contacts(contenu) b = liste(1) For c = 1 To b d = c + 1 inter1 = interloc & " " & c & "/" & b ' interlocuteur et ajouter numero / nombre de contacts MyData.SetText inter1 MyData.PutInClipboard Load contact contact.Image3.Visible = True contact.Label1.Visible = True contact.Label5.Caption = inter1 contact.Show vbModal Unload contact MyData.SetText liste(d) MyData.PutInClipboard Load contact contact.Image2.Visible = True contact.Label2.Visible = True contact.Label5.Caption = liste(d) contact.Show vbModal Unload contact Next c Else MyData.SetText interloc MyData.PutInClipboard Load contact contact.Image3.Visible = True contact.Label1.Visible = True contact.Label5.Caption = interloc contact.Show vbModal Unload contact MyData.SetText contenu MyData.PutInClipboard Load contact contact.Image2.Visible = True contact.Label2.Visible = True contact.Label5.Caption = contenu contact.Show vbModal Unload contact End If End Sub Function contacts(contens As String) '************************* LIMITER A 10 CONTACTS *************************************** '------- procedure pour scinder la requete ------------- 'La chaine sera scindée si sa longueur est supérieure à 80 caractères Dim requete(10) As String Dim compteu As Integer Dim compter As Integer Dim nombcont As Single Dim debut As Integer Dim debus As Integer If Len(contens) > 249 Then nombcont = (Len(contens) / 250) 'nombre de contacts If nombcont > Int(nombcont) Then nombcont = Int(nombcont) + 1 'arrondi au nombre supérieur si résultat division pas un nombre entier requete(1) = nombcont 'rentre dans le 1er argument le nombre de contact debut = InStr(224, contens, " ") 'définit la fin du contact requete(2) = Left(contens, debut) 'récupère le 1 er contact If nombcont > 1 Then For compteu = 2 To nombcont 'boucle enregistre les autres contact de 2 à infini compter = compteu + 1 fin = debut + 224 fin = InStr(fin, contens, " ") If fin = 0 Then fin = Len(contens) requete(compter) = Mid(contens, debut, fin) debut = debut + fin Next compteu End If End If contacts = requete End Function
En voici le code :
Mon soucis est que l'avant dernier commentaires copie l'ensemble du texte restant.
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
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39 Function contacts(contens As String) '************************* LIMITER A 10 CONTACTS *************************************** '------- procedure pour scinder la requete ------------- 'La chaine sera scindée si sa longueur est supérieure à 249 caractères Dim requete(10) As String Dim compteu As Integer Dim compter As Integer Dim nombcarac As Single Dim debut As Integer Dim debus As Integer nombcarac = Len(contens) If nombcarac > 249 Then requete(1) = 1 'rentre dans le 1er argument le nombre de contact debut = InStr(224, contens, " ") requete(2) = Left(contens, debut) If debut < nombcarac Then For compteu = 2 To 10 'boucle enregistre les autres contact de 2 à 10 compter = compteu + 1 If debut + 249 > nombcarac Then 'Création dernier contact et sorti de la boucle une fois tout le texte passé requete(compter) = Mid(contens, debut, nombcarac) requete(1) = compteu Exit For Else fin = InStr(debut + 224, contens, " ") 'recherche le numéro de lettre du point de sorti du contact requete(compter) = Mid(contens, debut, fin) 'saisi dans variable requete le texte requete(1) = compteu 'augmente de +1 le nombre de contacts debut = fin 'saisi le numéro point de départ du prochain contact fin = 0 End If Next compteu End If End If contacts = requete End Function
Pourtant mon code fonctionne. J'ai surveillé les variables qui comptabilisent les données.
Voici le texte que j'ai utilisé pour mon essai :
"ce jour sans mesure cette infinité de possibilités de colères de mensonges et cette avalanche d'amours qui ne cesse de tarabuster les pirates sont de sortie et pourtant il paraît que ce n'est pas l'issue la plus secourable peut-on pourra-t-on un jour en finir dans la poussière des carlingues la rouille des guimbardes des tréteaux interminables comme ce très long texte où personne ne voit du feu où personne ne voit goutte où personne ne voit clair où il n'y a personne pour sauver son voisin pas un mot pour en rattraper l'autre pas un orgue pour mesurer l'infinité du temps qui passe pas un violon pour nous aider à grimper à la cime des ifs et sur ces dolmens rassemblés comme dans un jeu de cartes un très long texte s'avance et se déploie avec la sûreté pierreuse des dolmens la voilure des stèles la douceur ombrageuse des ifs dont les petites boules rouges d'une netteté aussi sidérante qu'elles sont minuscules sont comme des lampions funèbres un très long texte résonne rebondit ou s'éternise jusqu'à ce que la note tenue sous les ifs comme une mélodie silencieuse effraie même les autours les éperviers et même le busard en maraude à tel point que nous nous retrouvons tous vous et moi à déclamer des lambeaux de ce très long texte debout ou accroupis sur les lourdes pierres qui couvrent depuis des millénaires les"
Il produit 6 contacts.
Observez bien le contenu de chacun des contacts, je retrouve le contenu de la fin du texte dans les 2 derniers contact et je ne comprends pas pourquoi ?
Il faut un forms nommé contact pour faire fonctionner le module "contactosr".
Je peux créer un fichier test et le mettre à disposition si nécessaire.
Merci pour votre aide,
Partager