Vba
Résolu/Fermé
débutante vba
Messages postés
9
Date d'inscription
mercredi 10 avril 2013
Statut
Membre
Dernière intervention
11 avril 2013
-
10 avril 2013 à 18:43
débutante vba Messages postés 9 Date d'inscription mercredi 10 avril 2013 Statut Membre Dernière intervention 11 avril 2013 - 11 avril 2013 à 11:58
débutante vba Messages postés 9 Date d'inscription mercredi 10 avril 2013 Statut Membre Dernière intervention 11 avril 2013 - 11 avril 2013 à 11:58
7 réponses
Vaucluse
Messages postés
26496
Date d'inscription
lundi 23 juillet 2007
Statut
Contributeur
Dernière intervention
1 avril 2022
6 421
10 avril 2013 à 18:55
10 avril 2013 à 18:55
Bonsoir
en attendant B=VBA qui va surement venir, vous pouvez toujours:
Soit :
utiliser excel à partir de 2007 qui n'a pas de limitation de MFC ;-)
Soit :
(si vous admettez vide =équivalent à <1,02)
passer vos cellules F10 à F14 en rouge selon votre 1° condition
appliquez les autres, dans l'ordre, avec ces formules dans l'ordre:
Vert
=ET(F10>1,02;F10<=1,12)
en jaune
=F10<=1,2
en bleu
=F10>1,2
crdlmnt
en attendant B=VBA qui va surement venir, vous pouvez toujours:
Soit :
utiliser excel à partir de 2007 qui n'a pas de limitation de MFC ;-)
Soit :
(si vous admettez vide =équivalent à <1,02)
passer vos cellules F10 à F14 en rouge selon votre 1° condition
appliquez les autres, dans l'ordre, avec ces formules dans l'ordre:
Vert
=ET(F10>1,02;F10<=1,12)
en jaune
=F10<=1,2
en bleu
=F10>1,2
crdlmnt
débutante vba
Messages postés
9
Date d'inscription
mercredi 10 avril 2013
Statut
Membre
Dernière intervention
11 avril 2013
10 avril 2013 à 19:26
10 avril 2013 à 19:26
ah bon je ne savais pas pour la mise en forme conditionnelle maos admettons que je le saisi sur excel 2007 si celui ci est consulte par la suite sur excel moins recent est ce que cela fonctionnera? et enfin comment le saisir car quand jai essaye toute la colonne est ressori rouge alors que ca ne remplissait pas les conditions de cette couleur... je suis desolee je suis vraiment debutante!
Vaucluse
Messages postés
26496
Date d'inscription
lundi 23 juillet 2007
Statut
Contributeur
Dernière intervention
1 avril 2022
6 421
10 avril 2013 à 19:29
10 avril 2013 à 19:29
Non les spécificités de 2007 ne fonctionneront pas sur les précédents;
par ailleurs, pour vous dire pourquoi tout est rouge, il faudrait nous dire quelle conditions vous appliquez,quelles fomules et dans quel ordre.
A vous lire
par ailleurs, pour vous dire pourquoi tout est rouge, il faudrait nous dire quelle conditions vous appliquez,quelles fomules et dans quel ordre.
A vous lire
Vaucluse
Messages postés
26496
Date d'inscription
lundi 23 juillet 2007
Statut
Contributeur
Dernière intervention
1 avril 2022
6 421
10 avril 2013 à 19:30
10 avril 2013 à 19:30
Si vous avez un fichier test, placez le sur
https://www.cjoint.com/
et revenez ici placer le lien donné par me site
https://www.cjoint.com/
et revenez ici placer le lien donné par me site
débutante vba
Messages postés
9
Date d'inscription
mercredi 10 avril 2013
Statut
Membre
Dernière intervention
11 avril 2013
10 avril 2013 à 19:42
10 avril 2013 à 19:42
https://www.cjoint.com/?3DktPh05Eus
l'ideal serait que la formule s'applique à toutes les versions excel d'où le fait de passer en vba ...
l'ideal serait que la formule s'applique à toutes les versions excel d'où le fait de passer en vba ...
Vaucluse
Messages postés
26496
Date d'inscription
lundi 23 juillet 2007
Statut
Contributeur
Dernière intervention
1 avril 2022
6 421
10 avril 2013 à 19:53
10 avril 2013 à 19:53
En vba je ne sais pas, mais mon ami Mike et qui vous suit , lui, sait et va surement résoudre le problème
Voila tout ce que je eux vous proposer avec trois conditions adaptées à 97-2003
https://www.cjoint.com/?CDktYiBfZ7G
Mais bien sur, les cellules à 0 sont à base rouge et vous n'avez pas de résultat qui motive le jaune.
J'ai aussi placé en F une formule qui permet d'éviter le #DIV/0 quand les lignes sont vides.
Je vous laisse avec Mike
crdlmnt
Voila tout ce que je eux vous proposer avec trois conditions adaptées à 97-2003
https://www.cjoint.com/?CDktYiBfZ7G
Mais bien sur, les cellules à 0 sont à base rouge et vous n'avez pas de résultat qui motive le jaune.
J'ai aussi placé en F une formule qui permet d'éviter le #DIV/0 quand les lignes sont vides.
Je vous laisse avec Mike
crdlmnt
débutante vba
Messages postés
9
Date d'inscription
mercredi 10 avril 2013
Statut
Membre
Dernière intervention
11 avril 2013
10 avril 2013 à 20:01
10 avril 2013 à 20:01
merci beaucoup pour votre aide!
Mike-31
Messages postés
18354
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
1 janvier 2025
5 111
Modifié par Mike-31 le 10/04/2013 à 19:38
Modifié par Mike-31 le 10/04/2013 à 19:38
Salut,
Quelle version Excel as tu
A+
Mike-31
Une période d'échec est un moment rêvé pour semer les graines du savoir.
Quelle version Excel as tu
A+
Mike-31
Une période d'échec est un moment rêvé pour semer les graines du savoir.
débutante vba
Messages postés
9
Date d'inscription
mercredi 10 avril 2013
Statut
Membre
Dernière intervention
11 avril 2013
10 avril 2013 à 19:43
10 avril 2013 à 19:43
je travaille sur différente version mais la plupart du temps sur excel 2007
Mike-31
Messages postés
18354
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
1 janvier 2025
5 111
10 avril 2013 à 20:35
10 avril 2013 à 20:35
Re,
bien sur on peut passer en VBA, mais lorsqu'on peu faire simple pourquoi s'en priver
Pour ma part j'aurai mis ma plage en rouge ce qui élimine une couleur et j'aurai traité les 3 couleurs suivantes, mettre la plage F10:F17 en surbrillance
Mise en forme conditionnelle
pour la couleur verte
=A10>1,02
Pour la couleur jaune
=A10>1,12
pour la couleur bleu
=F10>1,2
Maintenant si tu tiens au VBA, je mange vite fait et je t'écrit un code tout simple
bien sur on peut passer en VBA, mais lorsqu'on peu faire simple pourquoi s'en priver
Pour ma part j'aurai mis ma plage en rouge ce qui élimine une couleur et j'aurai traité les 3 couleurs suivantes, mettre la plage F10:F17 en surbrillance
Mise en forme conditionnelle
pour la couleur verte
=A10>1,02
Pour la couleur jaune
=A10>1,12
pour la couleur bleu
=F10>1,2
Maintenant si tu tiens au VBA, je mange vite fait et je t'écrit un code tout simple
débutante vba
Messages postés
9
Date d'inscription
mercredi 10 avril 2013
Statut
Membre
Dernière intervention
11 avril 2013
10 avril 2013 à 21:01
10 avril 2013 à 21:01
il est vrai que la simplicite c'est le mieux lorsque nous avons le choix mais j'avoue que je prefere en vba car cela se genere tout seul et cela me permet un certain gain de temps dans mon activite mais je ne veux pas exagerer et je ne veux pas non plus que tu meurs de faim ou de sur charge de travail.a cause de moi !
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Mike-31
Messages postés
18354
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
1 janvier 2025
5 111
Modifié par Mike-31 le 10/04/2013 à 21:12
Modifié par Mike-31 le 10/04/2013 à 21:12
Re,
Mourir de faim non ce n'est pas mon genre, surcharge de travail non plus j'ai un bon patron qui se nomme retraite.
bon passons aux choses sérieuses, pour ton fichier mis à notre disposition, commence par supprimer les mises en forme conditionnelle, puis clic droit sur l'onglet de ta feuille/Visualiser le code
colle ce code dans la partie blanche
Private Sub Worksheet_Calculate()
Dim Cellule As Range
Application.ScreenUpdating = False
For Each Cellule In Range("F10:F17")
If Cellule.Value <= 1.02 Then Cellule.Interior.ColorIndex = 3 'rouge
If Cellule.Value > 1.02 Then Cellule.Interior.ColorIndex = 4 'vert
If Cellule.Value > 1.12 Then Cellule.Interior.ColorIndex = 6 'jaune
If Cellule.Value > 1.21 Then Cellule.Interior.ColorIndex = 23 'bleu
Next
Application.ScreenUpdating = True
End Sub
Il est possible d'améliorer le code pour affecter des couleurs de ton choix en faisant référence à des cellules que tu coloriserais par exemple
A+
Mike-31
Une période d'échec est un moment rêvé pour semer les graines du savoir.
Mourir de faim non ce n'est pas mon genre, surcharge de travail non plus j'ai un bon patron qui se nomme retraite.
bon passons aux choses sérieuses, pour ton fichier mis à notre disposition, commence par supprimer les mises en forme conditionnelle, puis clic droit sur l'onglet de ta feuille/Visualiser le code
colle ce code dans la partie blanche
Private Sub Worksheet_Calculate()
Dim Cellule As Range
Application.ScreenUpdating = False
For Each Cellule In Range("F10:F17")
If Cellule.Value <= 1.02 Then Cellule.Interior.ColorIndex = 3 'rouge
If Cellule.Value > 1.02 Then Cellule.Interior.ColorIndex = 4 'vert
If Cellule.Value > 1.12 Then Cellule.Interior.ColorIndex = 6 'jaune
If Cellule.Value > 1.21 Then Cellule.Interior.ColorIndex = 23 'bleu
Next
Application.ScreenUpdating = True
End Sub
Il est possible d'améliorer le code pour affecter des couleurs de ton choix en faisant référence à des cellules que tu coloriserais par exemple
A+
Mike-31
Une période d'échec est un moment rêvé pour semer les graines du savoir.
débutante vba
Messages postés
9
Date d'inscription
mercredi 10 avril 2013
Statut
Membre
Dernière intervention
11 avril 2013
10 avril 2013 à 21:25
10 avril 2013 à 21:25
j'essaye des demain ta solution car pas d'acces au.pc ce soir ! en tout cas merci beaucoup de ton aide ! c'est vraiment gentil ! je te tiens au courant demain pour le resultat bonne soirer !
Vaucluse
Messages postés
26496
Date d'inscription
lundi 23 juillet 2007
Statut
Contributeur
Dernière intervention
1 avril 2022
6 421
11 avril 2013 à 07:39
11 avril 2013 à 07:39
Bonjour Mike
étant intéressé , j'ai tenté.. mais je n'ai pas réussi à la faire fonctionner? j'attend de voir si la demandeuse à réussi!
bien amicalement
étant intéressé , j'ai tenté.. mais je n'ai pas réussi à la faire fonctionner? j'attend de voir si la demandeuse à réussi!
bien amicalement
Mike-31
Messages postés
18354
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
1 janvier 2025
5 111
11 avril 2013 à 07:53
11 avril 2013 à 07:53
Salut l'ami,
Change les valeurs en C et I puisque les valeurs en F sont le résultat de cette division
https://www.cjoint.com/?CDlhYzMm3eT
Change les valeurs en C et I puisque les valeurs en F sont le résultat de cette division
https://www.cjoint.com/?CDlhYzMm3eT
Vaucluse
Messages postés
26496
Date d'inscription
lundi 23 juillet 2007
Statut
Contributeur
Dernière intervention
1 avril 2022
6 421
Modifié par Vaucluse le 11/04/2013 à 08:01
Modifié par Vaucluse le 11/04/2013 à 08:01
Exact Mike, merci.Avec le modèle, c'est mieux.
Bonne journée
Petite remarque: les cellules égales à 0 restent rouge net passe en bleu si on remplace 0 par "" N'y a t il pas moyen de mettre une condition si la cellule st égale à 0 pour ne pas les formater
Bonne journée
Petite remarque: les cellules égales à 0 restent rouge net passe en bleu si on remplace 0 par "" N'y a t il pas moyen de mettre une condition si la cellule st égale à 0 pour ne pas les formater
débutante vba
Messages postés
9
Date d'inscription
mercredi 10 avril 2013
Statut
Membre
Dernière intervention
11 avril 2013
11 avril 2013 à 08:52
11 avril 2013 à 08:52
Elle fonctionne parfaitement ! petite question si je veux mettre en place cette meme programmation sur plusieurs pages de ce meme classeur comment dois-je procéder ? encore merci beaucoup pour cette aide !
Mike-31
Messages postés
18354
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
1 janvier 2025
5 111
Modifié par Mike-31 le 11/04/2013 à 08:57
Modifié par Mike-31 le 11/04/2013 à 08:57
Re,
Si les plages à surveiller sont exactement identique sur toutes les feuilles ce même code suffit, il suffit de le déplacer dans la Thisworkbook
Private Sub Workbook_SheetCalculate(ByVal Sh As Object)
Dim Cellule As Range
Application.ScreenUpdating = False
For Each Cellule In Range("F10:F17")
If Cellule.Offset(1, -3) = "" Then Cellule.Interior.ColorIndex = 15 'xlNone 'vide
If Cellule.Value <= 1.02 Then Cellule.Interior.ColorIndex = 3 'rouge
If Cellule.Value > 1.02 Then Cellule.Interior.ColorIndex = 4 'vert
If Cellule.Value > 1.12 Then Cellule.Interior.ColorIndex = 6 'jaune
If Cellule.Value > 1.21 Then Cellule.Interior.ColorIndex = 23 'bleu
If Cellule.Offset(0, -3) = "" Or Cellule.Offset(0, 3) = "" Then Cellule.Interior.ColorIndex = xlNone 'vide
Next
Application.ScreenUpdating = True
End Sub
Si les plages à surveiller sont exactement identique sur toutes les feuilles ce même code suffit, il suffit de le déplacer dans la Thisworkbook
Private Sub Workbook_SheetCalculate(ByVal Sh As Object)
Dim Cellule As Range
Application.ScreenUpdating = False
For Each Cellule In Range("F10:F17")
If Cellule.Offset(1, -3) = "" Then Cellule.Interior.ColorIndex = 15 'xlNone 'vide
If Cellule.Value <= 1.02 Then Cellule.Interior.ColorIndex = 3 'rouge
If Cellule.Value > 1.02 Then Cellule.Interior.ColorIndex = 4 'vert
If Cellule.Value > 1.12 Then Cellule.Interior.ColorIndex = 6 'jaune
If Cellule.Value > 1.21 Then Cellule.Interior.ColorIndex = 23 'bleu
If Cellule.Offset(0, -3) = "" Or Cellule.Offset(0, 3) = "" Then Cellule.Interior.ColorIndex = xlNone 'vide
Next
Application.ScreenUpdating = True
End Sub
débutante vba
Messages postés
9
Date d'inscription
mercredi 10 avril 2013
Statut
Membre
Dernière intervention
11 avril 2013
11 avril 2013 à 11:58
11 avril 2013 à 11:58
Génial !!!! cela fonctionne parfaitement !!! merci beaucoup à tous les deux pour votre aide.
Mike-31
Messages postés
18354
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
1 janvier 2025
5 111
11 avril 2013 à 08:31
11 avril 2013 à 08:31
Re,
Plusieurs possibilités, on pourrait tester la cellule en F en fin de procédure ou directement dans chaque ligne avec une conditionnelle if
dans l'exemple je préfère tester les cellule en C et I en rajoutant une ligne en fin de code
Private Sub Worksheet_Calculate()
Dim Cellule As Range
Application.ScreenUpdating = False
For Each Cellule In Range("F10:F17")
If Cellule.Offset(1, -3) = "" Then Cellule.Interior.ColorIndex = 15 'xlNone 'vide
If Cellule.Value <= 1.02 Then Cellule.Interior.ColorIndex = 3 'rouge
If Cellule.Value > 1.02 Then Cellule.Interior.ColorIndex = 4 'vert
If Cellule.Value > 1.12 Then Cellule.Interior.ColorIndex = 6 'jaune
If Cellule.Value > 1.21 Then Cellule.Interior.ColorIndex = 23 'bleu
If Cellule.Offset(0, -3) = "" Or Cellule.Offset(0, 3) = "" Then Cellule.Interior.ColorIndex = xlNone 'vide
Next
Application.ScreenUpdating = True
End Sub
Plusieurs possibilités, on pourrait tester la cellule en F en fin de procédure ou directement dans chaque ligne avec une conditionnelle if
dans l'exemple je préfère tester les cellule en C et I en rajoutant une ligne en fin de code
Private Sub Worksheet_Calculate()
Dim Cellule As Range
Application.ScreenUpdating = False
For Each Cellule In Range("F10:F17")
If Cellule.Offset(1, -3) = "" Then Cellule.Interior.ColorIndex = 15 'xlNone 'vide
If Cellule.Value <= 1.02 Then Cellule.Interior.ColorIndex = 3 'rouge
If Cellule.Value > 1.02 Then Cellule.Interior.ColorIndex = 4 'vert
If Cellule.Value > 1.12 Then Cellule.Interior.ColorIndex = 6 'jaune
If Cellule.Value > 1.21 Then Cellule.Interior.ColorIndex = 23 'bleu
If Cellule.Offset(0, -3) = "" Or Cellule.Offset(0, 3) = "" Then Cellule.Interior.ColorIndex = xlNone 'vide
Next
Application.ScreenUpdating = True
End Sub