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 :

Créer un historique de valeur


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2012
    Messages : 4
    Par défaut Créer un historique de valeur
    Bonjour à tous,

    Je sollicite votre aide car je suis plus que novice sur VBA et j'ai besoin de ce fichier pour mon stage en entreprise.

    Je vais essayer d'être le plus claire possible dans l'explication de mon problème:

    Je souhaite copier une valeur et la coller dans un tableau selon deux conditions.

    Dans mon fichier joint je souhaite que la valeur d'avancement soit copier et coller dans mon tableau (de A14 à FA17) :
    -sur la ligne "indicateur"
    -à l'emplacement qui correspond à l'année (B7)
    -à l'emplacement qui correspond à la semaine(B8)

    et ceci en cliquant sur le bouton "save".

    Merci d'avance pour toutes vos réponses
    (Je suis sur excel 2010 si cela peut changer quelque chose)
    Fichiers attachés Fichiers attachés

  2. #2
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    mon connaissances étant faibles, voici la macro à intégrer pour ton bouton "SAVE", macro on ne peut plus simpliste:

    - tu indiques l'avancement en B3
    - tu indiques l'année en B7
    - tu indiques le numéro de semaine en B8

    ==> en pressant le bouton, la valeur d'avancement va se reporter dans "indicateur" de la semaine/année choisie.

    La macro fonctionne sans distinction des majuscules ou minuscules (donc S1 et s1 fonctionnent par exemple)

    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
    17
    18
     
    Option Compare Text
    Sub test()
     
    Dim Cell As Range
    Dim Cella As Range
     
    For Each Cell In Range("B14", "FA14")
        If Cell = Range("B7") Then
            For Each Cella In Range("B15", "FA15")
                If Cella = Range("B8") Then
                    Cella.Offset(2, 0) = Range("B3")
                End If
            Next Cella
        End If
    Next Cell
     
    End Sub
    Espérant t'avoir quelque peu dépanné.

    Cordialement.

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2012
    Messages : 4
    Par défaut
    Bonjour joe.levrai,

    Avant tout chose merci de ta réponse et de la rapidité avec laquelle tu as répondu à mon problème.

    Le code fonctionne bien à une petite chose près, c'est que la valeur d'avancement se colle dans dans les 3 années (2012, 2013 et 2014). Quelle manipulation puis-je faire pour qu'il soit écrit uniquement sur l'année affichée en B7?

    Merci d'avance
    Cordialement

  4. #4
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    au temps pour moi, je n'avais pas prêté attention à cette anomalie !

    J'ai simplement ajouté une sortie de macro après la recopie dans la bonne cellule, ce qui neutralise les deux copies suivantes (2013 et 2014 dans l'exemple).

    Je le redis, ce code est très (trop?) simpliste, il est largement optimisable !

    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
    17
    18
    19
    20
    21
     
     
     
    Option Compare Text
    Sub test()
     
    Dim Cell As Range
    Dim Cella As Range
     
    For Each Cell In Range("B14", "FA14")
        If Cell = Range("B7") Then
            For Each Cella In Range("B15", "FA15")
                If Cella = Range("B8") Then
                    Cella.Offset(2, 0) = Range("B3")
                    Exit Sub
                End If
            Next Cella
        End If
    Next Cell
     
    End Sub

    Sinon une autre possibilité : on recoupe l'année souhaitée lorsqu'on identifie la semaine, mais le code semble un peu plus long à tourner :

    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
    17
    18
     
    Option Compare Text
    Sub test()
     
    Dim Cell As Range
    Dim Cella As Range
     
    For Each Cell In Range("B14", "FA14")
        If Cell = Range("B7") Then
            For Each Cella In Range("B15", "FA15")
                If Cella = Range("B8") And Cella.Offset(-1, 0) = Range("B7") Then
                    Cella.Offset(2, 0) = Range("B3")
                End If
            Next Cella
        End If
    Next Cell
     
    End Sub
    Ps : Merci à fring d'avoir édité mon Quote en Code

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2012
    Messages : 4
    Par défaut
    Joe.levrai,

    Ce code "trop" simpliste convient très bien pour l'utilisation que j'ai de mon fichier et grâce à ta modification il est parfaitement opérationnel, c'est le plus important pour moi.

    Je te remercie encore une fois pour ton aide et la rapidité de tes réponses

  6. #6
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    J'ai supprimé une partie du code, ça évite la redondance de recherche de l'année, ça permet un gain de temps :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
     
    Option Compare Text
    Sub test()
     
    Dim Cella As Range
     
    For Each Cella In Range("B15", "FA15")
        If Cella = Range("B8") And Cella.Offset(-1, 0) = Range("B7") Then
            Cella.Offset(2, 0) = Range("B3")
        End If
    Next Cella
     
    End Sub

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2012
    Messages : 4
    Par défaut
    Impeccable, merci pour la mise à jour

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

Discussions similaires

  1. Créer un historique dynamique
    Par nova313 dans le forum Langage
    Réponses: 2
    Dernier message: 03/03/2008, 09h45
  2. Réponses: 4
    Dernier message: 30/08/2007, 15h09
  3. [Conception]Créer lien à partir de valeur table
    Par juju37 dans le forum Modélisation
    Réponses: 5
    Dernier message: 10/04/2007, 14h31
  4. Réponses: 24
    Dernier message: 18/06/2006, 19h31
  5. créer une liste de valeurs autorisées pour un champ
    Par elitol dans le forum MS SQL Server
    Réponses: 9
    Dernier message: 01/06/2006, 17h37

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