Designation d'une cellule sur une colonne

bonjour

comment ecire en vba que si l'on veut effacer par exemple la cellule A1 d'une feuille de calcul alors cela efface aussi la cellule voisine B1

merci

Bonjour,

Sub Efface()
    Range("a1").Resize(1, 2).ClearContents
End Sub

Amicalement

Claude

merci pour cette réponse rapide tout en voulant comprendre quand meme un peu

la notion Resize(1, 2) je suppose designe la meme ligne en colonne 2 ? sans entre sur

merci

re,

exact !

en règle générale, si tu veux de l'aide sur un bout de code,

positionne le curseur sur le mot et clique la touche F1 (aide)

Claude

merci donc si j'ai bien tout compris

si je dipose d'une cellule en B2 et que je souhaite effacer B2 puis A2 j'utiliserai resize(2,-1) ?

merci

re,

pour effacer B2:A2 (ou + exactement A2:B2)

Range("a2").Resize(2, 2).ClearContents

apparemment Resize ne prend pas de négatifs

la même chose avec Ofsset, qui elle prend les négatifs

Range(Range("b2").Offset(-1, -1), Range("b2")).ClearContents

c'est en essayant, tâtonnant que tu progresseras

et touche F1

Claude

Bonjour,

Y'en a qui ont essayé!

En fait, chez moi, resize n'accepte pas de paramètres nuls ou négatifs.

On peut le faire en combinant OFFSET et RESIZE.

Range("B2").offset(0, -1) désigne la cellule à gauche de B2 soit A2 (on recule d'une colonne)

Range("B2").offset(0, -1).resize(1,2) désigne donc la zone "A2" étendue à 1 ligne et à 2 colonnes (donc A2:B2)

soit: Range("B2").offset(0, -1).resize(1,2).clearcontents

On aurait pu aussi écrire : Range("B2").offset(, -1).resize(,2) (les paramètres manquants sont ceux de la zone sur laquelle est appliqué d'abord Offset (zone Range("B2") ) puis sur laquelle est appliqué Resize (zone Range("B2").offset(0, -1))

merci pour l'ensemble vos réponses je vais mediter dessus

Cordialement , Rocket


une derniere question supplementaire relatif à ce post

pour adapter vos conseils à mon travail

est il exact d'ecrire

Sub SUPFRET()
    Dim Cell As Range
        For Each Cell In Range("h2:h" & [h65000].End(xlUp).Row)
            If Cell = Sheets("Feuil2").Range("A1") Then Range(Range("cell").Offset(-1, -1), Range("cell")).ClearContents.ClearContents
        Next Cell

    End Sub

en vous remerciant

re,

Comme déjà dit + haut, il faut que tu teste

ici, çà donnerait

Sub SUPFRET()
    Dim Cell As Range
        For Each Cell In Range("h2:h" & [h65000].End(xlUp).Row)
            If Cell = Sheets("Feuil2").Range("A1") Then
                Range(Cell.Offset(-1, -1), Cell).ClearContents
            End If
        Next Cell
End Sub

Claude

Merci infiniment pour cette réponse et pour le temps accordé

Cordialement !

bonsoir

juste une parenthèse pour faire une remarque , le post étant résolu , l'instruction :

& [h65000].End(xlUp).Row)

ne sert à rien si ce n'est effacer des lignes non voulues au dessus de celles que l'on souhaite effacer

j'ai remplacé l'instruction

Range("h2:h" & [h65000].End(xlUp).Row)

par

Range("h2:h100") 

et du coup tout va mieux !

merci pour vos contributions

Rechercher des sujets similaires à "designation colonne"