IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

comment supprimer plusieurs lignes avec des conditions ?


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Juin 2018
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Maroc

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Juin 2018
    Messages : 45
    Par défaut comment supprimer plusieurs lignes avec des conditions ?
    Bonjour Tout le monde,

    J'ai le Texte en bas qui se répète plus de 2000 fois dans une feuille Excel et je veux supprimer certaines lignes contenant la valeur '0: Object' si je trouve le contenu suivant par exemple:

    setTimeout(() => {select3.value = '0: Object';select3.dispatchEvent(new Event("change"));}, 6E2);

    je dois le supprimer et supprimer la ligne précédente select3.removeAttribute('disabled');

    la même chose pour:

    setTimeout(() => {select4.value = '0: Object';select4.dispatchEvent(new Event("change"));}, 1E3);

    je dois le supprimer et supprimer la ligne précédente select4.removeAttribute('disabled');

    et

    setTimeout(() => {select5.value = '0: Object';select5.dispatchEvent(new Event("change"));}, 2E3);

    je dois le supprimer et supprimer la ligne précédente select5.removeAttribute('disabled');

    et

    setTimeout(() => {select6.value = '0: Object';select6.dispatchEvent(new Event("change"));}, 3E3);

    je dois le supprimer et supprimer la ligne précédente select6.removeAttribute('disabled');


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    //code : A1
    	A1: function () { 
    var element = document.getElementById('categorisation_1');
    var element = document.getElementById('categorisation_2');
    var element = document.getElementById('categorisation_3');
    var element = document.getElementById('categorisation_4');
    var element = document.getElementById('categorisation_5');
    var element = document.getElementById('categorisation_6');
    var element = document.getElementById('champContactClient');
    var element = document.getElementById(' champVoie');
    var element = document.getElementById('champGravite');
    var element = document.getElementsByClassName("btn btn-file-upload")[0];
    var element = document.getElementById('champCommentaire');
    if (element != null && element.value == '') {
    const select1 = document.getElementById('categorisation_1');
    const select2 = document.getElementById('categorisation_2');
    const select3 = document.getElementById('categorisation_3');
    const select4 = document.getElementById('categorisation_4');
    const select5 = document.getElementById('categorisation_5');
    const select6 = document.getElementById('categorisation_6');
    const select7 = document.getElementById('champContactClient');
    const select8 = document.getElementById('champVoie');
    const select9 = document.getElementById('champGravite');
    const select10 = document.getElementById('champCommentaire');
    select1.addEventListener('change', () => {
    select2.removeAttribute('disabled');
    select3.removeAttribute('disabled');
    select4.removeAttribute('disabled');
    select5.removeAttribute('disabled');
    select6.removeAttribute('disabled');
    select7.removeAttribute('disabled');
    select8.removeAttribute('disabled');
    select9.removeAttribute('disabled');
    select10.removeAttribute('disabled');
    });
    setTimeout(() => {select1.value = '1: Object';select1.dispatchEvent(new Event("change"));}, 1E1);
    setTimeout(() => {select2.value = '1: Object';select2.dispatchEvent(new Event("change"));}, 3E2);
    setTimeout(() => {select3.value = '0: Object';select3.dispatchEvent(new Event("change"));}, 6E2);
    setTimeout(() => {select4.value = '0: Object';select4.dispatchEvent(new Event("change"));}, 1E3);
    setTimeout(() => {select5.value = '0: Object';select5.dispatchEvent(new Event("change"));}, 2E3);
    setTimeout(() => {select6.value = '0: Object';select6.dispatchEvent(new Event("change"));}, 3E3);
    setTimeout(() => {select7.selectedIndex = 1;select7.dispatchEvent(new Event("change"));}, 1);
    setTimeout(() => {select8.value = '0: Object';select8.dispatchEvent(new Event("change"));}, 1);
    setTimeout(() => {select9.value = '1: Object';select9.dispatchEvent(new Event("change"));}, 1);
    setTimeout(() => {select10.value += "";select10.dispatchEvent(new Event("change"));}, 1);
    // document.getElementById('champCommentaire').value += "NF ";
    }
    },
    ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 
    //code : A2
    	A2: function () { 
    var element = document.getElementById('categorisation_1');
    var element = document.getElementById('categorisation_2');
    var element = document.getElementById('categorisation_3');
    var element = document.getElementById('categorisation_4');
    var element = document.getElementById('categorisation_5');
    var element = document.getElementById('categorisation_6');
    var element = document.getElementById('champContactClient');
    var element = document.getElementById(' champVoie');
    var element = document.getElementById('champGravite');
    var element = document.getElementsByClassName("btn btn-file-upload")[0];
    var element = document.getElementById('champCommentaire');
    if (element != null && element.value == '') {
    const select1 = document.getElementById('categorisation_1');
    const select2 = document.getElementById('categorisation_2');
    const select3 = document.getElementById('categorisation_3');
    const select4 = document.getElementById('categorisation_4');
    const select5 = document.getElementById('categorisation_5');
    const select6 = document.getElementById('categorisation_6');
    const select7 = document.getElementById('champContactClient');
    const select8 = document.getElementById('champVoie');
    const select9 = document.getElementById('champGravite');
    const select10 = document.getElementById('champCommentaire');
    select1.addEventListener('change', () => {
    select2.removeAttribute('disabled');
    select3.removeAttribute('disabled');
    select4.removeAttribute('disabled');
    select5.removeAttribute('disabled');
    select6.removeAttribute('disabled');
    select7.removeAttribute('disabled');
    select8.removeAttribute('disabled');
    select9.removeAttribute('disabled');
    select10.removeAttribute('disabled');
    });
    setTimeout(() => {select1.value = '1: Object';select1.dispatchEvent(new Event("change"));}, 1E1);
    setTimeout(() => {select2.value = '2: Object';select2.dispatchEvent(new Event("change"));}, 3E2);
    setTimeout(() => {select3.value = '1: Object';select3.dispatchEvent(new Event("change"));}, 6E2);
    setTimeout(() => {select4.value = '1: Object';select4.dispatchEvent(new Event("change"));}, 1E3);
    setTimeout(() => {select5.value = '0: Object';select5.dispatchEvent(new Event("change"));}, 2E3);
    setTimeout(() => {select6.value = '0: Object';select6.dispatchEvent(new Event("change"));}, 3E3);
    setTimeout(() => {select7.selectedIndex = 1;select7.dispatchEvent(new Event("change"));}, 1);
    setTimeout(() => {select8.value = '0: Object';select8.dispatchEvent(new Event("change"));}, 1);
    setTimeout(() => {select9.value = '1: Object';select9.dispatchEvent(new Event("change"));}, 1);
    setTimeout(() => {select10.value += "";select10.dispatchEvent(new Event("change"));}, 1);
    // document.getElementById('champCommentaire').value += "NF ";
    }
    },
    /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    Merci d'avance.

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 511
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 511
    Par défaut
    Heu ...

    C'est du JavaScript que tu nous présente.
    Rien à voir avec Excel.

  3. #3
    Membre averti
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Juin 2018
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Maroc

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Juin 2018
    Messages : 45
    Par défaut
    Citation Envoyé par deedolith Voir le message
    Heu ...

    C'est du JavaScript que tu nous présente.
    Rien à voir avec Excel.
    Oui mais je travail sur Excel et je cherche une solution VBA à mon problème

  4. #4
    Membre émérite
    Homme Profil pro
    Retraité
    Inscrit en
    Octobre 2022
    Messages
    685
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Octobre 2022
    Messages : 685
    Par défaut
    Bonjour,

    trouver les lignes avec "0: Object" ne pose pas de pb particulier. Tu peux mettre par exemple, si ton texte est en colonne A, en colonne B la formule :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SI(NB.SI(A1;"*0: Object*")=0;"";"X")
    Si tu y tiens absolument on pourra faire la même chose en VBA...

    Après à toi de préciser la règle qui permet de trouver la ligne "au-dessus". Dans ton exemple c'est 12 lignes au dessus. Si c'est un invariant du fichier, c'est bon. Sinon il faut extraire le "selectn" (par exemple entre le "0: object';" et le "." qui suit, puis remonter jusqu'à le trouver dans une ligne (en espérant qu'il n'y a pas de manquant sinon on va monter trop haut...)

    Avec la règle simple "12 lignes au dessus" tu peux mettre dans la colonne 3 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SI(OU(B1="X";B12="X");"X";LIGNE(B1))
    Puis trier sur la colonne 3 et les lignes à supprimer sont rejetées à la fin.

    On peut aussi voir à mettre ça en VBA suivant l'usage que tu veux en faire, précise d'abord la règle du "au-dessus"...

  5. #5
    Membre averti
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Juin 2018
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Maroc

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Juin 2018
    Messages : 45
    Par défaut
    MERCI @Tête de chat

    c'est super ça marche bien je veux faire l'exemple des 12 lignes au dessus par ce que c'est un invariant fichier et j'aimerai aussi si possible ne pas supprimer la ligne qui est en bas :
    "setTimeout(() => {select8.value = '0: Object';select8.dispatchEvent(new Event("change"));}, 1);"
    Si c'est possible en Vba et merci beaucoup.

  6. #6
    Membre averti
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Juin 2018
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Maroc

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Juin 2018
    Messages : 45
    Par défaut
    Merci Beaucoup à toi @Tête de chat

    Enfin, j'ai réussi à résoudre mon problème avec les deux macros suivantes malgré un peux de lenteur mais ça marche nickel

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    Sub code()
    Application.ScreenUpdating = False
    Sheets("code extension").Select
    Dim lifin As Long, plage As Range
    Range("B1").Select
        ActiveCell.FormulaR1C1 = "=IF(COUNTIF(RC[-1],""*'0: Object'*"")=0,"""",""X"")"
    lifin = Range("A" & Rows.Count).End(xlUp).Row
    Set plage = Range("B1")
    plage.AutoFill Destination:=Range("B1:B" & lifin), Type:=xlFillDefault
    Range("C1").Select
    ActiveCell.FormulaR1C1 = _
            "=IF(OR(RC[-1]=""X"",R[11]C[-1]=""X""),""X"",ROW(RC[-1]))"
    lifin = Range("A" & Rows.Count).End(xlUp).Row
    Set plage = Range("C1")
    plage.AutoFill Destination:=Range("C1:C" & lifin), Type:=xlFillDefault
    Range("C1").Select
    Dim myLastRow As Long
    Dim i As Long
    myLastRow = Cells(Rows.Count, "A").End(xlUp).Row
    For i = 1 To myLastRow
    If Cells(i, "A").Value Like "*select8.value*" Then Range(Cells(i, "B"), Cells(i, "C")).ClearContents
    Next i
    Sheets("code extension").Select
    Columns("C:C").Select
    Selection.Copy
    Range("D1").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=False
    Application.CutCopyMode = False
    'Call EntireRow
    Application.ScreenUpdating = True
    End Sub
     
    Sub EntireRow()
    Application.ScreenUpdating = False
    Sheets("code extension").Select
    'Selection.AutoFilter
    'Range("D30").Select
    Range("D1").Select
    Selection.AutoFilter
    ActiveSheet.Range("A:D").AutoFilter Field:=4, Criteria1:="X"
    Range("A30:D30").Select
    Range(Selection, Selection.End(xlDown)).Select
    Selection.ClearContents
    Selection.AutoFilter
    Range("B:B,C:C").Delete
    Range("A:A").SpecialCells(xlCellTypeBlanks).Rows.Delete
    Range("B:B").Delete
    Range("A1").Select
    Application.ScreenUpdating = True
    End Sub

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 0
    Dernier message: 29/03/2017, 15h37
  2. Comment supprimer plusieurs lignes dans un flexgrid?
    Par js8bleu dans le forum VB 6 et antérieur
    Réponses: 13
    Dernier message: 04/01/2011, 12h20
  3. Réponses: 4
    Dernier message: 16/01/2010, 19h33
  4. Supprimer plusieurs lignes avec VBA
    Par Nounours1 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 30/03/2008, 11h50
  5. Récupérer plusieurs lignes avec des procédures stockées
    Par GPZ{^_^} dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 12/03/2007, 13h16

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo