Gestion variable boucle FOR
Résolu/Fermé
MastJager
Messages postés
21
Date d'inscription
jeudi 27 avril 2017
Statut
Membre
Dernière intervention
13 mars 2018
-
12 mars 2018 à 14:44
MastJager Messages postés 21 Date d'inscription jeudi 27 avril 2017 Statut Membre Dernière intervention 13 mars 2018 - 13 mars 2018 à 08:29
MastJager Messages postés 21 Date d'inscription jeudi 27 avril 2017 Statut Membre Dernière intervention 13 mars 2018 - 13 mars 2018 à 08:29
A voir également:
- Gestion variable boucle FOR
- Downloader for pc - Télécharger - Téléchargement & Transfert
- Logiciel gestion photo gratuit - Guide
- Logiciel gestion cave à vin gratuit excel - Télécharger - Cuisine & Gastronomie
- Logiciel gestion locative gratuit excel - Télécharger - Comptabilité & Facturation
- Idm for mac - Télécharger - Téléchargement & Transfert
3 réponses
ccm81
Messages postés
10907
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
24 janvier 2025
2 430
12 mars 2018 à 16:20
12 mars 2018 à 16:20
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
ccm81
Messages postés
10907
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
24 janvier 2025
2 430
Modifié le 12 mars 2018 à 18:42
Modifié le 12 mars 2018 à 18:42
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
MastJager
Messages postés
21
Date d'inscription
jeudi 27 avril 2017
Statut
Membre
Dernière intervention
13 mars 2018
13 mars 2018 à 08:29
13 mars 2018 à 08:29
Bonjour,
Désolé du retard ! Mais je tient à grandement te remercier le code fonctionne à merveille !
Merci pour le temps consacré :=).
P.S: Je vais coder sur Notepadd maintenant pour y voir plus claire avec les indentations !
Désolé du retard ! Mais je tient à grandement te remercier le code fonctionne à merveille !
Merci pour le temps consacré :=).
P.S: Je vais coder sur Notepadd maintenant pour y voir plus claire avec les indentations !
ccm81
Messages postés
10907
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
24 janvier 2025
2 430
12 mars 2018 à 16:54
12 mars 2018 à 16:54
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
MastJager
Messages postés
21
Date d'inscription
jeudi 27 avril 2017
Statut
Membre
Dernière intervention
13 mars 2018
12 mars 2018 à 16:59
12 mars 2018 à 16:59
Pour moi il me semblait nécessaire d'avoir les AL dans un tableau pour pouvoir inscrire les valeurs de E2 E1 S1 S2, j'avoue que je ne savais pas que VBA ne permet pas d'enregistrer ! :/
Penses-tu qu'il existerai une autre solution ? Ou ce sont les limites de VBA ?
Penses-tu qu'il existerai une autre solution ? Ou ce sont les limites de VBA ?
12 mars 2018 à 16:21
Modifié le 12 mars 2018 à 16:39
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.
12 mars 2018 à 16:46
Je vais tester de mon coter pour résoudre ce problème ! Cela me permettra de mieux comprendre ton programme ( Je débute évidemment :) )