Boucle sous condition

maguetlolo

XLDnaute Junior
bonjour tt le monde,

attention, voici ma premiere boucle!!!! (et grace a vos conseils)

Code:
Do Until N = 1

If Sheet = (Name = "Processus ()") Then
If (("activesheets""range1") = "") Then Exit Do
Application.Run "Macro1"
ActiveSheet.Next.Select
End If
Loop
End Sub

bon je sait c'est du travail d'amateur mais n'empeche!!


j'attends vos remarques sur cette macro, mais j'ai cependant un petit soucis,
cette macro en lance une autre qui est une macro de mise en page


Code:
    Cells.Select
    Selection.NumberFormat = "@"
    Columns("A:A").Select
    Selection.TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _
        TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
        Semicolon:=True, Comma:=False, Space:=False, Other:=False, FieldInfo _
        :=Array(Array(1, 4), Array(2, 4), Array(3, 1), Array(4, 2), Array(5, 1), Array(6, 1), _
        Array(7, 2), Array(8, 1)), TrailingMinusNumbers:=True
    Columns("A:A").EntireColumn.AutoFit
    Columns("B:B").EntireColumn.AutoFit
    Selection.ColumnWidth = 17.43
    Columns("B:B").ColumnWidth = 20
    Columns("C:C").ColumnWidth = 13.57
    Columns("D:D").ColumnWidth = 13.86
    Columns("D:D").EntireColumn.AutoFit
    Columns("G:G").EntireColumn.AutoFit
    Columns("G:G").ColumnWidth = 22.43
    Columns("F:F").ColumnWidth = 16.43
    Columns("E:E").ColumnWidth = 19.43
    Selection.ColumnWidth = 20.86

    
    Application.Run "Macro2"
    Application.Run "test"
    
    Columns("E:E").Select
    Selection.Delete Shift:=xlToLeft
    
    Application.Run "Macro3"
End Sub

d'une liste sur plusieurs feuilles nommées "Processus 01" pour le 1er jour du mois "Processus 02" pour le deuxieme et ainsi de suite ce que je voudrais, mais je n'ai pas réussi a le faire c'est qu'elle s'arrete dés qu'elle croise une feuille vide (car la j'ai un défaut) ou au moins dès qu'elle ouvre une feuille "Processus ()" dont la cellule "a2" est vide.

ensuite, vu que je m'en sert pas tous les jours mais presque qu'elle recherche les feuille "Processus ()" déja mise en forme et qu'elle n'y touche pas.

merci
 
Dernière édition:

Cousinhub

XLDnaute Barbatruc
Inactif
Re : Boucle sous condition

Bonjour,

un début d'idée....

Si cela ne convient pas, en rajoutant un fichier exemple, tu auras sans doute plus de chance d'avoir une réponse qui convienne

Code:
Public sh

Sub ee()
For Each sh In Sheets
If sh.Name Like "Processus*" And sh.[A2] = "" Then Application.Run "Macro1"
Next sh
End Sub

Sub macro1()
With sh
    .Cells.NumberFormat = "@"
    .Columns("A:A").TextToColumns Destination:=.Range("A1"), DataType:=xlDelimited, _
        TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
        Semicolon:=True, Comma:=False, Space:=False, Other:=False, FieldInfo _
        :=Array(Array(1, 4), Array(2, 4), Array(3, 1), Array(4, 2), Array(5, 1), Array(6, 1), _
        Array(7, 2), Array(8, 1)), TrailingMinusNumbers:=True
    .Columns("A:A").ColumnWidth = 17.43
    .Columns("B:B").ColumnWidth = 20
    .Columns("C:C").ColumnWidth = 13.57
    .Columns("D:D").EntireColumn.AutoFit
    .Columns("G:G").ColumnWidth = 22.43
    .Columns("F:F").ColumnWidth = 16.43
    .Columns("E:E").ColumnWidth = 19.43
    Application.Run "Macro2"
    Application.Run "test"
    .Columns("E:E").Delete Shift:=xlToLeft
    Application.Run "Macro3"
End With
End Sub
 

maguetlolo

XLDnaute Junior
Re : Boucle sous condition

fait une copie et execute la macro (bouton en "Processus 01"), elle fonctionne tres bien, mais le truc c'est que j'ai un défaut qui s'affiche quand elle arrive sur une page vide (si je le fait le 3 du mois, forcément la feuille du 4 est vide.)
ce qu'il faut rajouter, c'est:

que lorsqu'il arrive sur une page "Processus ()" vide, et bien que la boucle s'arette.(cellule "A2" vide)

mais qu'il ne la fasse que si la cellule "B2" est vide (solution pour qu'il ne retraite pas les feuille qui aurais déja été mises en forme) et dans le cas ou "B2" serais occupé passer a la feuille "Processus ()" suivante, jusqu'a ce qu'elle s'arrette sur une feuille dont la cellule "A2" serait vide.


j'espers que c'est clair, prends le temps pour lire ce paragraphe:D
 

Cousinhub

XLDnaute Barbatruc
Inactif
Re : Boucle sous condition

Re-,

ce n'était pas ma question...;)

Ce que je voudrais voir, c'est l'onglet finalisé

comme tu déplaces des colonnes, en supprimes d'autres, ce que je voudrais voir, c'est l'onglet final, ce que tu désires avoir comme mise en page....
 

maguetlolo

XLDnaute Junior
Re : Boucle sous condition

voila ce que ca donne, mais pour la suite, je ne peut pas te dire, la je met en forme pour pouvoir faire des analyse de processus et de défaut, il est en cour de montage, par la suite, il y aurat d'autres listes , d'autre macro qui viendrons se greffer dessus afin au final d'avoir un dossier de statistiques avec des analyses, des graphiques...

cela concerne un dizaine de machines alors ya du boulot! mais la tt de suite je peut pas t'en dire plus

pour info, sur l'original, chaque page de processus a entre 4000 et 20 000 lignes
 

Pièces jointes

  • pour test - Copie2.zip
    19.2 KB · Affichages: 25

maguetlolo

XLDnaute Junior
Re : Boucle sous condition

j'ai trouvé!!!!!:D

Sub Macro5()
'
' Macro5 Macro
'
'

'
Dim Cel As Range
Do Until N = 1
If Cells(2, 1) = "" Then Exit Do
If Cells(2, 2) = "" And Sheet = (Name = "Processus ()") Then Application.Run "Macro1"
ActiveSheet.Next.Select
Loop
End Sub


et en plus ca a l'air de marcher!! je vais voire ca sur un fichier original.

que pense tu de la forme? est elle écrit correctement?
 

Cousinhub

XLDnaute Barbatruc
Inactif
Re : Boucle sous condition

Re-,

regarde le fichier joint

ton code, un peu raccourci

Le code :

Code:
Public sh

Sub Macro5()
For Each sh In Sheets
If sh.Name Like "Processus*" And sh.[B1] = "" And sh.[A2] <> "" Then
With sh
    .Cells.NumberFormat = "@"
    .Columns("A:A").TextToColumns Destination:=.Range("A1"), DataType:=xlDelimited, _
        TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
        Semicolon:=True, Comma:=False, Space:=False, Other:=False, FieldInfo _
        :=Array(Array(1, 4), Array(2, 4), Array(3, 1), Array(4, 2), Array(5, 1), Array(6, 1), _
        Array(7, 2), Array(8, 1)), TrailingMinusNumbers:=True
    .Columns("G:G").Cut
    .Columns("D:D").Insert Shift:=xlToRight
    .Columns("E:E").Delete Shift:=xlToLeft
On Error Resume Next
    With .Range("A2:A" & .[B65000].End(xlUp).Row).SpecialCells(xlCellTypeBlanks)
        .FormulaR1C1 = "=RC[1]"
        .Value = .Value
    End With
On Error GoTo 0
    .Columns(4).Insert Shift:=xlToRight
    With .Range("C2:C" & .[C65000].End(xlUp).Row)
        .TextToColumns Destination:=Range("C2"), DataType:=xlFixedWidth, _
            FieldInfo:=Array(Array(0, 1), Array(2, 1)), TrailingMinusNumbers:=True
        .Delete Shift:=xlToLeft
    End With
    .[D1].Delete Shift:=xlToLeft
    .Columns("A:G").EntireColumn.AutoFit
End With
End If
Next sh
End Sub

le fichier :
 

Pièces jointes

  • maguet_v1.zip
    12.7 KB · Affichages: 31

maguetlolo

XLDnaute Junior
Re : Boucle sous condition

c cool ca, en effet je peux en prendre de la graine, je vais l'essayer au boulot sur le "gros" fichier original, je te tiendrais au courant (et merci, ca va vraiment m'aider et me faire progresser je vais un peu bosser sur tes modifs)

une petite question comme ca, comment peut-on faire un code pour vider le presse-papier dans une macro?
 

Discussions similaires

Réponses
2
Affichages
1 K

Membres actuellement en ligne

Statistiques des forums

Discussions
314 162
Messages
2 106 603
Membres
109 637
dernier inscrit
lafforest