Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 01/09/2011, 12h51   #1
Candidat au titre de Membre du Club
 
Excusez mon français, ce n'est pas ma langue de base
Inscription : août 2011
Messages : 32
Détails du profil
Informations personnelles :
Localisation : France, Bas Rhin (Alsace)

Informations professionnelles :
Activité : Excusez mon français, ce n'est pas ma langue de base

Informations forums :
Inscription : août 2011
Messages : 32
Points : 12
Points : 12
Par défaut Valeur clignote pour une colonne

Bonjour le forum,

Sur le forum j'ai trouvé une discution suivavnte
http://www.developpez.net/forums/d94...nte-condition/
cette discution m'interrese car j'ai un fichier pour lequel je voudrais impliquer cette macro. Pour la colonne N, j'aurai besoin avoir le valeur clignote si le valeur est superior à 6 ans, 0 mois, 0 jours. Par contre, il est difficile pour moi comprendre toute cette discution + le fait que je ne connaîs pas le VB aggrave la situation.

merci d'avance pour votre aide,
Gogia

P.S. Pardonnez-moi pour mes fautes en français...
Pièces jointes en attente de validation
Type de fichier : xls Clignoter.xls
Gogia est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/09/2011, 07h17   #2
Responsable Visual Basic
 
Avatar de bbil
 
Inscription : juin 2003
Messages : 11 773
Détails du profil
Informations personnelles :
Âge : 45
Localisation : France, Ariège (Midi Pyrénées)

Informations forums :
Inscription : juin 2003
Messages : 11 773
Points : 16 849
Points : 16 849
Envoyer un message via Skype™ à bbil
Si l'on revient à ce que tu veux faire ?
- Il y as quoi dans ta cellule ?
- Tu veux qu'elle clignote quand ?
Le code dont tu parle devrai faire clignoter la valeur de la colonne lorsque celle-ci est modifiée, le clignotement s'arrête lors de la modification d'une nouvelle cellule ..

montre nous le code que tu as mis dans ton classeur et dit nous ou tu la mis...
----------------------------------------------------------------
Fichier joint dans vos discussions
bbil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/09/2011, 09h43   #3
Candidat au titre de Membre du Club
 
Excusez mon français, ce n'est pas ma langue de base
Inscription : août 2011
Messages : 32
Détails du profil
Informations personnelles :
Localisation : France, Bas Rhin (Alsace)

Informations professionnelles :
Activité : Excusez mon français, ce n'est pas ma langue de base

Informations forums :
Inscription : août 2011
Messages : 32
Points : 12
Points : 12
Bonjour,

Il y a une liste des émployés qui travaillent sous ses contrats CDD. Il est possible que le contrat sera rénouveler. Le but est savoir quand l'ensemble des contrats pour la même personne arrive à six ans.
Citation:
Si l'on revient à ce que tu veux faire ?
- Il y as quoi dans ta cellule ?
- Tu veux qu'elle clignote quand ?
Le code dont tu parle devrai faire clignoter la valeur de la colonne lorsque celle-ci est modifiée, le clignotement s'arrête lors de la modification d'une nouvelle cellule ..
La colonne M calcule la durée du chaque contrat, tandis que la colonne N calcule la durée total des touts les contrats pour chaque personne.
Je voudrais avoir / voir la valeur de la colonne N clignote quand la valeur du cellule dans la colonne N sera supériore à 6 ans 0 mois 0 jours.
Ce valeur clignotera toujours lorsque il corresponde la condition (> 6 ans...)

Citation:
montre nous le code que tu as mis dans ton classeur et dit nous ou tu la mis...
Malheureusement, je ne peux pas le montre car je n'ai rien mis. Je ne comprends rien dans le VB (je suis vraiment nul dans ce domaine). Si on rajoute que mon français est loin d'être bon et que je travaille sous MAC, tu pourras comprendre que ce n'est pas facile pour moi suivre la discussion des professionnels qui utilisent les expressions qui sont au-delà de ma compréhension :-(
Gogia est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/09/2011, 10h20   #4
Responsable Visual Basic
 
Avatar de bbil
 
Inscription : juin 2003
Messages : 11 773
Détails du profil
Informations personnelles :
Âge : 45
Localisation : France, Ariège (Midi Pyrénées)

Informations forums :
Inscription : juin 2003
Messages : 11 773
Points : 16 849
Points : 16 849
Envoyer un message via Skype™ à bbil
Peu-être une solution, avec un peu de VBA et une mise en forme conditionnelle ..

tout d'abords création d'un "bit clignotant" par exemple en cellule A1 de ta feuille 1, passage de la valeur 1 à 0 puis 0 à 1 toutes les secondes ..

pour cela dans un nouveau module (AlT-F11 => editeur VBE , Insertion Module )
le code :
Code :
1
2
3
4
Sub On_TIME()
   Application.OnTime Now + TimeSerial(0, 0, 1), "On_Time"
   Feuil1.Range("A1") = 1 - Feuil1.Range("A1")
End Sub
pour lancer la macro au démarrage dans ThisWorkbook :
Code :
1
2
3
Private Sub Workbook_Open()
   On_TIME
End Sub
voila la après avoir lancé une fois ta procédure On_Time (F5) .. tu devrai avoir la valeur de la cellule A1 qui "clignote" 0<>1"..

Pour la mise en forme conditionnelle tu te place sur la cellule à modifier puis Menu Format/Mise En forme conditionnelle/ la formule est :
avec D4 l'adresse de la cellule concernée..
et tu choisi à ce moment la par exemple le format (couleur de fond...) souhaité lors du clignotement.
bbil est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 02/09/2011, 12h25   #5
Candidat au titre de Membre du Club
 
Excusez mon français, ce n'est pas ma langue de base
Inscription : août 2011
Messages : 32
Détails du profil
Informations personnelles :
Localisation : France, Bas Rhin (Alsace)

Informations professionnelles :
Activité : Excusez mon français, ce n'est pas ma langue de base

Informations forums :
Inscription : août 2011
Messages : 32
Points : 12
Points : 12
Salut,

Deux premières étapes sont bien expliquées => bien impliquées. Merci beaucoup!

Le petit souci qui reste maintenant est avec le format conditionnel car le valeur qui je vois dans le cellule N4 est le résultat de cette petite fonction :
Code :
1
2
3
4
=SI(A5="","",DATEDIF(SOMMEPROD((Nom=C5)*(prénom=D5),Date_début),
SOMMEPROD((Nom=C5)*(prénom=D5),Date_Fin),"y")&" an(s) "&DATEDIF(SOMMEPROD((Nom=C5)*(prénom=D5),Date_début),
SOMMEPROD((Nom=C5)*(prénom=D5),Date_Fin),"ym")&" mois "&DATEDIF(SOMMEPROD((Nom=C5)*(prénom=D5),Date_début),
SOMMEPROD((Nom=C5)*(prénom=D5),Date_Fin),"md")&"jour(s)")
Je ne comprends pas quoi exactement dois–je mettre dans la formule quand je fais le format conditionnel.
Pourras-tu me recommander quelque chose ?
Merci d’avance
Gogia est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/09/2011, 14h35   #6
Responsable Visual Basic
 
Avatar de bbil
 
Inscription : juin 2003
Messages : 11 773
Détails du profil
Informations personnelles :
Âge : 45
Localisation : France, Ariège (Midi Pyrénées)

Informations forums :
Inscription : juin 2003
Messages : 11 773
Points : 16 849
Points : 16 849
Envoyer un message via Skype™ à bbil
suffit de remplacer D4 par N4 ?

bbil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/09/2011, 14h54   #7
Candidat au titre de Membre du Club
 
Excusez mon français, ce n'est pas ma langue de base
Inscription : août 2011
Messages : 32
Détails du profil
Informations personnelles :
Localisation : France, Bas Rhin (Alsace)

Informations professionnelles :
Activité : Excusez mon français, ce n'est pas ma langue de base

Informations forums :
Inscription : août 2011
Messages : 32
Points : 12
Points : 12
merci pour ton attention

non, ce n'est pas suffit.
les valeurs des cellules de cette colonne N apparaissent dans le format

X an(s) Y mois Z jour(s)

Pour déterminer le valeur « 6 ans », j’ai utilisé la formule du format conditionnel =et($N$1=1,gauche(N4,2)>5)
Malheureusement, quand j’implique le format conditionnel, le deux cellules avec des valeurs clignotent

0 an(s) 4 mois 29jour(s)
11 an(s) 0 mois 20jour(s)

Est-ce que quelqu’un pourra proposer une solution ?

Je vous remercie pour vos propositions.
Gogia

merci
Gogia est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/09/2011, 12h38   #8
Candidat au titre de Membre du Club
 
Excusez mon français, ce n'est pas ma langue de base
Inscription : août 2011
Messages : 32
Détails du profil
Informations personnelles :
Localisation : France, Bas Rhin (Alsace)

Informations professionnelles :
Activité : Excusez mon français, ce n'est pas ma langue de base

Informations forums :
Inscription : août 2011
Messages : 32
Points : 12
Points : 12
bbil

Quand ce fichier avec la macro est ouvert, j'ai certains problèmes:
1. Le clignotement pose des soucis quand je veux travailler sur autres fichiers d'Excel ou sur autres applications.
2. Quand je veux fermer le fichier - quitter l’Excel est la seule solution, car, autrement, le fichier s’ouvre automatiquement.
Une question:
Est-ce que tu peux aider avec ça ?
Le vrai fichier contient plusieurs feuilles et pour moi sera suffit si le valeurs clignotent seulement quand la feuille « CDD » est ouverte.
Je te remercie d’avance,

Gogia
P.S. J'ai trouvé la solution pour le format conditionnel.
Gogia est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/09/2011, 20h36   #9
Responsable Visual Basic
 
Avatar de bbil
 
Inscription : juin 2003
Messages : 11 773
Détails du profil
Informations personnelles :
Âge : 45
Localisation : France, Ariège (Midi Pyrénées)

Informations forums :
Inscription : juin 2003
Messages : 11 773
Points : 16 849
Points : 16 849
Envoyer un message via Skype™ à bbil
bonsoir,
ne relance ta procedure on time seulement si tu est dans la bonne feuille Activesheet.name....
Deplace le premier lancement prèsent dans l'evenement ouverture classeur vers l'sheet.activate
bbil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/09/2011, 09h24   #10
Candidat au titre de Membre du Club
 
Excusez mon français, ce n'est pas ma langue de base
Inscription : août 2011
Messages : 32
Détails du profil
Informations personnelles :
Localisation : France, Bas Rhin (Alsace)

Informations professionnelles :
Activité : Excusez mon français, ce n'est pas ma langue de base

Informations forums :
Inscription : août 2011
Messages : 32
Points : 12
Points : 12
Citation:
ne relance ta procedure on time seulement si tu est dans la bonne feuille Activesheet.name....
Deplace le premier lancement prèsent dans l'evenement ouverture classeur vers l'sheet.activate
Bonjour,

Es-ce que peux-tu préciser comment exactement le faire ? Je ne connais pas du tous le VB et , malheureusement, je ne comprends pas cette instruction
Gogia est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/09/2011, 22h11   #11
Responsable Visual Basic
 
Avatar de bbil
 
Inscription : juin 2003
Messages : 11 773
Détails du profil
Informations personnelles :
Âge : 45
Localisation : France, Ariège (Midi Pyrénées)

Informations forums :
Inscription : juin 2003
Messages : 11 773
Points : 16 849
Points : 16 849
Envoyer un message via Skype™ à bbil
Code :
1
2
3
4
5
6
Sub On_TIME() 
  If ActiveSheet.Name = "CDD" THEN
   Application.OnTime Now + TimeSerial(0, 0, 1), "On_Time"
   Feuil1.Range("A1") = 1 - Feuil1.Range("A1")
  Endif
End Sub
A supprimer
Code :
1
2
3
<s>Private Sub Workbook_Open()
   On_TIME
End Sub</s>
Dans code feuille "CDD"

Code :
1
2
3
Private Sub Worksheet_Activate()
 On_TIME
End Sub
bbil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/09/2011, 13h06   #12
Candidat au titre de Membre du Club
 
Excusez mon français, ce n'est pas ma langue de base
Inscription : août 2011
Messages : 32
Détails du profil
Informations personnelles :
Localisation : France, Bas Rhin (Alsace)

Informations professionnelles :
Activité : Excusez mon français, ce n'est pas ma langue de base

Informations forums :
Inscription : août 2011
Messages : 32
Points : 12
Points : 12
Bonjour,

Il y a quelque chose vraiment bizzare:
J'ai un fichier - N°1 - contienant un seul onglet. Dan ce fichier là, la macro marche parfaitement.
J'ai un autre fichier - N°2 - contienant plusieurs onglets. Dans ce fichier, après avoir excécuter la macro avec un seul changement - j'ai remplacé ton A1 par N1- je vois que quelque chose bouge, mais dans le cellule N1 ne apparaissent ni 0 ni 1. Sur le barre au dessous d'écran le calcul (?) Somme=0 clignote avec la même friquentité comme le curseur.

Quand je reviens vers le fichier N°1 et rajoute un onglet, la macro ne fonctionne plus. C'est à dire, elle s'arrete avec le valeur 0 ou 1 et c'est tous.
Je ne trouve aucune autre différence entre les deux fichier. J'ai recopié la macro plusieurs fois mais ça ne donne rien.
Citation:
Code :
1
2
3
4
5
6
7
 
Sub On_TIME() 
  If ActiveSheet.Name = "CDD" THEN
   Application.OnTime Now + TimeSerial(0, 0, 1), "On_Time"
   Feuil1.Range("A1") = 1 - Feuil1.Range("A1")
  Endif
End Sub
Dans code feuille "CDD"

Code :
1
2
3
4
 
Private Sub Worksheet_Activate()
 On_TIME
End Sub
Est-ce que suis-je assez clair pour être compris? Peux-tu proposer qqc?
Merci
Gogia est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/09/2011, 22h13   #13
Responsable Visual Basic
 
Avatar de bbil
 
Inscription : juin 2003
Messages : 11 773
Détails du profil
Informations personnelles :
Âge : 45
Localisation : France, Ariège (Midi Pyrénées)

Informations forums :
Inscription : juin 2003
Messages : 11 773
Points : 16 849
Points : 16 849
Envoyer un message via Skype™ à bbil
Voir :
c'est le nom de ta feuille visible dans l'éditeur VBA ...

tu peu aussi mettre :

Code :
ThisWorkbook.sheets("CDD").Range("A1") = 1 - ThisWorkbook.sheets("CDD").Range("A1")
bbil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/09/2011, 09h14   #14
Candidat au titre de Membre du Club
 
Excusez mon français, ce n'est pas ma langue de base
Inscription : août 2011
Messages : 32
Détails du profil
Informations personnelles :
Localisation : France, Bas Rhin (Alsace)

Informations professionnelles :
Activité : Excusez mon français, ce n'est pas ma langue de base

Informations forums :
Inscription : août 2011
Messages : 32
Points : 12
Points : 12
Citation:
Voir :
c'est le nom de ta feuille visible dans l'éditeur VBA ...

tu peu aussi mettre :

Code :
ThisWorkbook.sheets("CDD").Range("A1") = 1 - ThisWorkbook.sheets("CDD").Range("A1")
bbil,

my French version of the Microsoft Office 2011 for MAC understands English mieux par rapport le français.


MERCI BEAUCOUP!!!
Gogia est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 18h25.


 
 
 
 
Partenaires

Hébergement Web