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 :

Supprimer d'une plage A les cellules d'une plage B


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut Supprimer d'une plage A les cellules d'une plage B
    Bonjour
    Je souhaite pouvoir supprimer d'une plage spécifiée de cellules pouvant être discontinues les cellules d'une autre plage pouvant elles également être discontinues.
    Et ce : quels que puissent être ou avoir été les critères (non forcément existants, d'ailleurs) de constitution de chacune de ces deux plages (sans donc chercher à les utiliser)
    Je sais bien évidemment accomplir cette opération en bouclant sur les "areas", etc ...
    Mais je cherche à éviter un tel mécanisme (assez fastidieux) et à lui substituer un mécanisme plus "direct", sans utilisation de boucles.
    Quelqu'un a-t-il déjà eu à mettre en place un tel mécanisme ?

    Je ne manquerai pas, si j'y parviens (j'ai une petite idée), de dire comment je m'y suis pris.

    EDIT : clarification : il ne s'agit pas de suppression effective, mais de la détermination de la plage résultante (sans toucher, donc, aux cellules sur la feuille, qui doivent rester intactes et dans leur état originel in fine, formules et formatage inclus)

  2. #2
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 683
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 683
    Par défaut
    Bonjour,

    malgre la clarification, j'ai toujours rien bite a ce que tu racontes =]

    Mis a part les 2 plages discontinues, je ne comprends pas ce que tu cherches a faire.

    Tu as une plage A et une plage B, OK, mais qu'est-ce qui est sense determiner quoi ??
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Migrer les applications VBA Access et VBA Excel vers la Power Platform
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel (3e édition)
    Prise en main de Dynamics 365 Business Central

    Coffrets disponibles de mes ouvrages : https://www.editions-eni.fr/jean-philippe-andre
    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  3. #3
    Membre Expert
    Homme Profil pro
    PAO
    Inscrit en
    Octobre 2014
    Messages
    2 576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : PAO
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Octobre 2014
    Messages : 2 576
    Par défaut
    Bonjour,
    Je pense avoir compris et visualiser ce que tu veux dire, mais c'est qd même pas évident de comprendre; il faut faire un gros effort.
    et comme l'exige les règles du forum sur la clarté de la demande … (t'inquiète je plaisante )
    Par contre un exemple serait un plus afin de mieux appréhender le problème (en tout cas pour ma part)
    Cordialement
    Ryu

    La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. – Albert Einstein

    Pensez à la Balise [ CODE][/CODE ] - à utiliser via le bouton # => Exemple

    Une fois votre problème solutionné pensez à mettre :resolu: en n'oubliant pas d'indiquer qu'elle est la solution finale choisie ;)

  4. #4
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Bonjour Jean-Philippe André
    Tu as une plage A et une plage B, OK, mais qu'est-ce qui est sense determiner quoi
    Tout "simplement" (si tu veux) ce qui reste de la plage A lorsqu'elle n'inclut plus (lorsqu'on lui "soustraie" les cellules de la plage B qu'elle peut contenir )
    Exemple très simplifié avec des cellules continues (pour que tu comprennes de quoi il s'agit)
    Addresse de la plage A : $A$1:$A$10
    Addresse de la plage B :$A$3
    Addresse de la plage résultante : $A$1:$A$2,$A$4:$A$10
    Voilà. Mais cet exemple est un exemple volontairement simple, juste pour que tu voies de quoi il s'agit.
    C'est que que je veux mettre en place (sans boucles) , mais pour des plages bien plus complexes (discontinues).

  5. #5
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 683
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 683
    Par défaut
    OK, dans l'idee tu feras une double boucle for each en principe, mais la difficulte reste que le for each se fait dans un ordre croissant et du coup la suppression ne peut se faire dans la boucle, mais en passant par un collection d'adresse que tu supprimeras apres la double boucle.

    Sur le papier, ca donnerait un truc comme ca
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Dim Col as New Collection
    For each c in Range("PlageA")
        For Each d in range("PlageB")
    If c.Value =d.Value Then Col.Add c.Address
    Next
    Next
    For i = Col.Count To 1 Step -1
    Range(Col.item(i)).Delete
    next i
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Migrer les applications VBA Access et VBA Excel vers la Power Platform
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel (3e édition)
    Prise en main de Dynamics 365 Business Central

    Coffrets disponibles de mes ouvrages : https://www.editions-eni.fr/jean-philippe-andre
    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  6. #6
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    OK, dans l'idee tu feras une double boucle
    Euh ...
    Avec des boucles, je sais faire (et l'ai dit) ..
    C'est sans aucune boucle, que je souhaite y parvenir !
    Pour mémoire (dans mon tout premier message) :
    Je sais bien évidemment accomplir cette opération en bouclant sur les "areas", etc ...
    Mais je cherche à éviter un tel mécanisme (assez fastidieux) et à lui substituer un mécanisme plus "direct", sans utilisation de boucles.


    EDIT : et il ne s'agit pas du tout de comparer des valeurs, ni de supprimer des cellules. Il s'agit de déterminer la plage résultante, sans rien modifier des cellules.

  7. #7
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 683
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 683
    Par défaut
    Hum, tu penserais a quoi exactement du coup ?
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Migrer les applications VBA Access et VBA Excel vers la Power Platform
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel (3e édition)
    Prise en main de Dynamics 365 Business Central

    Coffrets disponibles de mes ouvrages : https://www.editions-eni.fr/jean-philippe-andre
    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

Discussions similaires

  1. Réponses: 1
    Dernier message: 06/11/2015, 16h50
  2. Réponses: 15
    Dernier message: 17/03/2015, 23h42
  3. Réponses: 2
    Dernier message: 13/04/2012, 21h18
  4. Réponses: 4
    Dernier message: 22/05/2007, 15h42
  5. [VBA-E] supprimer le contenu de toutes les cellules d'une feuille
    Par BipBip2 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 13/08/2004, 16h13

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