Pb de sélection de cellule vba

  • Initiateur de la discussion kryssy
  • Date de début
K

kryssy

Guest
Salut, voici mon problème :
Je souhaite créer un code qui :
- si une cellule se trouve dans la plage a7 à a1500 une fois qu'elle est rempli, la cellule d'à côté renvoie le chiffre représentant le mois (de 1 à 12)
j'ai créer le code suivant :
Code

Private Sub worksheet_change(ByVal Target As Range)

Dim cel As Range, rg As Range, iset As Range
Set cel = Cells(ActiveCell.Row, ActiveCell.Column)
Set rg = Range('A7:A1500')
Set isect = Application.Intersect(cel, rg)

If Not isect Is Nothing Then
'si la cellule appartient à DateBoues'
If ActiveCell.Value = '' Then 'si elle est vide faire
ActiveCell.Offset(0, 1).Range('A1').Select
Selection.ClearContents 'effacer la formule
Else
'et si elle n'est pas vide faire
ActiveCell.Offset(0, 1).Range('A1').Select 'activer la cellule d'a coté
Selection.Formula = '=MONTH(RC[-1])' 'y mettre la formule



End If
End If
End Sub

Mon problème est que quand on efface les données ça fonctionne bien : la cellule de droite s'efface également,
mais quand j'ajoute une donnée il me fait le calcul dans la cellule ligne en deuusous colonne à droite
Merci pour vos réponses
 

porcinet82

XLDnaute Barbatruc
Salut kryssy,

Tu peux modifier ton code de la manière suivante et ca devrait fonctionner :
Code:
Private Sub Worksheet_Change(ByVal Target As Range)

If Not Intersect(Target, Range('A7:A1500')) Is Nothing Then
    If Target = '' Then
        Target.Offset(0, 1).ClearContents         'effacer la formule
    Else
        ActiveCell.Offset(-1, 1).Formula = '=MONTH(RC[-1])' 'y mettre la formule
    End If
End If
End Sub

@+
 
K

kryssy

Guest
porcinet82 écrit:
Salut kryssy,

Code:
Private Sub Worksheet_Change(ByVal Target As Range)

If Not Intersect(Target, Range('A7:A1500')) Is Nothing Then
    If Target = '' Then
        Target.Offset(0, 1).ClearContents         'effacer la formule
    Else
        ActiveCell.Offset(-1, 1).Formula = '=MONTH(RC[-1])' 'y mettre la formule
    End If
End If
End Sub

@+

Encore merci
En fait maintenant j'ai le problème suivant :
lorsqu'on met un filtre automatique sur la colonne des mois, la formule me place la réponse dans n'importe quelle autre champ.
D'autre part je ne peux effacer plusieurs cellule à la fois.
 

porcinet82

XLDnaute Barbatruc
re,

Pour ton premier problème, chez moi je n'ai pas de problème, c'est à dire que si je mets un filtre auto, et que je remplis les cellules de la colonne A ou les supprimes pas de soucis de placement.

Concernant la deuxième chose, voici un code qui devrait fonctionner :
Code:
Private Sub Worksheet_Change(ByVal Target As Range)

On Error GoTo fin
If Not Intersect(Target, Range('A7:A1500')) Is Nothing Then
    If Target = '' Then
        Target.Offset(0, 1).ClearContents         'effacer la formule
    Else
        ActiveCell.Offset(-1, 1).Formula = '=MONTH(RC[-1])' 'y mettre la formule
    End If
End If
fin:
Selection.Offset(0, 1).ClearContents
End Sub

Tiens moi au courant, et si le 1er point ne fonctionne toujours pas joint un fichier.

@+
 

kryssy

XLDnaute Nouveau
Salut et encore une fois merci à Porcinet 82.

- Pour le point 1 apparement il s'agissait d'un bug en effet j'ai enlevé et remis le filtre et maintenant ça fonctionne (j'ai pas cherché à comprendre)

- Pour le point 2 merci pour ta réponse ça fonctionne super.

A+
 

Statistiques des forums

Discussions
312 547
Messages
2 089 492
Membres
104 185
dernier inscrit
Daniel RONNA