Résultat macro si changement dans une cellule ne marche pas
Fermé
Ramone1
Messages postés
8
Date d'inscription
mardi 25 mars 2014
Statut
Membre
Dernière intervention
31 mars 2014
-
25 mars 2014 à 16:47
f894009 Messages postés 17189 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 6 mai 2024 - 31 mars 2014 à 10:52
f894009 Messages postés 17189 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 6 mai 2024 - 31 mars 2014 à 10:52
A voir également:
- Résultat macro si changement dans une cellule ne marche pas
- Aller à la ligne dans une cellule excel - Guide
- Excel cellule couleur si condition texte - Guide
- Macro word - Guide
- Macro logiciel - Télécharger - Organisation
- Changement d'écriture - Guide
14 réponses
f894009
Messages postés
17189
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
6 mai 2024
1 705
26 mars 2014 à 08:41
26 mars 2014 à 08:41
Bonjour,
je l'éxécute mais pas de résulalt. Oui, mais pourquoi vous passez le numero de ligne en string a lieu de numerique ?????
je l'éxécute mais pas de résulalt. Oui, mais pourquoi vous passez le numero de ligne en string a lieu de numerique ?????
'code simplifie
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
If Not Application.Intersect(Target, Range("K:K")) Then
Call evl_crt(Target.Row)
End If
End Sub
Ramone1
Messages postés
8
Date d'inscription
mardi 25 mars 2014
Statut
Membre
Dernière intervention
31 mars 2014
26 mars 2014 à 10:00
26 mars 2014 à 10:00
J'ai passé le numéro de ligne comme numérique et ça marche toujours pas!
Quand je fais l'appel à la macro avec evl_crt(LIGNE()) dans la cellule concernée ça marche mais en passant par ce code non :(((((
Quand je fais l'appel à la macro avec evl_crt(LIGNE()) dans la cellule concernée ça marche mais en passant par ce code non :(((((
f894009
Messages postés
17189
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
6 mai 2024
1 705
Modifié par f894009 le 26/03/2014 à 10:06
Modifié par f894009 le 26/03/2014 à 10:06
Re,
avez-vous utilise le code que j'ai ecrit ????
et comme je n'ai pas le code de evl_crt, peut pas repondre plus
avez-vous utilise le code que j'ai ecrit ????
et comme je n'ai pas le code de evl_crt, peut pas repondre plus
Ramone1
Messages postés
8
Date d'inscription
mardi 25 mars 2014
Statut
Membre
Dernière intervention
31 mars 2014
26 mars 2014 à 10:22
26 mars 2014 à 10:22
Oui je l'ai utilisé. Voici le code de evl_crt, elle fait appel à une autre macro evl_coul qui prend en paramètre le nom de formule que j'ai fait dans une autre feuille de calcul parce que j'ai pour chaque cellule sur lesquelles je calcule la moyenne plusieurs choix de réponses (liste déroulante)
'----
Function evl_crt(lig) As String
Dim Col As Byte, Cas As Byte
Dim Total As Integer
Dim Moyenne As Double
'ligne vide
If Application.CountA(Range(Cells(lig, 4), Cells(lig, 11))) = 0 Then
evl_crt = ""
Exit Function
End If
For Col = 4 To 11
Cas = Col - 3
Total = Total + evl_coul(Range("_Ans" & Cas), Cas, Cells(lig, Col))
Next
Moyenne = Total / 8
Select Case Moyenne
Case Is < 3
evl_crt = "risk faible" ' +couleur verte: MFC
Case Is <= 4
evl_crt = "risk moyen" '+couleur orange: MFC
Case Else
evl_crt = "risk haut" '+couleur rouge: MFC
End Select
End Function
'-----
Function evl_coul(Ans_x As Range, cas_a As Byte, indic As Range) As Byte
Dim Nbre As Byte
Dim T_ans(), cptr As Byte
Dim Nom As String
T_ans() = Application.Transpose(Ans_x)
If IsEmpty(indic) Then
evaluer_couleur = 0
Exit Function
End If
For cptr = 1 To UBound(T_ans)
If indic = T_ans(cptr) Then
Select Case cas_a
Case 1
'5=rouge, 3=orange, 1=vert, 0=rien ou NA
evl_coul = Choose(cptr, 5, 1, 0, 0, 0, 0, 0, 0)
Case 2
evl_coul = Choose(cptr, 5, 3, 1, 0, 0, 0, 0, 0)
Case 3
evl_coul = Choose(cptr, 5, 1, 0, 0, 0, 0, 0, 0)
Case 4
evl_coul = Choose(cptr, 5, 3, 1, 0, 0, 0, 0, 0)
Case 5
evl_coul = Choose(cptr, 5, 3, 1, 0, 0, 0, 0, 0)
Case 6
evl_coul = Choose(cptr, 5, 3, 1, 0, 0, 0, 0, 0)
Case 7
evl_coul = Choose(cptr, 5, 5, 5, 5, 3, 1, 0, 0)
Case 8
evl_coul = Choose(cptr, 5, 5, 3, 1, 0, 0, 0, 0)
End Select
Exit For
End If
Next
End Function
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
f894009
Messages postés
17189
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
6 mai 2024
1 705
Modifié par f894009 le 26/03/2014 à 10:49
Modifié par f894009 le 26/03/2014 à 10:49
Re,
vu que ce sont des appels de fonction et non de sub routine, cela ne risque pas de marcher.
Il me faudrait votre fichier modifie si donnees confidentielles, parce que je ne peux pas simuler facilement en partant de rien
Par hazard, evaluation_criticite ce n'est pas vous ????
vu que ce sont des appels de fonction et non de sub routine, cela ne risque pas de marcher.
Il me faudrait votre fichier modifie si donnees confidentielles, parce que je ne peux pas simuler facilement en partant de rien
Par hazard, evaluation_criticite ce n'est pas vous ????
Ramone1
Messages postés
8
Date d'inscription
mardi 25 mars 2014
Statut
Membre
Dernière intervention
31 mars 2014
26 mars 2014 à 11:06
26 mars 2014 à 11:06
Le fichier est sur le lien suivant: https://www.cjoint.com/?0CAleHFRoSr
Merci pour ton aide
Merci pour ton aide
f894009
Messages postés
17189
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
6 mai 2024
1 705
26 mars 2014 à 11:16
26 mars 2014 à 11:16
Re,
J'ai recupere le fichier, je vous tiens au courant. Mais vous avez deja fait une demande identique avec comme fichier evaluation_criticite !!!!!!!!
J'ai recupere le fichier, je vous tiens au courant. Mais vous avez deja fait une demande identique avec comme fichier evaluation_criticite !!!!!!!!
Ramone1
Messages postés
8
Date d'inscription
mardi 25 mars 2014
Statut
Membre
Dernière intervention
31 mars 2014
26 mars 2014 à 11:23
26 mars 2014 à 11:23
Oui mais c'était pour le calcul de la moyenne et j'ai eu la solution grâce à Michel ^^
Merci encore une fois
Merci encore une fois
f894009
Messages postés
17189
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
6 mai 2024
1 705
26 mars 2014 à 11:39
26 mars 2014 à 11:39
Re,
devrait aller, a vous de confirmer
https://www.cjoint.com/?DCAlMHADA5N
devrait aller, a vous de confirmer
https://www.cjoint.com/?DCAlMHADA5N
Ramone1
Messages postés
8
Date d'inscription
mardi 25 mars 2014
Statut
Membre
Dernière intervention
31 mars 2014
26 mars 2014 à 11:52
26 mars 2014 à 11:52
Parfait, merci pour ton aide et ton temps :)
Bonne journée
Bonne journée
Ramone1
Messages postés
8
Date d'inscription
mardi 25 mars 2014
Statut
Membre
Dernière intervention
31 mars 2014
28 mars 2014 à 17:57
28 mars 2014 à 17:57
Re f894009 ))
Et si je veux appeler ma fonction via un bouton, comment faire stp?
(J'ai essayé avec ceci je ne sais pas comment passer le numéro de ma ligne en paramètre((( )
Merci par avance
Et si je veux appeler ma fonction via un bouton, comment faire stp?
(J'ai essayé avec ceci je ne sais pas comment passer le numéro de ma ligne en paramètre((( )
Sub CommandButton1_Click()
Call evl_crt (ligne)
End Sub
Merci par avance
f894009
Messages postés
17189
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
6 mai 2024
1 705
28 mars 2014 à 18:50
28 mars 2014 à 18:50
Bonjour,
il faut prendre la ligne d'une cellule active de la zone des listes de validation
exemple:
il faut prendre la ligne d'une cellule active de la zone des listes de validation
exemple:
Private Sub CommandButton1_Click()
'test plage
If ActiveCell.Column >= 4 And ActiveCell.Column <= 8 Then
Range("L" & ActiveCell.Row) = evl_crt(ActiveCell.Row)
End If
End Sub
Ramone1
Messages postés
8
Date d'inscription
mardi 25 mars 2014
Statut
Membre
Dernière intervention
31 mars 2014
31 mars 2014 à 10:46
31 mars 2014 à 10:46
Merci bcp et bonne journée..
f894009
Messages postés
17189
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
6 mai 2024
1 705
31 mars 2014 à 10:52
31 mars 2014 à 10:52
Bonjour,
ai oublie le test ligne
ai oublie le test ligne
Private Sub CommandButton1_Click()
'test plage
If ActiveCell.Column >= 4 And ActiveCell.Column <= 8 And ActiveCell.Row >= 4 Then
Range("L" & ActiveCell.Row) = evl_crt(ActiveCell.Row)
End If
End Sub