Gestion variable boucle FOR
Résolu
MastJager
Messages postés
21
Date d'inscription
Statut
Membre
Dernière intervention
-
MastJager Messages postés 21 Date d'inscription Statut Membre Dernière intervention -
MastJager Messages postés 21 Date d'inscription Statut Membre Dernière intervention -
A voir également:
- Gestion variable boucle FOR
- Downloader for pc - Télécharger - Téléchargement & Transfert
- Logiciel gestion locative gratuit excel - Télécharger - Comptabilité & Facturation
- Logiciel gestion photo gratuit - Guide
- Gestion de fichiers - Télécharger - Gestion de fichiers
- Idm for mac - Télécharger - Téléchargement & Transfert
3 réponses
Bonjour
ça pourrait ressembler à ceci
Cdlmnt
ça pourrait ressembler à ceci
Option Explicit ' oblige à déclarer toutes les variables Public Sub OK() Dim IP As Long, n As Long, lifin As Long Dim ALARME() ' tableau qu'on dimensionnera au fur et à mesure Dim E2_ALARME, S2_ALARME, E1_ALARME, S1_ALARME Dim AL As String Dim nom_variable, uID ' variables utilisées dans ta procedure n = 0 With Sheets("Feuil5") lifin = .Range("A" & Rows.Count).End(xlUp).Row For IP = 1 To lifin Step 4 ' on saute 4 ligne à chaque tour de boucle E2_ALARME = .Cells(IP + 1, 1) S2_ALARME = .Cells(IP + 3, 1) E1_ALARME = .Cells(IP, 1) S1_ALARME = .Cells(IP + 2, 1) AL = "ITEM SYMBOL { " & vbCrLf & "NOM= " & nom_variable & vbCrLf _ & "TRAME=2000000,2ffffff,ffffffff,0" & vbCrLf & "CONTOUR=2ffffff,fffffff7,1" & vbCrLf _ & "UID=" & Hex(uID) & vbCrLf & "ANIMATION {" & vbCrLf & "@E2=&" & E2_ALARME & vbCrLf _ & "@S2=&" & S2_ALARME & vbCrLf & "@EI=&" & E1_ALARME & vbCrLf & "@SI=&" _ & S1_ALARME & vbCrLf & "}" & vbCrLf & "RECT=767,208,783,224" & vbCrLf _ & "Rotation = 0" & vbCrLf & "}" ' redimensionner le tableau ALARME et affecter à sa dernière case la variable AL n = n + 1 ReDim Preserve ALARME(1 To n) ALARME(n) = AL Next IP End With End Sub
Cdlmnt
le programme affiche bien les données de "AL" mais uniquement les dernières valeurs.
Ben oui, tu fénfint tes n valeurs AL, puis tu ouvres ton fichier, puis tu lui envoie AL (donc la derniere valeur calculée) puis tu envoies au fichier test la derniere valeur de AL
On va faire ça en deux parties
1. Remplir le tableau ALARME avec les n valeurs AL
2. Créer le fichier test puis
2.1 lui envoyer l'entête
2.2. lui envoyer le tableau ALARME lihne par ligne (la boucle For ...)
2.3. lui envoyer la partie fin de fichier
Comme ceci
RQ. Tu devrais utiliser l'indentation dans ton code (décalages pour mettre en evidence les blocs de code)
Cdlmnt
Ben oui, tu fénfint tes n valeurs AL, puis tu ouvres ton fichier, puis tu lui envoie AL (donc la derniere valeur calculée) puis tu envoies au fichier test la derniere valeur de AL
On va faire ça en deux parties
1. Remplir le tableau ALARME avec les n valeurs AL
2. Créer le fichier test puis
2.1 lui envoyer l'entête
2.2. lui envoyer le tableau ALARME lihne par ligne (la boucle For ...)
2.3. lui envoyer la partie fin de fichier
Comme ceci
Option Explicit ' oblige à déclarer toutes les variables Public Sub OK() Dim IP As Long, n As Long, lifin As Long, k As Long Dim ALARME() ' tableau qu'on dimensionnera au fur et à mesure ' et qui contiendra les AL successifs Dim E2_ALARME, S2_ALARME, E1_ALARME, S1_ALARME Dim AL As String Dim nom_variable, uID ' variables utilisées dans ta procedure n = 0 With Sheets("Ctrl ACCES RESULT ALARME") lifin = .Range("A" & Rows.Count).End(xlUp).Row For IP = 1 To lifin Step 4 ' on saute 4 ligne à chaque tour de boucle E2_ALARME = .Cells(IP + 1, 1) S2_ALARME = .Cells(IP + 3, 1) E1_ALARME = .Cells(IP, 1) S1_ALARME = .Cells(IP + 2, 1) AL = "ITEM SYMBOL { " & vbCrLf & "NOM= " & nom_variable & vbCrLf _ & "TRAME=2000000,2ffffff,ffffffff,0" & vbCrLf & "CONTOUR=2ffffff,fffffff7,1" & vbCrLf _ & "UID=" & Hex(uID) & vbCrLf & "ANIMATION {" & vbCrLf & "@E2=&" & E2_ALARME & vbCrLf _ & "@S2=&" & S2_ALARME & vbCrLf & "@EI=&" & E1_ALARME & vbCrLf & "@SI=&" _ & S1_ALARME & vbCrLf & "}" & vbCrLf & "RECT=767,208,783,224" & vbCrLf _ & "Rotation = 0" & vbCrLf & "}" ' redimensionner le tableau ALARME et affecter à sa dernière case la variable AL n = n + 1 ReDim Preserve ALARME(1 To n) ALARME(n) = AL Next IP End With ' le tableau ALARME est rempli avec les n AL ' il ne reste qu'à l'envoyer dans le fichier test Open "D:\Users\test.txt" For Output As #1 ' en tête du fichier test Print #1, "//EDITEUR DE SYNOPTIQUE - SYNO" Print #1, "//TIL TECHNOLOGIES (C)" Print #1, "//VERSION 2.8" Print #1, "Synoptique {" ' Début du fichier Synoptique ' ecriture des n AL du tableau ALARME For k = 1 To n Print #1, ALARME(k) Next k ' fin du fichier test Print #1, "CX=600" 'Début déclaration taille du synoptique Print #1, "CY=400" Print #1, "TRAME=2000000,2dcdcdc,1,1" Print #1, "SYMBOL LOCAL=0" Print #1, "LIBRAIRIE {" Print #1, "}" 'Fin du fichier Synoptique Print #1, "// Fin de fichier" Close #1 'Fermer le fichier End Sub
RQ. Tu devrais utiliser l'indentation dans ton code (décalages pour mettre en evidence les blocs de code)
Cdlmnt
Petite question, est ce que je pourrai utiliser la variable "AL" pour effectuer un Print dans un fichier txt
oui comme tu as fait
Print #1, AL
Je ne sais pas si le VBA pour enregistrer un tableau.
Comme il faut l'envoyer ligne par ligne, ce n'est pas la peine de mettre les AL dans un tableau
oui comme tu as fait
Print #1, AL
Je ne sais pas si le VBA pour enregistrer un tableau.
Comme il faut l'envoyer ligne par ligne, ce n'est pas la peine de mettre les AL dans un tableau
Je ne sais pas si le VBA pour enregistrer un tableau. En effet la suite de programme ce déroule comme ceci :
Actuellement je répare l'érreur "9" "L'objet n'appartient pas à la sélection" Donc je n'est pas encore testé ton programme.
Edit : Je viens de comprendre qu'il faut inscrire le Nom de la feuille.
Je vais tester de mon coter pour résoudre ce problème ! Cela me permettra de mieux comprendre ton programme ( Je débute évidemment :) )