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

5ciclo.zip (4.13 Ko)
4repor-ch.xlsm (28.84 Ko)

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

Rechercher des sujets similaires à "nos experts"