Interference macro

Bonjour à tous,

Je souhaiterais créer une macro commande avec un bouton pour effacer toutes les lignes contenant le mot "CS OUT" dans la colonne "i" (Statut). J'avais trouvé un code qui à priori devait fonctionner mais il fait un débogage avec une autre macro déjà présente sur la feuille (car sollicite la même colonne et le même mot).
Pourriez-vous m'aider s'il vous plait? Merci d'avance.

Cordialement,

8tableau-cs.zip (388.66 Ko)

Bonjour

si j'ai bien compris, vous voulez que la ligne avec le mot "CS OUT" s'effacede la feuille Journal et part à la feuille Sortie_CS pour garder les traces de sortie????

est ce bien cela

a vous relire

re

si c'est bien cela???

a vous relire

2tableau-cs-ok.zip (389.61 Ko)

Bonjour Sohiel, bonjour le forum,

Le code ci-dessous à appliquer à un bouton...

Sub Macro1()
Dim O As Worksheet 'déclare la variable O (Onglet)
Dim TV As Variant 'déclare la variable TV (Tableau des Valeurs)
Dim PL As Range 'déclare la variable PL (PLage)

Application.ScreenUpdating = False 'masque les rafraîchissements d'écran
Application.EnableEvents = False 'empêche les macro événementielles (conmme Change par exemple)
Set O = Worksheets("JOURNAL") 'définit l'onglet O
Set PL = O.Range("A1") 'initialiase la plage PL (1 seule cellule)
TV = O.Range("C7").CurrentRegion 'définit le tableau des valeurs TV
For I = 2 To UBound(TV, 1) 'boucle sur toutes les lignes I du tableau des valeurs TV (en partant de la seconde)
    If TV(I, 7) = "CS OUT" Then 'condition : si la donnée ligne I colonne 7 de TV est égale à "CS OUT"
        Set PL = IIf(PL.Cells.Count = 1, O.Rows(I + 6), Application.Union(PL, O.Rows(I + 6))) 'redéfinit la plage PL
    End If 'fin de la condition
Next I 'prochaine ligne de la boucle
If PL.Cells.Count > 1 Then PL.Delete 'si le nombre de cellule de la plage PL est supérieur à 1, supprime la plage PL
Application.EnableEvents = True 'autorise les macro événementielles (conmme Change par exemple)
Application.ScreenUpdating = False 'Affiche les rafraîchissements d'écran
End Sub

En revanche, ta macro événementielle Change prend la colonne C comme référence et comme dans ton exemple elle n'est pas renseignée, les lignes ne se copient pas les unes en-dessous des autres. Change cette ligne de code :

Target.EntireRow.Copy sht.Rows(sht.Range("C" & Rows.Count).End(xlUp).Row + 1)

par :

Target.EntireRow.Copy sht.Rows(sht.Range("D" & Rows.Count).End(xlUp).Row + 1)

[Édition]

Bonjour Iliyes, nos posts ses sont croisés...

Bonjour ThauThème

j'espere que tu va bien!!!

Bonjour Ilyes,

Non, en effet il existe déjà une macro qui me permet de copier la ligne entière depuis "JOURNAL" vers l'onglet "SORTIES_CS" dès que le mot "CS OUT" a été sélectionné dans liste déroulante de la colonne statut et jusqu'à la on est bon.

Ce qu'il me faut maintenant c'est un bouton dans l'onglet "JOURNAL" qui me permet de supprimer toutes les lignes où le mot "CS OUT" a été sélectionné. Pas qu'il s'efface à l'instant T mais qu'une fois que j'aurais fini de renseigner toutes les lignes, je les effacent avec le bouton d'un coup!

Votre solution est pas mal! Mais je souhaiterais de cette manière si possible.

Cordialement

Bonjour le fil, bonjour le forum,

@Iliyes : Bonjour, tout va bien merci ! Sauf ces p... de pilules bleues qui apparemment me rendent aussi invisible aux yeux de certains...

Re

Je ne sais pas si c'est la bonne solution ( j'ai gardé la copie de la ligne sur la feuille 2

6tableau-cs-ok.zip (400.94 Ko)

a vous relire

Merci ThauThème, ton codage marche de tonnerre !!! Merci à iliyas aussi =)

Cordialement

Bonjour le fil, Bonjour le forum,

@Iliyes :

Ton code ne fonctionne pas (met CS OUT sur les 20 premières lignes et lance le. Il en reste !...). Quand on veut supprimer des lignes il faut faire une boucle inversée de la dernière ligne à la première en remontant :

Sub EffaceCSOUT()
Dim i As Integer
Dim DerLig As Long

DerLig = Range("B" & Rows.Count).End(xlUp).Row + 1
For i = DerLig To 8 Step -1
    If Range("I" & i).Text = "CS OUT" Then
        Range("I" & i).EntireRow.Delete 'ou Rows(i).Delete
    End If
Next i
End Sub

Re ThauThème

merci beaucoup pour ce correctif et plus CETTE MAGNIFIQUE INFORMATION

j'avais fait un test pour 4 ou 5 case en meme temps!!! ca a donné ces fruits

mais effectivement à 20 et plus... ca ne fonctionne pas.

je vais commencer à penser a l'envers

merciiiiiiiiiiiiiiii

Rechercher des sujets similaires à "interference macro"