Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Amputer une plage

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 !

Magic_Doctor

XLDnaute Barbatruc
Supporter XLD
Bonjour,

J'ai une plage de cellules nommée "zaza".
Supposons que je veuille lui retirer 3 cellules : "F6", "L4" et "B3". Comment s'y prendrait-on ?
En somme, [zaza] = [zaza] - ([F6], [L4], [B3])
 
Re : Amputer une plage

Bonjour Magic_Doctor, le forum,

Si comme je le suppose la plage "zaza" est une plage rectangulaire :

Code:
Sub ExclureCellules()
'la plage nommée zaza doit être une plage rectangulaire
Dim exclu As Range, tablo, Maplage As Range
Application.ScreenUpdating = False
With [zaza]
  Set exclu = .Parent.[F6,L4,B3] 'à adapter
  Set exclu = Intersect(exclu, .Cells)
  tablo = .Formula
  .Value = 1
  If Not exclu Is Nothing Then exclu = "a"
  On Error Resume Next 'au cas où...
  Set Maplage = .SpecialCells(xlCellTypeConstants, 1)
  .Formula = tablo
End With
Application.Goto Maplage
End Sub
Sinon il faudra étudier les zones (Areas) de "zaza" une par une, de la même manière.

A+
 
Dernière édition:
Re : Amputer une plage

Bonjour Magic_Doctor

Salut Gerard

A tester:

Code:
Sub test()
Dim zaza_sans As Range
For Each cel In Range("zaza")
  If cel.Address <> "$F$6" Then
    If cel.Address <> "$L$14" Then
      If cel.Address <> "$B$3" Then
         If Not zaza_sans Is Nothing Then
            Set zaza_sans = Application.Union(zaza_sans, cel)
         Else
            Set zaza_sans = cel
         End If
       End If
    End If
  End If
Next
zaza_sans.Select
End Sub
 
Re : Amputer une plage

Re

Autre version

Code:
Function plage_sans(plage, cellules) As Range
For Each cel In plage
  If InStr(cellules, cel.Address(0, 0) & ",") = 0 Then
    If Not plage_sans Is Nothing Then
       Set plage_sans = Application.Union(plage_sans, cel)
    Else
       Set plage_sans = cel
    End If
  End If
Next
End Function
Sub essai()
plage_sans(Range("zaza"), "F6,L14,B3,").Select
End Sub

NB: ne pas oublier la virgule finale dans la dénomination des cellules a exclure
 
Dernière édition:
- 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
1 K
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…