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

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    octobre 2007
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : octobre 2007
    Messages : 33
    Points : 28
    Points
    28

    Par défaut Effacer le contenu de certaines cellules aléatoires

    Bonjour,
    je cherche à faire une macro (bouton RAZ) pour effacer le contenu de certaines cellules (colorées en jaune) dans l'exemple
    la première cellule étant en AB25
    on continue par la suite sur la ligne 25 jusqu'à la dernière colonne qui est aléatoire et en faisant un step de 3 colonne
    on continue après sur la colonne AB jusqu'à la dernière ligne aléatoire et en faisant un step de 2 lignes
    merci de votre aide
    Fichiers attachés Fichiers attachés

  2. #2
    Expert éminent

    Homme Profil pro
    Développeur .NET
    Inscrit en
    janvier 2012
    Messages
    4 854
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : janvier 2012
    Messages : 4 854
    Points : 9 967
    Points
    9 967
    Billets dans le blog
    33

    Par défaut

    Presque personne n'ouvre les fichiers imposés avec la première question.

    Et il y en a encore moins qui ouvrent les fichiers de macros. Et ce refus est pleinement justifié
    À ma connaissance, le seul personnage qui a été diagnostiqué comme étant allergique au mot effort. c'est Gaston Lagaffe.

    Ô Saint Excel, Grand Dieu de l'Inutile.

    Excel n'a jamais été, n'est pas et ne sera jamais un SGBD, c'est pour cela que Excel s'appelle Excel et ne s'appelle pas Access junior.

  3. #3
    Membre émérite
    Homme Profil pro
    Electrotechnicien
    Inscrit en
    juillet 2016
    Messages
    1 258
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Electrotechnicien

    Informations forums :
    Inscription : juillet 2016
    Messages : 1 258
    Points : 2 251
    Points
    2 251

    Par défaut

    Bonjour,

    Essayez ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    Sub Effacer()
        Dim Lig_Deb As Long, DerLig As Long, Col As Long, l As Long
        Application.ScreenUpdating = False
        Lig_Deb = 25
        DerLig = [A1000].End(xlUp).Row
        For l = Lig_Deb To DerLig Step 2 'passe les lignes en revue, avec incrémentation des lignes par pas de 2
            Col = 28 'commence à la colonne AB 
            Do While Cells(l, Col).Interior.ColorIndex = 6 'tant que la cellule est avec un fond Jaune
                Cells(l, Col).ClearContents 'effacement contenu cellule
                Col = Col + 3 'incrémentation des colonnes par pas de 3
            Loop 'cellule suivante
        Next l 'Ligne suivante
    End Sub
    Cdlt

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    octobre 2007
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : octobre 2007
    Messages : 33
    Points : 28
    Points
    28

    Par défaut

    Bonjour Arturo83,
    merci beaucoup pour l'idée
    la couleur jaune des cellules était seulement pour montrer les cellules que je voulais considérer
    j'ai modifié un peu ton code pour mieux répondre à mon besoin
    et voici le résultat
    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
     
    Sub RaZ()
     
        DerLig As Long, DerCol As Long, Col As Long, Lig As Long
     
        Application.ScreenUpdating = False
     
        DerLig = Cells(Rows.Count, "B").End(xlUp).Row
        DerCol = Cells(25, Cells.Columns.Count).End(xlToLeft).Column
     
        For Lig = 25 To DerLig Step 2 'passe les lignes en revue, avec incrémentation des lignes par pas de 2
            Col = 28 'commence à la colonne AB
            Do While Col <= DerCol 'tant que la dernière colonne n'est pas atteinte
                Cells(Lig, Col).ClearContents 'effacement contenu cellule
                Col = Col + 3 'incrémentation des colonnes par pas de 3
            Loop 'cellule suivante
        Next Lig 'Ligne suivante
     
        Application.ScreenUpdating = True
     
    End Sub

  5. #5
    Membre émérite
    Homme Profil pro
    Electrotechnicien
    Inscrit en
    juillet 2016
    Messages
    1 258
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Electrotechnicien

    Informations forums :
    Inscription : juillet 2016
    Messages : 1 258
    Points : 2 251
    Points
    2 251

    Par défaut

    Bonjour,

    Votre code doit générer un message d'erreur, il manque "Dim" dans la déclaration des variables.
    Si vous pouvez effectuer les recherches par colonne suivant le remplissage des cellules et non sur la couleur du fond, vous pouvez simplifier comme ceci: La recherche de la dernière colonne est recalculée pour chaque ligne testée, ce qui augmente aussi la vitesse d'exécution vu que la recherche par ligne s'arrête sur la dernière colonne trouvée de chaque ligne et qui n'est pas forcément la même partout (il est inutile de tester 100 colonnes si la dernière colonne de la ligne testée s'arrête à 30).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub RaZ()
        Dim DerLig As Long, DerCol As Long, Col As Long, Lig As Long
        Application.ScreenUpdating = False
        DerLig = Cells(Rows.Count, "B").End(xlUp).Row
     
        For Lig = 25 To DerLig Step 2 'passe les lignes en revue, avec incrémentation des lignes par pas de 2
            DerCol = Cells(Lig, Cells.Columns.Count).End(xlToLeft).Column
            For Col = 28 To DerCol Step 3
                Cells(Lig, Col).ClearContents 'effacement contenu cellule
            Next Col 'colonne suivante
        Next Lig 'Ligne suivante
    End Sub
    Cdlt

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 12/10/2018, 10h53
  2. Effacer le contenu de certaines cellules
    Par Alban 56 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 25/05/2012, 14h35
  3. Effacement du contenu d'une cellule sur Change ?
    Par marot_r dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 15/11/2007, 21h14
  4. Recopier le contenu de certaines cellules
    Par Look dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 06/05/2007, 22h02
  5. Ma Macro copie le contenu de certaines cellules mais pas d'autres
    Par zococo dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 25/01/2007, 11h53

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