.currentregion qui pose souci

grodep

XLDnaute Occasionnel
bonjour à tous, voilà , j'ai un petit souci avec le code suivant :

Code:
set X=Range("a40").CurrentRegion
Set X = X.Offset(0, 2).Resize(X.Rows.Count, X.Columns.Count - 2)
X.ClearContents
Si cette fonction est très pratique, elle me pose souci lorsque les colonnes 3 et plus sont vides : en effet dans ce cas là, ce sont les deux premieres colonnes qui restent sélectionnées, et qui sont donc effacées...

Comment puis je y remédier sans "remplir" à la main la colonne 3 avant d'appliquer ma macro ?


merci d'avance.
 

Catrice

XLDnaute Barbatruc
Re : .currentregion qui pose souci

Bonjour,

dans ce cas il faut tester la largeur de la zone avec un :
Range("IV40").End (xlToLeft)

Il faudrait que tu donnes plus de détails sur la zone à traiter....
Y a t il d'autres colonnes à droie à conserver ?

Ton code peut etre également adapté comme ceci :
Range("a40").CurrentRegion.Offset(0, 2).ClearContents

S'il n'y a rien à droite, teste ceci :

Range("a40").CurrentRegion.Offset(0, 2).Resize(, Range("IV40").End(xlToLeft).Column).ClearContents
 
Dernière édition:

grodep

XLDnaute Occasionnel
Re : .currentregion qui pose souci

Merci pour vos éléments de réponse avec lesquels j'ai essayé d'obtenir ce que je souhaite, mais malheureusement sans réussite jusqu'à maintenant. En fait pour être plus clair, les colonnes 1 et 2 sont occupés par des valeurs que je souhaite conserver. Les colonnes 3 et plus vont rapidement être occupées par des valeurs par le biais d'une macro qui s'occupe de remplir ces colonnes.

Ma macro( et le bout de code que je vous ai fourni) fonctionne parfaitement A PARTIR du moment où ces colonnes 3 et plus sont remplies. C'est seulement lors de la 1ère utilisation que ce code ne fonctionne pas, puisque, les colonnes 3 et plus étant vides, la zone "X" séléctionnée est la zone des colonnes non vides a savoir les colonnes 1 et 2 et du coup, celles ci sont donc effacées.

Je sais bien que le plus simple serait de mettre des valeurs quelconques en colonne 3 rien qu'une fois afin de faire tourner la macro, mais bon, disons que ça n'est pas totalement satisfaisant.
 

ROGER2327

XLDnaute Barbatruc
Re : .currentregion qui pose souci

Bonjour
Code:
Sub toto()
Dim X
   Set X = Range("a40").CurrentRegion
   If Intersect(Columns(3), X) Is Nothing Then Exit Sub
   Set X = X.Offset(0, 2).Resize(X.Rows.Count, X.Columns.Count - 2)
   X.ClearContents
End Sub
peut-être ?​
ROGER2327
 

grodep

XLDnaute Occasionnel
Re : .currentregion qui pose souci

merci a toi pour cette solution, en remplaçant "then exit sub" par "then goto SUITE", cela répond parfaitement à ce que je souhaitais! C'était tout con, mais encore fallait-il y penser!!

merci à tous ceux qui ont phosphoré sur mon problème
 

Discussions similaires