Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel
Excel Forum d'entraide sur Excel. Vos questions sur les fonctions, formules, manipulations, et tout sujet qui ne trouve pas sa place dans un sous-forum.
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 22/12/2010, 12h43   #1
Invité de passage
 
Inscription : août 2010
Messages : 28
Détails du profil
Informations forums :
Inscription : août 2010
Messages : 28
Points : 0
Points : 0
Par défaut Tacite reconduction d'un contrat avec mise à jour de la date

Bonjour à tous.

Je viens de nouveau soliciter votre aide.

J'ai fait un tableau pour les contrats de maintenance et parmi ceux ci, il y en a qui se renouvellent par tacite reconduction.

Colonne a = mettre 1 pour un contrat avec tacite reconduction ou 0 sans tacite reconduction.

Colonne b= date du début du contrat.

Colonne c = date fin du contrat.

Je souhaiterais que lorsque la date de la colonne c arrive à terme que la date de la colonne b se remette à la nouvelle date.

Exemple colonne a = 1
colonne b = 1/01/2010
colonne c = 31/12/2010


Il faudrait que la colonne b passe au 1/01/2011 le moment venu.

J'espère être assez clair dans mon explication et j'attends votre aide avec impatience.

Merci à tous.

Dominique
pouldom est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/12/2010, 09h53   #2
Membre Expert
 
Avatar de rtg57
 
Homme
Autodidacte
Inscription : mars 2006
Messages : 1 175
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Autodidacte
Secteur : Service public

Informations forums :
Inscription : mars 2006
Messages : 1 175
Points : 1 435
Points : 1 435
Bonjour,

à mon avis, il faut passer par une macro en VBA.
L'idée serait:
* A l'ouverture du classeur, parcourir la colonne C, à la recherche d'une date qui correspond à la date du jour.
* Si un cas est trouvé, alors vérifier dans la colonne A, si elle est à '1' (Tacite reconduction)
-> Si "OUI", alors copier la valeur de la colonne C dans la colonne B
-> Ajouter 1 an à la valeur de la colonne C

En espérant que cela vous aide, @ bientôt...
__________________
@ bientôt...

Salut & @+ sur 3W!
rtg57 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/12/2010, 10h14   #3
Expert Confirmé
 
Philippe Tulliez
Développeur et formateur VBA, Excel et Word.
Inscription : janvier 2010
Messages : 1 299
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 299
Points : 2 645
Points : 2 645
Bonjour,
Sauf si tu passes par des cellules intermédiaires, il faut effectivement passer par une macro.
Tu pourrais par exemple placer en
Colonne A - 1 ou 0 (suivant qu'il y a reconduction)
Colonne B - Date début du contrat
Colonne C - Périodicité (en mois 12, 6, 3, 1) ou A, S, T, M
Colonne D - Date début de la péridoe - (A l'aide de fonction logique et DATEDIF ou DATE, calculer à partir de la date de la colonne B
Colonne E - Date de fin de période. D + Périodicité
Ainsi tu peux le faire avec les fonctions d'Excel.
Bonne journé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 déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/12/2010, 09h37   #4
Invité de passage
 
Inscription : août 2010
Messages : 28
Détails du profil
Informations forums :
Inscription : août 2010
Messages : 28
Points : 0
Points : 0
Bonjour,

Tout d'abord merci d'avoir répondu à mon message.

mais je n'y connais pas grand chose en vba et je ne sais comment m'y prendre.

Pouvez vous me proposer une macro , tout en m'expliquant afin de comprendre .

Merci d'avance

Cordialement.
pouldom est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/12/2010, 09h56   #5
Expert Confirmé
 
Philippe Tulliez
Développeur et formateur VBA, Excel et Word.
Inscription : janvier 2010
Messages : 1 299
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 299
Points : 2 645
Points : 2 645
Bonjour,
Comme indiqué dans ma réponse, il n'est absolument pas nécessaire de passer par une macro si l'on passe pas une cellule intermédiaire
J'ai placé en
A1, N° de contrat
B1 1ère Date de mise en route du contrat
C1 Période (en nombre de mois)
D1 Reconduction 1 si tacite 0 si non
E1 Début (Date de début du contrat
F1 Fin (Date de fin de contrat
soit Contrat 1èreDate Période Reconduction Début Fin
Fonction à placer en E2 et à recopier vers le bas
Attention en J1 Simulation de la date du jour. Remplacer $J$1 par aujourdhui()
Code :
=SI(C2;DATE(ANNEE(B2);MOIS(B2)+D2*ENT(DATEDIF(B2;$J$1;"m")/C2)*C2;JOUR(B2));"")
Fonction à placer en F2
Code :
=SI(C2;DATE(ANNEE(E2);MOIS(E2)+C2;JOUR(E2));"")
Voir fichier exemple
Fichiers attachés
Type de fichier : xls 20101225 dvp Reconduction Automatique Date Contrat.xls (37,0 Ko, 6 affichages)
__________________
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 déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/12/2010, 13h14   #6
Invité de passage
 
Inscription : août 2010
Messages : 28
Détails du profil
Informations forums :
Inscription : août 2010
Messages : 28
Points : 0
Points : 0
Bonjour,

Merci de votre réponse, je vais tester et je vous tiens au courant de mon avancé.

C'est vraiment trés sympa de partager votre savoir.

Cordialement.

Dominique.
pouldom est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/12/2010, 12h02   #7
Invité de passage
 
Inscription : août 2010
Messages : 28
Détails du profil
Informations forums :
Inscription : août 2010
Messages : 28
Points : 0
Points : 0
Bonjour,

Si j'ai bien compris je remplace dans la formule $J$1 par aujourdhui()

Cordialement

Dominique.
pouldom est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/12/2010, 12h29   #8
Expert Confirmé
 
Philippe Tulliez
Développeur et formateur VBA, Excel et Word.
Inscription : janvier 2010
Messages : 1 299
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 299
Points : 2 645
Points : 2 645
Bonjour Dominique,
Exactement il faut remplacer $J$1 par la date du jour qui est calculée par la fonction AUJOURDHUI() pour les version française et par TODAY() pour les versions anglaise.
La cellule $J$1 ne servait que pour faire une simulation d'une date du jour.
Code :
=SI(C2;DATE(ANNEE(B2);MOIS(B2)+D2*ENT(DATEDIF(B2;AUJOURDHUI();"m")/C2)*C2;JOUR(B2));"")
L'autre option est de placer en $J$1 la fonction AUJOURDHUI() et de laisser la fonction faire référence à cette cellule
Bonne journé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 déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/12/2010, 14h04   #9
Invité de passage
 
Inscription : août 2010
Messages : 28
Détails du profil
Informations forums :
Inscription : août 2010
Messages : 28
Points : 0
Points : 0
Bonjour,

Et bien merci de ton aide.

Cordialement et bonne fête de fin d'année.

Une bonne fête de fin d'année aussi à tous les participants de ce forum et encore merci pour l'aide que vous apportez aux débutant comme moi.

Dominique
pouldom est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/12/2010, 11h48   #10
Invité de passage
 
Inscription : août 2010
Messages : 28
Détails du profil
Informations forums :
Inscription : août 2010
Messages : 28
Points : 0
Points : 0
Bonjour à tous,

Je souhaiterais savoir comment faire pour appliquer une macro en VBA à toutes les feuilles du même classeur, pour éviter de refaire la même macro à chaque feuille du classeur.

Merci d'avance pour votre aide.

Dominique.
pouldom est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/12/2010, 14h40   #11
Membre Expert
 
Avatar de rtg57
 
Homme
Autodidacte
Inscription : mars 2006
Messages : 1 175
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Autodidacte
Secteur : Service public

Informations forums :
Inscription : mars 2006
Messages : 1 175
Points : 1 435
Points : 1 435
Bonjour,

dans une macro placée par exemple dans le module ThisWorkbook, vous pouvez écrire quelque chose qui ressemble à cela:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Private Sub DEPANNAGE()
  Dim ObjetXL As Object ' ObjetXL représentera les feuilles du classeur
 
  For Each ObjetXL In Sheets ' Parcourt tous les objets 'Feuille' dans la collection de feuilles du classeur
    ObjetXL.Activate ' Active la feuille
 
    If ActiveSheet.Name <> "Ouvre" Then
      ActiveWindow.DisplayHeadings = True
    End If
 
    ActiveWindow.Zoom = 100
 
  Next ObjetXL
end sub
C'est un exemple qui parcourt toutes les feuilles au démarrage du classeur pour mettre le zoom à 100%.
Et lorsque la macro rencontre la feuille qui s'appelle "ouvre", elle force l'affichage des en-têtes.

En espérant que cela réponde à votre question...
__________________
@ bientôt...

Salut & @+ sur 3W!
rtg57 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/12/2010, 15h08   #12
Invité de passage
 
Inscription : août 2010
Messages : 28
Détails du profil
Informations forums :
Inscription : août 2010
Messages : 28
Points : 0
Points : 0
Bonjour,

Merci pour ta réponse que je vais m'empresser de tester.

Bonne fête de fin d'année.

Cordialement

Dominique.
pouldom est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 07h42.


 
 
 
 
Partenaires

Hébergement Web