Ou sont nos experts
Bonjour alors j'ai un macro excel qui importe le contenu d'un fichier texte dans une première feuille ensuite il cherche des termes pour les classer dans une deuxième feuille par suite les copier dans une troisième par ligne de données et ainsi de suite pour chaque ligne :
ce que je veux faire :
* Exécuter la macro chaque 5 secondes pour importer le texte dans ma 1ere feuille si il'y avait le mot "End Cycle" on continue l’exécution du macro si non on annule le tout et redémarrer après 5 secondes ainsi de suite ...
voila mon module :
Option Explicit
Sub seleccionar1()
Dim cycle As String
Dim lot As String
Dim code As String
Dim start As String
Dim fin As String
Dim ph1 As String
Dim ph5 As String
Dim ph17 As String
Dim ph9 As String
Dim Alm As String
Dim r As Range
Dim tx As String
Dim uFila As Long
' apporter des données macro
'
'Sheets.Add After:=ActiveSheet
Workbooks.OpenText Filename:="C:\Users\DELL\Desktop\IT\ciclo.txt", _
Origin:=xlWindows, StartRow:=1, DataType:=xlDelimited, TextQualifier:= _
xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, Semicolon:=False _
, Comma:=False, Space:=False, Other:=False, FieldInfo:=Array(1, 1), _
TrailingMinusNumbers:=True
Cells.Select
Selection.Copy
Windows("Repor_CH.xlsm").Activate
Sheets("datos").Select
Cells.Select
ActiveSheet.Paste
'Sheets("datos").Select
cycle = "Cycle :"
Columns(1).Find(cycle).Activate
ActiveCell.Copy
Sheets("Feuil1").Select
Range("C1").Select
ActiveSheet.Paste
' lot
Sheets("datos").Select
lot = "Lot 1"
Columns(1).Find(lot).Activate
ActiveCell.Copy
Sheets("Feuil1").Select
Range("C2").Select
ActiveSheet.Paste
' produit
Sheets("datos").Select
code = "Code 1"
Columns(1).Find(code).Activate
ActiveCell.Copy
Sheets("Feuil1").Select
Range("C3").Select
ActiveSheet.Paste
' heure de début
Sheets("datos").Select
start = "START"
Columns(1).Find(start).Activate
ActiveCell.Copy
Sheets("Feuil1").Select
Range("C4").Select
ActiveSheet.Paste
' heure final
Sheets("datos").Select
fin = "END CYCLE"
Columns(1).Find(fin).Activate
ActiveCell.Copy
Sheets("Feuil1").Select
Range("C5").Select
ActiveSheet.Paste
' charger de l'eau
Sheets("datos").Select
ph1 = "PLC Duration Phase [33]"
Columns(1).Find(ph1).Activate
ActiveCell.Copy
Sheets("Feuil1").Select
Range("C6").Select
ActiveSheet.Paste
' chauffage
Sheets("datos").Select
ph5 = "PLC Duration Phase [5]"
Columns(1).Find(ph5).Activate
ActiveCell.Copy
Sheets("Feuil1").Select
Range("C7").Select
ActiveSheet.Paste
' Stérilisation
Sheets("datos").Select
ph17 = "PLC Duration Phase [17]"
Columns(1).Find(ph17).Activate
ActiveCell.Copy
Sheets("Feuil1").Select
Range("C8").Select
ActiveSheet.Paste
' refroidissement
Sheets("datos").Select
ph9 = "PLC Duration Phase [9]"
Columns(1).Find(ph9).Activate
ActiveCell.Copy
Sheets("Feuil1").Select
Range("C9").Select
ActiveSheet.Paste
' temps fin stérilisation
Sheets("datos").Select
ph17 = "PLC Duration Phase [17]"
Columns(1).Find(ph17).Activate
ActiveCell.Offset(-3, 0).Select
Selection.Copy
Sheets("Feuil1").Select
Range("C11").Select
ActiveSheet.Paste
Sheets("datos").Select
ActiveCell.Offset(1, 0).Select
Selection.Copy
Sheets("Feuil1").Select
Range("C12").Select
ActiveSheet.Paste
Sheets("Feuil1").Select
Sheets("datos").Select
uFila = ActiveSheet.Cells(Rows.Count, ActiveCell.Column).End(xlUp).Row
tx = "Alarms occurred during cycle"
If tx <> "" Then
For Each r In Range(ActiveCell.Address, Cells(uFila, ActiveCell.Column))
If InStr(1, ActiveCell.Value, tx) > 0 Then
Alm = "YES"
End If
Selection.Offset(1).Select
Next r
Sheets("Feuil1").Select
Range("B19").Select
ActiveCell = Alm
End If
' supprimer la feuille
Sheets("datos").Select
Columns("A:A").Select
Selection.Delete Shift:=xlToLeft
Range("F14").Select
Sheets("Feuil1").Select
' points dans le rapport
Rows("19:19").Select
Selection.Copy
Sheets("report").Select
Rows("4:4").Select
Selection.Insert Shift:=xlDown
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Sheets("Feuil1").Select
Range("E37").Select
Sheets("report").Select
' fermer le fichier de cycle importé
Windows("ciclo.txt").Activate
ActiveWorkbook.Close
End Sub
Bonjour,
1- change le titre pour faciliter demain les recherches
2- mets ton code en forme , voir l'icone </>
3- indente ton code pour y voir clair, toi comme nous
4- mets un bout de fichier excel, voire un bout de fichier texte
tu seras sûr 'avoir des réponses pertinentes. D'autant que ton sujet paraît très intéressant.
Option Explicit
Sub seleccionar1()
Dim cycle As String
Dim lot As String
Dim code As String
Dim start As String
Dim fin As String
Dim ph1 As String
Dim ph5 As String
Dim ph17 As String
Dim ph9 As String
Dim Alm As String
Dim r As Range
Dim tx As String
Dim uFila As Long
' apporter des données macro
'
'Sheets.Add After:=ActiveSheet
Workbooks.OpenText Filename:="C:\Users\DELL\Desktop\IT\ciclo.txt", _
Origin:=xlWindows, StartRow:=1, DataType:=xlDelimited, TextQualifier:= _
xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, Semicolon:=False _
, Comma:=False, Space:=False, Other:=False, FieldInfo:=Array(1, 1), _
TrailingMinusNumbers:=True
Cells.Select
Selection.Copy
Windows("Repor_CH.xlsm").Activate
Sheets("datos").Select
Cells.Select
ActiveSheet.Paste
'Sheets("datos").Select
cycle = "Cycle :"
Columns(1).Find(cycle).Activate
ActiveCell.Copy
Sheets("Feuil1").Select
Range("C1").Select
ActiveSheet.Paste
' lot
Sheets("datos").Select
lot = "Lot 1"
Columns(1).Find(lot).Activate
ActiveCell.Copy
Sheets("Feuil1").Select
Range("C2").Select
ActiveSheet.Paste
' produit
Sheets("datos").Select
code = "Code 1"
Columns(1).Find(code).Activate
ActiveCell.Copy
Sheets("Feuil1").Select
Range("C3").Select
ActiveSheet.Paste
' heure de début
Sheets("datos").Select
start = "START"
Columns(1).Find(start).Activate
ActiveCell.Copy
Sheets("Feuil1").Select
Range("C4").Select
ActiveSheet.Paste
' heure final
Sheets("datos").Select
fin = "END CYCLE"
Columns(1).Find(fin).Activate
ActiveCell.Copy
Sheets("Feuil1").Select
Range("C5").Select
ActiveSheet.Paste
' charger de l'eau
Sheets("datos").Select
ph1 = "PLC Duration Phase [33]"
Columns(1).Find(ph1).Activate
ActiveCell.Copy
Sheets("Feuil1").Select
Range("C6").Select
ActiveSheet.Paste
' chauffage
Sheets("datos").Select
ph5 = "PLC Duration Phase [5]"
Columns(1).Find(ph5).Activate
ActiveCell.Copy
Sheets("Feuil1").Select
Range("C7").Select
ActiveSheet.Paste
' Stérilisation
Sheets("datos").Select
ph17 = "PLC Duration Phase [17]"
Columns(1).Find(ph17).Activate
ActiveCell.Copy
Sheets("Feuil1").Select
Range("C8").Select
ActiveSheet.Paste
' refroidissement
Sheets("datos").Select
ph9 = "PLC Duration Phase [9]"
Columns(1).Find(ph9).Activate
ActiveCell.Copy
Sheets("Feuil1").Select
Range("C9").Select
ActiveSheet.Paste
' temps fin stérilisation
Sheets("datos").Select
ph17 = "PLC Duration Phase [17]"
Columns(1).Find(ph17).Activate
ActiveCell.Offset(-3, 0).Select
Selection.Copy
Sheets("Feuil1").Select
Range("C11").Select
ActiveSheet.Paste
Sheets("datos").Select
ActiveCell.Offset(1, 0).Select
Selection.Copy
Sheets("Feuil1").Select
Range("C12").Select
ActiveSheet.Paste
Sheets("Feuil1").Select
Sheets("datos").Select
uFila = ActiveSheet.Cells(Rows.Count, ActiveCell.Column).End(xlUp).Row
tx = "Alarms occurred during cycle"
If tx <> "" Then
For Each r In Range(ActiveCell.Address, Cells(uFila, ActiveCell.Column))
If InStr(1, ActiveCell.Value, tx) > 0 Then
Alm = "YES"
End If
Selection.Offset(1).Select
Next r
Sheets("Feuil1").Select
Range("B19").Select
ActiveCell = Alm
End If
' supprimer la feuille
Sheets("datos").Select
Columns("A:A").Select
Selection.Delete Shift:=xlToLeft
Range("F14").Select
Sheets("Feuil1").Select
' points dans le rapport
Rows("19:19").Select
Selection.Copy
Sheets("report").Select
Rows("4:4").Select
Selection.Insert Shift:=xlDown
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Sheets("Feuil1").Select
Range("E37").Select
Sheets("report").Select
' fermer le fichier de cycle importé
Windows("ciclo.txt").Activate
ActiveWorkbook.Close
End Sub
Ce sont mes deux fichiers merci pour votre réponse
Je pense qu'il serait donc préférable de rechercher le terme fin avant de détailler le contenu
Sheets("datos").Select
fin = "END CYCLE"
On Error GoTo fin
Columns(1).Find(fin).Activate
On Error GoTo 0
puis tu mets dans fin :
la fermeture du fichier texte et une tempo pour relancer le cycle