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 30/01/2012, 10h35   #1
Invité de passage
 
Femme
Étudiant
Inscription : janvier 2012
Messages : 19
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : janvier 2012
Messages : 19
Points : 4
Points : 4
Par défaut Stopper une date

Bonjours à tous,

Je voudrais savoir s'il est possible de stopper une date sous excel 2003 grâce à une formule.

Je m'explique : J'ai utilisé une formule pour calculer les jours passés qu'ils me restent entre la date du jour et la date création de poste. Le processus recrutement étant de 85 jours j'ai également utilisé une mise en forme conditionnelle (bleu quand les jours passés sont <=85 et rouge quand les jours passés sont >=86) Bref tout cela est ok !

Maintenant mon problème : Quand j'écris dans ma cellule "Etat" : Pourvu, je voudrais que dans ma cellule "Jours passés" les jours s'arrêtent. Ce qui va me permettre à chaque fin de mois, de savoir si je respecte mon processus recrutement de 85 jours ou non.

En espèrant avoir été le plus clair possible... et que vous pourrez m'aider !
Fraizou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/01/2012, 12h58   #2
Expert Confirmé
 
Philippe Tulliez
Développeur et formateur VBA, Excel et Word.
Inscription : janvier 2010
Messages : 1 313
Détails du profil
Informations personnelles :
Nom : Philippe Tulliez
Localisation : Belgique

Informations professionnelles :
Activité : Développeur et formateur VBA, Excel et Word.

Informations forums :
Inscription : janvier 2010
Messages : 1 313
Points : 2 679
Points : 2 679
Bonjour,
Qu'entends-tu par
Citation:
je voudrais que dans ma cellule "Jours passés" les jours s'arrêtent
S'agit-il de bloquer l'encodage d'une date dépassée ou l'affichage d'un tableau jusqu'à une date donnée ?
__________________
Philippe Tulliez
http://philippe.tulliez.be
Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)

Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
corona est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/01/2012, 13h24   #3
Membre Expert
 
Homme
Retraité
Inscription : avril 2011
Messages : 697
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Retraité

Informations forums :
Inscription : avril 2011
Messages : 697
Points : 1 457
Points : 1 457
Bonjour,

En supposant que tu as placé la date création de poste en colonne A, le nombre de jours passés en colonne C et l’état en colonne C (les données commencent en ligne 2, la ligne 1 étant utilisée pour l’en-tête).
Si tu inscris la formule =AUJOURDHUI()-A2 en B2, l’affichage va évoluer chaque jour.
Rien de plus normal puisque c’est le but du suivi.

Pour figer le résultat, il va falloir remplacer la formule par un résultat fini.
La macro suivante effectue ce remplacement lors du changement d’état.
Code :
1
2
3
4
5
6
7
8
 Private Sub Worksheet_Change(ByVal Target As Range)
'Si le changement se produit dans une cellule de la colonne C (et une seule)
If Not Intersect(Target, Columns(3)) Is Nothing And Target.Count = 1 Then
    'Si la valeur de la cellule modifiée est "Pourvu", _
    inscrire le nombre de jours entre la date de création du poste et aujourdh'hui.
    If Target.Value = "Pourvu" Then Target.Offset(0, -1).Value = Date - Range("A" & Target.Row)
End If
End Sub
Cordialement.
gFZT82 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/01/2012, 14h28   #4
Invité de passage
 
Femme
Étudiant
Inscription : janvier 2012
Messages : 19
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : janvier 2012
Messages : 19
Points : 4
Points : 4
Bonjour Corona,

En fait je souhaite que quand ma cellule "Postes restants" est à 0, que dans ma cellule "Jours passés" qui a comme formule : =AUJOURDHUI()-date création poste s'arrête tout simplement.

Admettons aujourd'hui je viens d'embaucher une personne, le poste n'est plus à pourvoir. Dans ma cellule "Postes restants" ma ligne est à 0, et dans ma cellule "Jours passés" ma ligne est à 82 (jours).

Ce que je souhaite c'est que demain en ouvrant mon fichier excel ma cellule "Jours passés" reste à 82 jours et non 83 jours, etc...

Bonjour gFZT82,

Je ne connais pas super bien excel et je ne connais pas du tout les macros...

Comment dois-je procéder pour mettre en place la macro que vous m'avez donné ?

Cordialement.
Fraizou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/01/2012, 14h36   #5
Membre expérimenté
 
Homme René LE CORNEC
Assistant aux utilisateurs
Inscription : septembre 2007
Messages : 1 114
Détails du profil
Informations personnelles :
Nom : Homme René LE CORNEC
Âge : 51
Localisation : France

Informations professionnelles :
Activité : Assistant aux utilisateurs
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : septembre 2007
Messages : 1 114
Points : 513
Points : 513
Bonjour,

Vous faites ALT + F11.

Vous allez arriver dans le gestionnaire de Macros d'Excel. Vous recherchez dans une colonne à gauche le nom de la feuille dans laquelle vous devez copier cette macro.

Vous recopiez les données en veillant à bien modifier la macro par rapport à vos données. Vérifiez également que votre degrés de sécurité vous permette l'utilisation des marcos.

A votre service

René
__________________
"Le savoir est la seule matière qui s'accroit quand on la partage" (Socrate)
NEC14 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/01/2012, 14h41   #6
Expert Confirmé
 
Philippe Tulliez
Développeur et formateur VBA, Excel et Word.
Inscription : janvier 2010
Messages : 1 313
Détails du profil
Informations personnelles :
Nom : Philippe Tulliez
Localisation : Belgique

Informations professionnelles :
Activité : Développeur et formateur VBA, Excel et Word.

Informations forums :
Inscription : janvier 2010
Messages : 1 313
Points : 2 679
Points : 2 679
Bonjour,
Sans code VBA, tu prévoies une cellule pour la date d'engagement et tu fais précéder ta formule de calcul de jours par un SI
Petit exemple simple sans tenir compte des jours ouvrés et donc à adapter.
En A2, date de recherche du poste et en B2, date à laquelle elle est engagée.
Code :
=SI(B2;B2-A2;AUJOURDHUI()-A2)
__________________
Philippe Tulliez
http://philippe.tulliez.be
Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)

Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
corona est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/01/2012, 14h44   #7
Membre Expert
 
Homme
Retraité
Inscription : avril 2011
Messages : 697
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Retraité

Informations forums :
Inscription : avril 2011
Messages : 697
Points : 1 457
Points : 1 457
Tu copies le code que je t’ai transmis (sélectionner tout / CTRL + C)
Depuis ton classeur Excel, tu entres dans l’éditeur par ALT + F11 (ou via menu Développeur / Visual Basic).
Dans l’éditeur, tu double-clique sur la feuille concernée Feuil1 (Feuil1) par exemple pour accéder au code de la feuille.
Et tu colles le code (CTRL + V) .

Cordialement.
gFZT82 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/01/2012, 15h04   #8
Invité de passage
 
Femme
Étudiant
Inscription : janvier 2012
Messages : 19
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : janvier 2012
Messages : 19
Points : 4
Points : 4
Alors je suis entrée dans l'éditeur, j'ai bien copié/collé le code et après que dois-je faire ?
Fraizou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/01/2012, 15h16   #9
Membre Expert
 
Homme
Retraité
Inscription : avril 2011
Messages : 697
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Retraité

Informations forums :
Inscription : avril 2011
Messages : 697
Points : 1 457
Points : 1 457
Tu n'a rien à faire

Lorsqu'un changement est détecté dans la feuille, cet événement est détecté et l'application provoque le lancement de la procédure (Worksheet_Change).

Fais le test en passant un état à "Pourvu".

Cordialement.
gFZT82 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/01/2012, 15h32   #10
Invité de passage
 
Femme
Étudiant
Inscription : janvier 2012
Messages : 19
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : janvier 2012
Messages : 19
Points : 4
Points : 4
Mais que je passe de l'état "Non Pourvu" à "Pourvu je ne vois rien qui change... Ce n'est pas plutôt par rapport à ma "Date du jour" et ma "Date création de poste" ?

Je peux toujours mettre en pièce jointe mon fichier...
Fraizou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/01/2012, 15h35   #11
Membre Expert
 
Homme
Retraité
Inscription : avril 2011
Messages : 697
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Retraité

Informations forums :
Inscription : avril 2011
Messages : 697
Points : 1 457
Points : 1 457
Fais donc voir le fichier réticent
gFZT82 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/01/2012, 15h41   #12
Membre expérimenté
 
Homme René LE CORNEC
Assistant aux utilisateurs
Inscription : septembre 2007
Messages : 1 114
Détails du profil
Informations personnelles :
Nom : Homme René LE CORNEC
Âge : 51
Localisation : France

Informations professionnelles :
Activité : Assistant aux utilisateurs
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : septembre 2007
Messages : 1 114
Points : 513
Points : 513
A mon avis, le résultat ne se verra que demain puisque cela s'applique à la date du jour.

Peut-être dis-je une bétise !!
__________________
"Le savoir est la seule matière qui s'accroit quand on la partage" (Socrate)
NEC14 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/01/2012, 15h41   #13
Invité de passage
 
Femme
Étudiant
Inscription : janvier 2012
Messages : 19
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : janvier 2012
Messages : 19
Points : 4
Points : 4
Voilà le tableau !
Fichiers attachés
Type de fichier : xls Tableau Reporting Recrutement.xls (90,5 Ko, 4 affichages)
Fraizou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/01/2012, 15h58   #14
Invité de passage
 
Femme
Étudiant
Inscription : janvier 2012
Messages : 19
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : janvier 2012
Messages : 19
Points : 4
Points : 4
Effectivement NEC14, je pensais aussi à cela...
Fraizou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/01/2012, 16h24   #15
Membre Expert
 
Homme
Retraité
Inscription : avril 2011
Messages : 697
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Retraité

Informations forums :
Inscription : avril 2011
Messages : 697
Points : 1 457
Points : 1 457
La méthode Worksheet_Change prend en compte le changement effectué sur une cellule cible (Target). Le code est conçu pour prendre en compte un changement effectué la colonne cible « Etat ».

Or, dans ton cas, le changement s’effectue sur une cellule de la colonne « Poste restant ».
Lorsque le nombre de poste passe à 0, tu fais passer l’état à « Pourvu ».

Code :
1
2
3
4
5
6
7
8
Private Sub Worksheet_Change(ByVal Target As Range)
'Si le changement se produit dans une cellule de la colonne F (Poste restant)
If Not Intersect(Target, Columns("F")) Is Nothing And Target.Count = 1 Then
    'Si la valeur de l’état est "Pourvu", _
    inscrire le nombre de jours entre la date de création du poste et aujourdh'hui.
    If Target.Offset(0, 3).Value = "Pourvu" Then Target.Offset(0, 2).Value = Date - Range("G" & Target.Row)
End If
End Sub
Tu noteras bien que initialement la cellule de la colonne H (Jours passés) contient une formule =SI(G9<>"";AUJOURDHUI()-G9;"")
Lorsque tu vas passer le nombre de poste à 0, la valeur de l’état passera à "Pourvu" et le nombre de jours passés sera figée (la formule disparait)… c’est magique !

Prends bien le temps de comprendre le code et n’hésites pas à nous questionner si besoin.

Cordialement.
Fichiers attachés
Type de fichier : xls Reporting Recrutement.xls (68,0 Ko, 4 affichages)
gFZT82 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/01/2012, 16h39   #16
Invité de passage
 
Femme
Étudiant
Inscription : janvier 2012
Messages : 19
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : janvier 2012
Messages : 19
Points : 4
Points : 4
Merci beaucoup ! Effectivement je vais prendre le temps pour comprendre ce code surtout que je ne connaissais pas du tout les macros...

Par contre je voudrais savoir, si après avoir passé le poste à 0 je le repasse à 1, la formule qui a disparu reviendra automatiquement ?
Fraizou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/01/2012, 16h51   #17
Membre Expert
 
Homme
Retraité
Inscription : avril 2011
Messages : 697
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Retraité

Informations forums :
Inscription : avril 2011
Messages : 697
Points : 1 457
Points : 1 457
Voici la modification qui prend en compte le retour de la formule
(quand je te dis que c'est magique !)
Code :
1
2
3
4
5
6
7
8
9
10
11
12
Private Sub Worksheet_Change(ByVal Target As Range)
'Si le changement se produit dans une cellule de la colonne F (Poste restant)
If Not Intersect(Target, Columns("F")) Is Nothing And Target.Count = 1 Then
    'Si la valeur de l'état est "Pourvu", _
    inscrire le nombre de jours entre la date de création du poste et aujourdh'hui.
    If Target.Offset(0, 3).Value = "Pourvu" Then
        Target.Offset(0, 2).Value = Date - Range("G" & Target.Row)
    Else
        Target.Offset(0, 2).Formula = "=IF(G" & Target.Row & "<>"""",TODAY()-G" & Target.Row & ","""")"
    End If
End If
End Sub
Cordialement.
gFZT82 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/01/2012, 09h05   #18
Invité de passage
 
Femme
Étudiant
Inscription : janvier 2012
Messages : 19
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : janvier 2012
Messages : 19
Points : 4
Points : 4
Bonjour gFZT82,

Merci beaucoup pour cette modification. Effectivement c'est magique !!Maintenant il va falloir que j'apprenne à me familiariser avec cette macro !
Tu connais peut être un bon site qui explique l'utilisation des macros ? Comme une sorte de "Mode Opératoire"...

Et encore merci !! Depuis le temps que je cherchais à figer cette colonne !

Cordialement
Fraizou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/01/2012, 09h34   #19
Membre Expert
 
Homme
Retraité
Inscription : avril 2011
Messages : 697
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Retraité

Informations forums :
Inscription : avril 2011
Messages : 697
Points : 1 457
Points : 1 457
Bonjour,

Pour commencer, je te conseille ce document
http://bidou.ftp-developpez.com/Cour...rmationVBA.pdf

Pour compléter, tu as l'aide VBA qui est très riche, l'enregistreur de macro qui est également d'une grande aide pour l'apprentissage.
Ensuite, le site Developpez te permettra de trouver la plupart des réponses à tes questions.
Et enfin, il y a le forum pour l’entraide.

Bon courage

Cordialement.
gFZT82 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 14h03.


 
 
 
 
Partenaires

Hébergement Web