Code VBA dur pour moi, mais surement simple pour vous :)

  • Initiateur de la discussion Initiateur de la discussion Pygouv
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Pygouv

XLDnaute Occasionnel
Bonjour,
Je souhaiterai un code appliqué à un bouton qui me permetterait de supprimer les lignes SI les cellules de la colonne A comporte un "N" ET que les cellules de la colonne "E" comporte "Inventory Total Gross"

J'ai en effet des doublons que je souhaiterai supprimer. Il faut que les lignes comportant ces 2 notions dans ces 2 colonnes disparaissent pour régler mon problème... si vous avez un code je suis preneur 🙂

Merci de votre aide 🙂
 
Dernière édition:
Re : Code VBA dur pour moi, mais surement simple pour vous 🙂

Bonjour,

A adapter.

Code:
    Dim WS_Doublon as Worksheet
    Set WS_Doublon = Worksheets("NOMDETAFEUILLE")

    Dim fin_Doublon as long
    fin_Doublon = WS_Doublon.Range("A65536").end(xlup).row

    Dim pcs_Doublon as long
    Dim val_colA as string
    Dim val_colE as string

    'On parcourt le tableau à l'inverse pour ne pas être géné par la suppression des lignes
    For pcs_Doublon = fin_Doublon to 1 Step - 1 '(le 1 est à remplacer par ta ligne de début)
        val_ColA = WS_Doublon.cells(pcs_Doublon, 1).value
        val_ColE = WS_Doublon.Cells(pcs_Doublon, 5).Value

        'On teste les conditions
        'On vérifie si le texte de la cellule en A CONTIENT "N", et si le texte de la cellule en E CONTIENT "Inventory Total Gross"
        '/!\ Le texte testé peut être plus grand que le critère de recherche
        If (val_ColA LIKE "*N*") And (val_ColE LIKE "*Inventory Total Gross*") Then
                WS_Doublon.Rows(cstr(pcs_Doublon) & ":" & cstr(pcs_Doublon)).delete shift:=xlup
        End if
    Next pcs_Doublon

Cordialement,
Orodreth
 
Re : Code VBA dur pour moi, mais surement simple pour vous 🙂

Bonjour,

la même chose en plus rapide, si tu as de grandes listes :

VB:
Sub à_tester()
Dim Z As Range
  Set Z = Range("IV1:IV" & Range("A65000").End(xlup).Row)
  Z.FormulaR1C1 = "=IF(ISERROR(FIND(""N"",RC1)*FIND(""Inventory Total Gross"",RC5)),"""",1"
  Z.Value = Z.Value
  On Error Resume Next
  Z.SpecialCells(xlCellTypeConstants, 1).EntireRow.Delete
  Z.clear
End Sub

à lancer depuis la feuille où sont les données.
 
Dernière édition:
Re : Code VBA dur pour moi, mais surement simple pour vous 🙂

Re le fil, bonjour Softmama,

A priori, j'ai compris ton code, et si tu dis qu'il est plus rapide que le mien, je te crois sur parole (d'ailleurs, j'ai quelques idées du pourquoi 🙂 )

Juste une question:
Code:
z.value = z.value
???? A une valeur, tu affectes la même valeur. Pourquoi ? 😕

Cordialement,
 
Re : Code VBA dur pour moi, mais surement simple pour vous 🙂

Bonjour,

Merci de ta réponse, je ne suis pas en lumière en VBA j'ai essayé de l'adapter : j'ai mis ligne 7 car mon tableau commence sur cette ligne, j'ai affecté mon bouton à cette macri et rien ne se passe quand je clique dessus...

Une idée?

Code utilisé :

Sub Bouton3_Clic()

Dim WS_Doublon As Worksheet
Set WS_Doublon = Worksheets("QlikView")

Dim fin_Doublon As Long
fin_Doublon = WS_Doublon.Range("A65536").End(xlUp).Row

Dim pcs_Doublon As Long
Dim val_colA As String
Dim val_colE As String

'On parcourt le tableau à l'inverse pour ne pas être géné par la suppression des lignes
For pcs_Doublon = fin_Doublon To 7 Step -1 '(le 1 est à remplacer par ta ligne de début)
val_colA = WS_Doublon.Cells(pcs_Doublon, 1).Value
val_colE = WS_Doublon.Cells(pcs_Doublon, 5).Value

'On teste les conditions
'On vérifie si le texte de la cellule en A CONTIENT "N", et si le texte de la cellule en E CONTIENT "Inventory Total Gross"
'/!\ Le texte testé peut être plus grand que le critère de recherche
If (val_colA Like "*N*") And (val_colE Like "*13 -- Total Gross inventory (k€)*") Then
WS_Doublon.Rows(CStr(pcs_Doublon) & ":" & CStr(pcs_Doublon)).Delete shift:=xlUp
End If
Next pcs_Doublon
End Sub
 
Re : Code VBA dur pour moi, mais surement simple pour vous 🙂

re le fil,

@Orodreth, modeste t'a donné la réponse bien vite 😛
@Pygouv, sans ton fichier , c'est pas évident de te répondre.
Une piste peut-être : *13 -- Total Gross inventory (k€)* qui remplace *Inventory Total Gross*, c'est voulu ? Attention, l'opérateur LIKE est sensible à la casse.
 
Re : Code VBA dur pour moi, mais surement simple pour vous 🙂

Oui softmama, c'est voulu je l'ai écris très vite tout à l'heure 🙂, c'est ce qui apparaît dans la colonne "E".

J'ai essayé avec le nouveau code et le soucis se situe à Z.FormulaR1C1 d'après le débogueur...

Sub à_tester()
Dim Z As Range
Set Z = Range("IV1:IV" & Range("A65000").End(xlUp).Row)
Z.FormulaR1C1 = "=IF(ISERROR(FIND(""N"",RC1)*FIND(""13 - INVENTORY -- Total Gross inventory (k€)"",RC5)),"""",1"
Z.Value = Z.Value
On Error Resume Next
Z.SpecialCells(xlCellTypeConstants, 1).EntireRow.Delete
Z.Clear
End Sub
 
Re : Code VBA dur pour moi, mais surement simple pour vous 🙂

Ben, tu as essayé comme ceci ?
VB:
Sub à_tester()
Dim Z As Range
Set Z = Range("IV1:IV" & Range("A65000").End(xlUp).Row)
Z.FormulaR1C1 = "=IF(ISERROR(FIND(""N"",RC1)*FIND(""13 - INVENTORY -- Total Gross inventory (k€)"",RC5)),"""",1)"
Z.Value = Z.Value
On Error Resume Next
Z.SpecialCells(xlCellTypeConstants, 1).EntireRow.Delete
Z.Clear
End Sub

En fermant la parenthèse à la fin de la formule juste ?
Z.FormulaR1C1 = "=IF(ISERROR(FIND(""N"",RC1)*FIND(""13 - INVENTORY -- Total Gross inventory (k€)"",RC5)),"""",1)"
 
Dernière édition:
Re : Code VBA dur pour moi, mais surement simple pour vous 🙂

C'est bon cela fonctionne avec le code d'Orodreth merci à tous 🙂

J'ai une autre question si je peux abuser de votre générosité et de votre savoir 🙂

J'aimerai copier des cellules de mon onglet "DB" vers mon "onglet 2" après avoir fait cette suppression en utilisant le même bouton. Mais je ne veux pas les copier dans le même ordre...

Pour le moment j'ai en intitulé de colonnes: Designation/Area/Plant/KPI designation/2010/Jan/Fev/Mar/May/Jun etc... jusqu'en 2013 avec en dessous de chaque moi la valeur qui correspond...

J'aimerai que ces données apparaissent avec une valeur pour chaque ligne dans mon deuxième onglet sous forme :
Area/Plant/KPI designation/ Year/ Month/Valeur du mois...

J'ai créé un fichier sans donnés confidentielles si vous le voulez en PJ!
ne me faites pas le code pour tout ca risque d'être long juste le début après j'essaierai de l'appliquer moi même!

Merci beaucoup 🙂
 

Pièces jointes

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

  • Question Question
Power Query Power Query
Réponses
26
Affichages
448
Réponses
22
Affichages
1 K
Réponses
6
Affichages
321
Réponses
7
Affichages
724
  • Question Question
Microsoft 365 Question code VBA
Réponses
2
Affichages
387
Retour