Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Erreur de compilation avec target.row

  • Initiateur de la discussion Initiateur de la discussion zbig
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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

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:
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.
 
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
 
Re : Erreur de compilation avec target.row

Bonjour

comment signifier dans le code que
si les cellules entre I et N (après suppression d'une plage) sont vides alors vider les cellules entre O et U ?

merci
Zbig
 
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
 
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
 
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:
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:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
4
Affichages
258
wDog66
W
Réponses
4
Affichages
221
Réponses
43
Affichages
803
  • Question Question
Réponses
4
Affichages
175
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…