Erreur de compilation avec target.row

zbig

XLDnaute Occasionnel
Bonjour

j'ai une erreur de compilation bug avec la sub

c'est du a la fonction target

Quelqu'un aurait il une idée.?
merci
Zbig
 

Pièces jointes

  • saut003.xlsm
    25.9 KB · Affichages: 46
  • saut003.xlsm
    25.9 KB · Affichages: 49
  • saut003.xlsm
    25.9 KB · Affichages: 47

Dranreb

XLDnaute Barbatruc
Re : Erreur de compilation avec target.row

Bonjour.
Entrez donc plutôt des FormulaR1C1, comme ça vous n'avez pas à y spécifier de ligne: c'est toujours RCquelque chose pour la ligne courante.
VB:
    With Cells(Target.Row, "O")
'       .FormulaLocal = "=SI(ET(NB($I" & Target.Row & ":$N" & Target.Row & ")=0;NBVAL($I" & Target.Row & ":$N" & Target.Row & ")<=3);"""";(MAX($I" & Target.Row & ":$N" & Target.Row & ")))"
       .FormulaR1C1 = "=IF(AND(COUNT(RC9:RC14)=0,COUNTA(RC9:RC14)<=3),"""",(MAX(RC9:RC14)))"
       .Value = .Value: End With
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Re : Erreur de compilation avec target.row

Oui, j'ai fait un Edit au post précédent, où j'ai mis en commentaire la FormulaLocal corrigée et mis en dessous le R1C1 correspondant, bien plus court comme vous pouvez le constater.
 

zbig

XLDnaute Occasionnel
Re : Erreur de compilation avec target.row

Bonjour

c'est super.
Si je supprime une à une les cellules entre I et N, alors ça marche
si je sélectionne une plage de celluls et supp; ça ne marche plus.

une idée?

merci
Zbig
 

zbig

XLDnaute Occasionnel
Re : Erreur de compilation avec target.row

Bonjour

voici le code avant les cellules vides ""

Zbig



Private Sub Worksheet_Change(ByVal Target As Range)


'permet de sortir de la procédure si plus d'une cellule est sélectionnée
'(sinon la suite de la macro renvoie un message d'erreur)
If Target.Count > 1 Or Target.Column <= 4 Then Exit Sub 'si le nbre de cells selectionnées >1 ou si le n° Col <=4 (a -b-c-d) alors exit

'si la cellule n'est pas entre col H et M alors exit
If Intersect(Target, Range("G:N")) Is Nothing Then Exit Sub

'sinon calculs suivants
With Cells(Target.Row, "O")
Cells(Target.Row, "O").FormulaR1C1 = "=IF(AND(COUNT(RC9:RC14)=0,COUNTA(RC9:RC14)<=3),"""",(MAX(RC9:RC14)))"
.Value = .Value: End With

'calculer la formule de moyenne en colonne P

With Cells(Target.Row, "P")
Cells(Target.Row, "P").FormulaR1C1 = "=IF(COUNTA(Rc9:rc14)<3,"""",IF(AND(COUNT(Rc9:rc14)=0,COUNTA(Rc9:rc14)>=3),0,IF(COUNT(Rc9:rc14)=0,"""",IF(COUNT(Rc9:rc14)=1,MAX(RC9:Rc14)/3,IF(COUNT(Rc9:rc14)=2,(MAX(RC9:RC14)+LARGE(RC9:RC14,2))/3,AVERAGE(MAX(RC9:RC14),LARGE(Rc9:RC14,2),LARGE(RC9:RC14,3)))))))"
.Value = .Value: End With

'calculer la formule de l'ecart en colonne Q
With Cells(Target.Row, "Q")
Cells(Target.Row, "Q").FormulaR1C1 = "=IF(rc16="""","""",ABS(Rc8-rc16))"
.Value = .Value: End With

'calculer la NOTE DE perf en colonne R
With Cells(Target.Row, "R")
Cells(Target.Row, "R").FormulaR1C1 = "=IF(RC15="""","""",IF(RC6=""f"",VLOOKUP(RC15,tabf1,3),IF(RC6=""g"",VLOOKUP(RC15,tabg1,2),"""")))"
.Value = .Value: End With

'calculer la NOTE DE moyenne en colonne s
With Cells(Target.Row, "S")
Cells(Target.Row, "S").FormulaR1C1 = "=IF(Rc16="""","""",IF(Rc6=""f"",VLOOKUP(Rc16,tabf2,3),IF(Rc6=""g"",VLOOKUP(Rc16,tabg2,2),"""")))"
.Value = .Value: End With

'calculer la NOTE D ecart au projet en colonne T
With Cells(Target.Row, "T")
Cells(Target.Row, "T").FormulaR1C1 = "=IF(OR(Rc17="""",rc19=""""),"""",VLOOKUP(Rc17,tabp,2))"
.Value = .Value: End With

'calculer la NOTE generale en colonne U
With Cells(Target.Row, "U")
Cells(Target.Row, "U").FormulaR1C1 = "=IF(OR(Rc18="""",Rc19="""",Rc20=""""),"""",Rc19+Rc18+Rc20)"
.Value = .Value: End With


End Sub
 

zbig

XLDnaute Occasionnel
Re : Erreur de compilation avec target.row

Bonjour à tous

merci Si pour ta proposition qui utilise moins de lignes de code


Apparemment
If .Value = "" Then Intersect([O:U], .EntireRow).ClearContents
ne fonctionne pas correctement ou alors je le place mal

Le souhait est le suivant :
si il y a des données dans les colonnes H à N et qu'elles soient effacées en 1 seule manip "supp" après leur sélection,a lors vider les les cellules des colonnes O à U correspondantes


merci
zbig
 

Dranreb

XLDnaute Barbatruc
Re : Erreur de compilation avec target.row

Ceci au début de la procédure a l'air de fonctionner, même pour plusieurs lignes:
VB:
If Target.Address = Intersect(Me.[H:N], Target.EntireRow).Address Then
   If Target.SpecialCells(xlCellTypeBlanks).Count = Target.Count Then Intersect(Me.[O:U], Target.EntireRow).ClearContents
   Exit Sub: End If
P.S. Attention: j'ai mal interprété instinctivement sans doute, que la sélection devait aller de H à N obligatoirement. Mais c'est en voie d'être ça.
Ceci est beaucoup moins restrictif:
VB:
With Intersect(Me.[H:N], Target.EntireRow)
   If .SpecialCells(xlCellTypeBlanks).Count = .Count Then Intersect(Me.[O:U], .EntireRow).ClearContents
   End With
 
Dernière édition:

zbig

XLDnaute Occasionnel
Re : Erreur de compilation avec target.row

Bonjour

j'ai supprimé
'If Target.Count > 1 Or Target.Column <= 4 Then Exit Sub

et Ca fonctionne bien si je supprime les cellules de H à N : impec.
CA fonctionne aussi si je supprime qu'une partie soit H soit I à N: impec

Est ce normal qu'à chaque fois que je positionne mon cursuer sur une case non vide de n'importe quelle feuille, la valeur clignotte dans la barre de formule????

Merci Zbig
 
Dernière édition:

Discussions similaires

Réponses
3
Affichages
174
Réponses
4
Affichages
250

Statistiques des forums

Discussions
312 582
Messages
2 089 953
Membres
104 317
dernier inscrit
UMP