Utiliser une boucle For pour mettres des caracters en ligne colone

Bonjour

Je souhaite faire un programme qui print les id des nœuds dans un fichier texte comme dans le fichier joint > capture 1. Mon probleme est que, comme vous le voyer dans capture 1, les nœuds doivent obligatoirement s'aligner ainsi (par ligne de 8 colonnes ). Dans le cas de la capture 1 ( 4 lignes de 8 colonnes + un caractère sur la 5ieme ligne).

J'ai comme données d'entrée le nombre de nœud. Ma méthode, connaissant le nombre de nœud total serait:

a = nombreNoeud / 8 'Pour avoir le nombre de ligne

For i = 1 to a

print #1, " " & b1 & " " & b2 & " " & b3 & " " & b4 & " " & b5 & " " & b6 & " " & b7 & " " & b8 & "

b1, b2, b3,..... étant les nœuds

Or si je pars ainsi, je considère que la division de nombreNoeud / 8 admet toujours un reste nul. En gros comment je fais si la division admet un reste comme dans le cas de capture 1 ( ici le nombre de noeud est 33 >>> 33/8 = 4 * 8 + 1) donc 4 lignes de 8 colonnes + 1 caractere sur la 5ieme ligne comme sur le fichier joint

capture 1

si je dois utiliser des boucles for, comment est ce que je dois m'y prendre ou si vous avez une autre methode, merci de la partager

Merci par avance

Bonjour,

Et comment sont architecturés tes valeurs à la base ?

bonjour,

si tu utilises des variables nommées B1 à B33 , tu n'y arriveras pas. Tu dois utiliser un tableau

voici alors comment tu pourrais faire :

Sub aargh()
    For i = 1 To 33
        Print #1, b(i);
        If i Mod 8 = 0 Then Print #1, ""
    Next i
End Sub

bonjour,

si tu utilises des variables nommées B1 à B33 , tu n'y arriveras pas. Tu dois utiliser un tableau

voici alors comment tu pourrais faire :

Sub aargh()
    For i = 1 To 33
        Print #1, b(i);
        If i Mod 8 = 0 Then Print #1, ""
    Next i
End Sub

J'ai effectivement fais ce que vous m'avez dis, mais j'ai une erreur d'exécution 6, dépassement de capacité

voici la partie du code qui réfuse la compilation. Je me suis dis que je dépassais la taille du tableau mais c'est pas ca

Dim Tabl1() As Integer

ReDim Tabl1(33)

aa = 10

ab = 5

ac = 10

Tabl1(0) = 100000

Tabl1(1) = 200000

Tabl1(2) = 123456

ztabl = 1

For zzz = 4 To aa + 4

Tabl1(zzz - 1) = ztabl

ztabl = ztabl + ac + 1

Next zzz

ztable = ae + 1

For zza = 5 + aa To 5 + 2 * aa

Tabl1(zza - 1) = ztable

ztable = ztable + ac + 1

Next zza

ztablee = 2 * ae + 1 + ac * (ab - 1)

For zzb = 6 + 2 * aa To 6 + (2 * aa) + ab - 2

Tabl1(zzb - 1) = ztablee

ztablee = ztablee + ab - 1

Next zzb

ztableee = Am + 1 + ac * (ab - 1)

For zzc = 7 + (2 * aa) + ab - 2 To 7 + (2 * aa) + 2 * (ab - 2)

Tabl1(zzc - 1) = ztableee

ztableee = ztableee + ab - 1

Next zzc

Print #1, "$ Multipoint Constraints of the Entire Model"

Print #1, "$ ID conflict : the PATRAN MPC ID was 1"

For iii = 1 To NbrNoeud

Print #1, Tabl1(iii);

If iii Mod 8 = 0 Then Print #1, ""

Next iii

bonjour,

remplace cette instruction

Dim Tabl1() As Integer

par ceci

Dim Tabl1() As long

integer ne peut pas contenir des nombres > 32767 ou <-32768

bonjour,

remplace cette instruction

Dim Tabl1() As Integer

par ceci

Dim Tabl1() As long

integer ne peut pas contenir des nombres > 32767 ou <-32768

Re

encore merci de répondre.

J'ai 3 dernieres questions et apres on aura fait le tour

En fait quand je fais ce que vous dite, j' ai 2 espace entre les id des noeuds( voir capture 1) or comme je vous l'avais dis sur le premier sujet que vous m'avez aidé a faire le matin (comment mettre les espaces), je veux que les id soient séparé avec des espaces qui varient en fonction des chiffres que constituent les ids (voir capture 2). Du coup, j'ai essayé de faire comme vous l'avez dis avec la fonction formatfixe ( solution avec une fonction de formatage) mais ca ne marche pas ( c'est peut être ma syntaxe qui marche pas)

la deuxieme question est comment print le RBE2 qu'une seule fois (sur la première ligne comme dans capture 2) pare ce que ma syntaxe print le RBE2 a chaque fois qu'il met une valeur du tableau comme dans capture 1

la 3ieme, qui est plus simple, est comment déclarer un tableau dont la taille est une variable et pas une constante. Moi je fais:

Dim Tabl1() As Long

ReDim Tabl1(b)

la variable b prend sa valeur dans une cellule et donc ma manière de déclarer le tableau m'impose de déclarer ma variable b en constante et cela n'est pas possible vu qu'elle récupérè la valeur dans une cellule

Je vous met les lignes que j'ai ecrites

Print #1, "$ Multipoint Constraints of the Entire Model"

Print #1, "$ ID conflict : the PATRAN MPC ID was 1"

For iii = 1 To 33

Print #1, "RBE2"; Tabl1(iii - 1);

If iii Mod 8 = 0 Then Print #1, ""

Next iii

capture 1 capture 2

Bonjour,

merci d'arrêter de mettre des photos.

mets-nous le fichier avec ta macro que tu as adaptée et qui ne fonctionne pas.

Bonjour,

merci d'arrêter de mettre des photos.

met-nous le fichier avec ta macro que tu as adaptée et qui ne fonctionne pas.

c'est vrais, c'est ma premiere fois de poster un sujet

je vous le met en fichier joint. C'est au commentaire "RBE2

9classeur.xlsm (45.18 Ko)

Bonjour,

merci d'arrêter de mettre des photos.

mets-nous le fichier avec ta macro que tu as adaptée et qui ne fonctionne pas.

vous comprendrez mieux sur celui la >Macro 2

la partie se trouve au commentaire RBE2. Toutes les 3 questions sont liées a cette section, juste en haut du commentaire "GRID

5classeur.xlsm (46.11 Ko)

Bonjour,

Et le fichier où récupérer les valeurs il est où ?

bonjour,

voici le fichier avec les corrections pour tes 3 nouvelles demandes.

note qu'avec l'exemple que tu as donné tu recevras un message d'erreur (erreur 9), sur le tableau redimensionné en fonction de nbrnoeud. tu dois à mon avis ajuster les valeurs aa, ab et/ou ac pour que les valeurs des indices de tableau ne dépassent pas la dimension du tableau.

si tu mets 33 comme valeur pour nbrnoeud, tu pourras voir le fichier généré.

6testoumar.xlsm (41.15 Ko)

bonjour,

voici le fichier avec les corrections pour tes 3 nouvelles demandes.

note qu'avec l'exemple que tu as donné tu recevras un message d'erreur (erreur 9), sur le tableau redimensionné en fonction de nbrnoeud. tu dois à mon avis ajuster les valeurs aa, ab et/ou ac pour que les valeurs des indices de tableau ne dépassent pas la dimension du tableau.

si tu mets 33 comme valeur pour nbrnoeud, tu pourras voir le fichier généré.

ah c'est parfait, effectivement ca marche

grace a vous je peux enfin continuer mon projet

Merci vraiment encore

Rechercher des sujets similaires à "utiliser boucle mettres caracters ligne colone"