Pour me perfectionner

Bonjour,

Cette macro fonctionne bien.

Sub todocopy()
Worksheets("Suivi").UsedRange.Copy
 Worksheets("TODO").Paste _
 Worksheets("TODO").Range("A1")
 Application.CutCopyMode = False
  Debut = 3
 Fin = 990
 ColNb = 1
For i = Debut To Fin
If Cells(i, ColNb).Value = "TO DO" Then
Cells(i, ColNb).EntireRow.Hidden = False
Else
Cells(i, ColNb).EntireRow.Hidden = True
End If
Next i
Worksheets("TODO").Activate
End Sub

Je me demande si je ne pourrai pas l'améliorer.

En fait il faudrait que je dise :

Si dans la colonne A depuis la ligne 2 à la ligne 1000 , il y a dans une cellule le mot "OK"

Alors copier toutes les lignes dans la feuille "OK" à partir de la ligne 2.

J'ai essayé mais je vois pas comment lui donner le mot à rechercher.

Ce code fait afficher de suite la MsgBox, et tourne en boucle, je dois arrêter le processus Excel via le gestionnaire des tâches.

Sub okcopy2()
 Debut = 2
 Fin = 990
 ColNb = 1
For i = Debut To Fin
If Cells(i, ColNb).Value = "OK" Then
Worksheets("Suivi").UsedRange.Copy
 Worksheets("OK").Paste _
 Worksheets("OK").Range("A1")
 Application.CutCopyMode = False
Else
MsgBox "Pas d'incident de fermé"
End If
Next i
Worksheets("OK").Activate
End Sub

Merci à vous.

bonjour,

essaie ceci

Sub okcopy2()
    Debut = 2
    fin = 990
    ColNb = 1
    For i = Debut To fin
        If Cells(i, ColNb).Value = "OK" Then
            Worksheets("Suivi").UsedRange.Copy Worksheets("OK").Range("A1")
            Application.CutCopyMode = False
            Exit For
        End If
    Next i
    If i > fin Then MsgBox "Pas d'incident de fermé"
    Worksheets("OK").Activate
End Sub

Bonjour,

Normal qu'il affiche plusieurs fois

Sur ta boucle, à chaque ligne controlée, si il n'y a pas OK il affiche ton message

il faut créer une variable compteur en integer et mettre à la place de ton message compteur=compteur+1

et après le Next mettre ton message

MsgBox compteur & " d'incident(s) de fermé" par exemple et à améliorer si compteur = 0 par un une condition IF

Bonjour h2so4, M12,

@H2so4

J'ai testé ton code.

Il arrive directement à la MsgBox.

Au moins il ne tourne plus en boucle.

Il ne trouve pas le mot OK dans la colonne.

@M12,

Je vais essayer de comprendre to message et l'appliquer.

Merci à vous deux.

re-

Il ne trouve pas le mot OK dans la colonne.

c'est qu'il n'y est pas !

comme l'instruction Cells(i, ColNb).Value

n'est pas précédée du nom de la feuille, la macro examine la cellule en question sur la feuille active. De plus le test se fait sur "OK" en majuscules.

une adaptation du code pour pallier ces problèmes.

Sub okcopy2()
    Debut = 2
    fin = 990
    ColNb = 1
    For i = Debut To fin
        If Ucase(Worksheets("Suivi").Cells(i, ColNb).Value) = "OK" Then
            Worksheets("Suivi").UsedRange.Copy Worksheets("OK").Range("A1")
            Application.CutCopyMode = False
            Exit For
        End If
    Next i
    If i > fin Then MsgBox "Pas d'incident de fermé"
    Worksheets("OK").Activate
End Sub

Bonjour h2so4,

Cela fonctionne, mais malheureusement je dois faire un tri par la suite pour avoir que les lignes avec OK.

Je vais chercher encore en attendant je vais garder la macro originale qui fait le trie en même temps.

Merci à toi.

3suivi.xlsm (178.05 Ko)
Rechercher des sujets similaires à "perfectionner"