Soustraction de plages

  • Initiateur de la discussion Initiateur de la discussion Troudz
  • 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 !

Troudz

XLDnaute Occasionnel
Bonsoir,

Voilà j'ai deux plages nommées GrandePlage et PetitePlage.
PetitePlage est intégralement inclues dans GrandePlage.
Je voudrais arriver à effacer l'intégralité des cellules de GrandePlage qui ne serait pas comprises dans PetitePlage.

J'ai bien essayé de faire une boucle sur chaque cellule de GrandePlage et vérifier (avec intersect) si elles sont comprises dans PetitePlage ou pas mais vu qu'à terme, ces plages devrait contenir un grand nombre de cellules, ma boucle va rapidement devenir très longue à exécuter.

N'y aurait il pas un moyen de définir une nouvelle plage correspondant à GrandePlage - PetitePlage en une seule opération ?

Merci pour votre aide et bonne nuit !
 
Re : Soustraction de plages

BonsoirTroudz,

Sans répondre à votre question, une méthode (relativement rapide) ne bouclant que sur les cellules de la petite plage contenant une constante ou une formule.

Code:
Sub EffGdePlg()
Dim Petite, xCell As Range, i
Dim Clefs, Formules
    Application.ScreenUpdating = False
    Set Petite = CreateObject("Scripting.dictionary")
    For Each xCell In Range("petitePlage").SpecialCells(xlCellTypeConstants, 23)
        If Not Petite.Exists(xCell.Address) Then Petite.Add xCell.Address, xCell.Formula
    Next xCell
    For Each xCell In Range("petitePlage").SpecialCells(xlCellTypeFormulas, 23)
        If Not Petite.Exists(xCell.Address) Then Petite.Add xCell.Address, xCell.Formula
    Next xCell
    Range("grandePlage").ClearContents
    Clefs = Petite.keys
    Formules = Petite.items
    With Range("petiteplage").Parent
        For i = 0 To Petite.Count - 1
            .Range(Clefs(i)).Formula = Formules(i)
        Next i
    End With
    Application.ScreenUpdating = True
End Sub

Edit: V2 pour gérer les formules de la petite plage dont le résultat est une valeur d'erreur.
 
Dernière édition:
Re : Soustraction de plages

Bonsoir et merci mapomme, ça fait plaisir de trouver encore de l'aide à cette heure tardive.
Malheureusement j'ai peur que ta solution ne soit pas adaptable à mon cas.

En effet, au départ j'ai des données écrites dans la plage GrandePlage. Mon but est que, quand l'utilisateur défini PetitePlage, toutes les données contenues dans GrandePlage soient supprimées SAUF si elles sont dans PetitePlage.

Je ne pense donc pas que je puisse faire ça en bouclant sur PetitePlage.

Je suis étonné qu'il n'existe une opération consistant à faire
Plage_A_Effacer = GrandePlage - PetitePlage
 
- 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

Réponses
22
Affichages
5 K
J
Réponses
57
Affichages
6 K
A
Réponses
9
Affichages
1 K
ArielD27
A
B
Réponses
4
Affichages
1 K
bertrandc
B
Retour