IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Déplacer des données à l'aide d'une date T0 [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Avril 2011
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2011
    Messages : 17
    Par défaut Déplacer des données à l'aide d'une date T0
    Bonjour à tous, je vais essayer d'etre plus clair que mon titre rassurez vous

    J'ai une charge de travail qui représente 50h le premier mois, 80h le deuxième...(la charge peut s'étaler sur de nombreux mois). Ces charges de travail sont soumises à l'acceptation d'un contrat à partir d'une date T0 fixé au 01/09/2011 par exemple.

    En fonction de diverses réflexions, négociations... le T0 est susceptible de changer.

    Je souhaiterais pouvoir représenter dans un tableau puis dans un graphe la charge du service en fonction de différentes hypothèse de T0.

    J'imaginai une feuille ou je mettrai la date T0 prévu et ensuite le profil de la charge mois par mois et une deuxième feuille qui positionnerai la charge dans un espèce de "calendrier" en fonction du T0. Le but étant de déplacer toute la charge juste en changeant le T0.

    J'attend vos suggestions avec impatience...
    Par avance Merci

  2. #2
    Expert confirmé
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    4 128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 128
    Par défaut
    Salut
    Pour l'espece de calendrier, pourquoi pas un diagramme de Gantt?

    A mon avis ta question étant donnée l'avancement de ton projet, tu devrais demander a un modo de la basculer dans le forum Conception.

    [Edit]
    Tu as aussi ça, c'est un calendrier perpétuel que j'avais mis en Contribution.
    Je l'ai refait au format 2007 il faudrait que je mette a jour le post.

    ++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  3. #3
    Membre averti
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Avril 2011
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2011
    Messages : 17
    Par défaut
    Citation Envoyé par Qwazerty Voir le message
    Salut
    Pour l'espece de calendrier, pourquoi pas un diagramme de Gantt?
    Merci pour ta réponse, j'ai jeté un oeil à ce diagramme de gant, mais ce n'est pas un diagramme de gantt que je veux. C'est plutot une courbe de charge. En fait, j'ai plusieurs taches avec des T0 que je veux faire varier et ensuite je compte faire la somme pour chaque mois afin d'avoir le profil de la charge complète du service.
    A+

  4. #4
    Expert confirmé Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 756
    Par défaut
    Bonjour,

    Un bon exemple vaut mieux qu'un ...

  5. #5
    Membre averti
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Avril 2011
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2011
    Messages : 17
    Par défaut
    Voici l'exemple. Mon souhait est de pouvoir déplacer la charge en marron (sur la feuille 2) des contrats dont le début est Janvier 2012 pour le contrat 1 et Avril 2012 pour le contrat 2.

    Ex : Si je remplace janvier 2012 par Mars 2012, la charge du contrat 1 doit se décaler de 2 mois sur la droite...

    J'espère que cette fois je suis compréhensible
    Fichiers attachés Fichiers attachés

  6. #6
    Expert confirmé Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 756
    Par défaut
    Voici une proposition

    Ajout dans Feuil 1 d'une colonne entre après la colonne B(Date)
    Cette nouvelle colonne retourne premiere colonne de destination de la feuil2
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =EQUIV(B2;Feuil2!$1:$1;0)
    Ensuite dans l’événement Worksheet_Change de la Feuil1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    Private Sub Worksheet_Change(ByVal Target As Range)
     
    Dim rg As Range
     
     
    'Test si colonne > C
    If Target.Column > 3 Then
        Set rg = Sheets("Feuil2").Range("A:A").Find(Range("A" & Target.Row).Value)
        If rg Is Nothing Then Exit Sub
        Target.Copy Sheets("feuil2").Cells(rg.Row, 10 + Target.Column - 4)
     
    End If
     
     
    End Sub
    Le fichier avec tout ca
    Copie de Courbe-Charge.xls

    Me dire si ca te convient

  7. #7
    Expert confirmé
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    4 128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 128
    Par défaut
    Salut
    Peux tu expliquer comment sont saisis les charge? tu les rentre manuellement? Les valeur de charge pour chaque mois sont déterminées comment?

    ++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  8. #8
    Membre averti
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Avril 2011
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2011
    Messages : 17
    Par défaut
    Je saisie les charge manuellement dans la feuille 1 et je souhaite qu'elles se positionnent automatiquement au bon endroit dans la feuille 2 (en fonction du T0).

  9. #9
    Expert confirmé
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    4 128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 128
    Par défaut
    Oupss, je n'avais pas vu la feuille2...
    Comme ça?
    Fichiers attachés Fichiers attachés

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  10. #10
    Membre averti
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Avril 2011
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2011
    Messages : 17
    Par défaut
    Exactement ce que je voulais... J'ai compris comment ca marche, je n'avais pas vu les formules

    Maintenant j'ai une question jocker pour compliquer mon problème. Le mois d'aout est un mois comptabilisé comme non travaillé. Du coup il faudrait réussir à faire ce que tu as fais mais dans un calendrier qui n'a pas de mois d'aout...

    J'essaye de comprendre comment marche ta proposition, mais comme je suis un peu limité en vba j'ai du mal. Pourtant je pense qu'elle pourrait solutionner mon problème de mois d'aout non travaillé.

    J'ai téléchargé ton fichier mais rien ne se passe quand je change mes dates de T0, il y a quelque chose à faire?

  11. #11
    Expert confirmé Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 756
    Par défaut
    Sur cette version, tu rentres les informations sur la feuil1 dans les colonnes D à N et la macro copie la saisie sur la feuil2 (en recherchant la ligne du bon contrat)

  12. #12
    Membre averti
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Avril 2011
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2011
    Messages : 17
    Par défaut
    Ok, j'ai réussi à ajouter des valeurs par contre ca ne prend en compte que les nouvelles saisies.
    Est ce qu'il n'est pas possible de réactualiser à chaque fois toutes les valeurs pour que le nouveau T0 soit pris en compte pour obtenir un fonctionnement comme la solution que propose qwazerty?

  13. #13
    Expert confirmé Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 756
    Par défaut
    Cette version met a jour tout le tableau a l'actvation de la feuil2
    A copier dans sur la feuil2
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Private Sub Worksheet_Activate()
    Dim i As Long
    Dim rg As Range
     
    For i = 2 To Sheets("Feuil1").Range("A:A").End(xlDown).Row
        Set rg = Sheets("Feuil2").Range("A:A").Find(Sheets("feuil1").Range("A" & i).Value)
        If rg Is Nothing Then Exit Sub
        Sheets("Feuil1").Range("D" & i & ":N" & i).Copy Sheets("feuil2").Cells(rg.Row, Sheets("Feuil1").Range("C" & i).Value)
        Set rg = Nothing
    Next i
     
    End Sub

  14. #14
    Expert confirmé
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    4 128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 128
    Par défaut
    Salut
    Pour faire sans le mois d’août, le plus simple et de supprimer le mois d’Août au niveau de ta feuille2. Sinon il doit être possible de modifier un peu la formule.

    ++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  15. #15
    Membre averti
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Avril 2011
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2011
    Messages : 17
    Par défaut
    Citation Envoyé par Qwazerty Voir le message
    Salut
    Pour faire sans le mois d’août, le plus simple et de supprimer le mois d’Août au niveau de ta feuille2.
    Salut Qwaz, Je compte effectivement supprimer le mois d'aout dans la feuille 2. Mais le problème avec les formules c'est que du coup je perd 1 mois de charge.

    ex :
    Mois T0 = 30h, T0+1 = 50h, T0+2 = 80h
    Si T0 est le mois de juillet, je vais obtenir :
    Juillet 30h, Septembre 80h et les 50h du T0+1 vont disparaitre.

    J'avais déjà eu des problématiques similaires pour supprimer le mois d'aout et les formules se transforment vite en usine à gaz. C'est pour quoi je m'orientai plus sur une solution VBA. Mais je n'ai pas suffisament de connaissance pour traduire ce que je veux faire en language VBA.

    - Je souhaiterai mettre les infos à la main dans la feuille 1
    - faire une boucle tant qu'il y a un contrat dans la colonne 1 de la feuil1
    - lire le T0 du contrat
    - aller dans la feuille 2 chercher dans la première ligne la colonne (X) du T0, chercher dans la 1ere colonne la ligne (Y) du contrat
    - coller toutes les valeurs du contrat à partir de la cellule (XY)
    - passer au contrat suivant...

    Citation Envoyé par jfontaine Voir le message
    Cette version met a jour tout le tableau a l'actvation de la feuil2
    Nickel Jfontaine, je n'arrivais pas à comprendre comment fonctionnait la macro donc je l'ai associée à un bouton et j'ai également mis un titre dans la cellule A1 de la feuille 1 pour que le End(xlDown).Row aille bien jusqu'à la fin de la colonne (sinon il s'arretait à la ligne 2).
    Ca marche très bien, il faut juste que j'arrive à effacer les données avant de réactualiser le tableau sinon j'ai des charges qui restent.

    ex :
    si j'ai 50h en janvier et que je déplace mon T0 à Février la charge de janvier va rester...

    Merci encore

  16. #16
    Membre averti
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Avril 2011
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2011
    Messages : 17
    Par défaut
    Ca y est j'ai réussi, merci à vous tous...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
     
    Sub Macro2()
     
    Dim i As Long
    Dim rg As Range
     
    For i = 2 To Sheets("Feuil1").Range("A:A").End(xlDown).Row
        Set rg = Sheets("Feuil2").Range("A:A").Find(Sheets("feuil1").Range("A" & i).Value)
        If rg Is Nothing Then Exit Sub
        Sheets("Feuil2").Range("B" & i & ":Z" & i).Clear
        Sheets("Feuil1").Range("D" & i & ":Z" & i).Copy Sheets("feuil2").Cells(rg.Row, Sheets("Feuil1").Range("C" & i).Value)
        Set rg = Nothing
    Next i
     
    End Sub

  17. #17
    Expert confirmé
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    4 128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 128
    Par défaut
    Salut
    Une question, les projets s'étalent toujours sur 10 mois? ou ils peuvent s'étaler sur plus?
    ++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 7
    Dernier message: 24/01/2012, 18h55
  2. Réponses: 18
    Dernier message: 26/06/2008, 10h10
  3. [Formulaire] Rechercher des données à l'aide d'une zone de texte
    Par rantanplan81 dans le forum VBA Access
    Réponses: 4
    Dernier message: 14/06/2007, 14h25
  4. [VBA-E]Transfere des données d'Excel dans une table Access
    Par flo83 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 07/04/2006, 09h22
  5. Création requete besoin d'aide pour une date
    Par royrremi dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 14/07/2004, 22h03

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo