'Dessellectionner' en VBA un bout de zone active ?

P

Paul

Guest
Hello à tous,

J'ai parcouru les posts précédants mais je cherche encore une solution en VBA pour 'déssellectionner' une cellule dans un bloc déjà actif..

En gros, j'ai un 'RANGE(...).select' et je souhaiterais juste virer une cellule de cette sellection avant d'effacer en VBA la zone sélectionnée...

Je cherche donc à éviter de faire plein de 'range.select' puis de 'clear' autour de la seule cellule à ne pas effacer dans un bloc déjà sellectionné

Avez-vous une piste en Excel 2002 ?

Merci par avance

Polo
 
P

Pierrot93

Guest
Bonjour Polo

Si tu veux effacer des cellules dans differentes plages tu peux essayer la ligne de code ci dessous. (multi selection)

Range('X4:AB4,V4:V18,Y5,AA5,G7:J7,N7:T7').ClearContents

Bon week end
 
P

Paul

Guest
Bonjour Pierro93 et le Forum

Cette réponse rapide et sympatique ne déssellectionne pas une cellule dans une zone déjà active..

Le code ci-dessus efface des zones à écrir explicitement dans l'instruction alors que je cherche à définir la seule cellule à ne pas effacer dans une zone...

En fait, j'ai déjà une LONGUE macro qui selectionne une zone à traiter et je cherche donc à exclure une cellule dans une zone déjà active...

En bref, existe-t-il une instrcuction qui désselectionne une cellule ?

Merci par avance à tous

Paul
 

pierrejean

XLDnaute Barbatruc
bonjour Paul

je n'ais pas la reponse exacte à ta question mais je te propose un palliatif:
enregistrer ta cellule dans un variable
effacer toute la selection
rendre a la cellule sa valeur d'origine

soit 2 lignes de code en sus
genre:

mavar=range(aconserver)
selection.clearcontents
range(aconserver)=mavar
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Bonjour Paul, Pierrot, PierreJean, le Forum

Perso, je m'orienterai vers une solution comme celle préconisée par Pierrot.

La solution palliative de PierreJean peut-être aussi une bonne alternative.

En fait tout dépend un peu de ton Code complet et de quelle manière tu vas déterminer qu'elle est la cellule à exclure de la zone ?

Par définition la 'Dé-selection' d'une cellule n'existe pas, on peut simplement 're-sélectionner' autre chose, ce qui anihilera la sélection précédente. (logique mon cher Watson ! lol)

Pour ma part j'ai la très nette impression que tu te complique la vie car tu ne gère pas la plage que tu dois effacer de manière dynamique.

Voici différentes propositions qui pourraient éventuellement convenir, mais c'est un peu à l'aveuglette...


Sub Proposition1_ActiveCellule()
Dim SelectRange As Range, Cell As Range

Set SelectRange = Selection

For Each Cell In SelectRange
   
If Not Cell.Address = ActiveCell.Address Then
        Cell.ClearContents
   
End If toto10
Next


End Sub




Sub Proposition2_PlageDeterminee()
Dim SelectRange As Range, Cell As Range
Dim ExclusionCell As Range

Set SelectRange = Range('A1:Z50')
Set ExclusionCell = Range('B10')


For Each Cell In SelectRange
   
If Not Cell.Address = ExclusionCell.Address Then
        Cell.ClearContents
   
End If
Next

End Sub




Sub Proposition3_UnionRangeSelection()
Dim SelectRange As Range
Dim ExclusionCell As Range

Set SelectRange = Union(Range('A1:A50'), Range('B1:B9'), Range('B11:B50'), Range('C1:Z50'))

SelectRange.Select
Selection.ClearContents
'Que je préferai écrire directement Sans Selection :
'SelectRange.ClearContents

End Sub





Sub Proposition4_ExclusionCellRowColumn()
Dim SelectRange As Range
Dim ExclusionCell As Range
Dim CellRow As Integer, CellColumn As Byte

CellRow = 10
CellColumn = 2

Set SelectRange = Range('A1:Z50')

For Each Cell In SelectRange
   
If Not Cell.Row = CellRow Or Not Cell.Column = CellColumn Then
        Cell.ClearContents
   
End If
Next

End Sub


Bon Week End
[ol]@+Thierry[/ol]
 

Discussions similaires

Statistiques des forums

Discussions
312 601
Messages
2 090 150
Membres
104 411
dernier inscrit
saidokhan