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

Excel Discussion :

Transcrire la valeur d'une cellule sur une autre feuille, sans écraser les précédentes saisies


Sujet :

Excel

  1. #1
    Futur Membre du Club
    Femme Profil pro
    secrétaire comptable
    Inscrit en
    Février 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : secrétaire comptable

    Informations forums :
    Inscription : Février 2014
    Messages : 5
    Points : 5
    Points
    5
    Par défaut Transcrire la valeur d'une cellule sur une autre feuille, sans écraser les précédentes saisies
    Bonsoir,

    Je suis actuellement confrontée à un problème insoluble à mon petit niveau...
    J'ai fouiné dans le forum tout l'après-midi et trouvé une discussion approchante, mais j'ai beau essayé de me l'approprier, ça ne fonctionne pas.
    J'ai découvert aujourd'hui même VBA ! J'avoue que je suis perdue mais curieuse et débrouillarde.

    Voici mon cas.

    Mon classeur contient 2 feuilles :
    - Feuille 1 = trame de facture
    - Feuille 2 = suivi des factures émises

    Je souhaite automatiser la feuille 2 :
    - pour que les champs soient alimentés si je modifie la feuille 1 (jusque là, j'y arrive),
    - pour que les cellules remplies automatiquement soient directement transcrites en valeur (là, je n'y arrive qu'en manuel),
    - pour que les modifications de la feuille 1 génère une nouvelle ligne sur la feuille 2 (là, je sais pas) en décalant les données précédentes vers le bas mais évidemment sans les écraser.

    J'espère être assez explicite... Je mets le fichier en PJ, ce sera peut-être plus clair.

    Je travaille habituellement sur XL 2007 mais en ce moment sur XL MAC 2011.

    Pouvez-vous m'aider ? S'il vous plaît ? D'avance un grand merci.
    Fichiers attachés Fichiers attachés

  2. #2
    Membre du Club
    Homme Profil pro
    amateur
    Inscrit en
    Avril 2013
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : amateur
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2013
    Messages : 38
    Points : 66
    Points
    66
    Par défaut
    Bonjour Valweb80,

    Je voudrais un peu plus de détail afin de te répondre au mieux.
    Si j'ai bien compris :

    Tu veux entrer dans ta feuille "Trame de Facture" les éleménts suivants
    Numéros de facture, Date, Client, Objet, Total
    Une fois tous entré tu veux mettre à jours la feuille "SUIVI", jusque là c'est OK

    Les questions qui me viennent sont :
    Veux-tu stocker chaque facture une fois fini?
    Si oui tu ne peux pas mettre de fonction de ce type :
    dans les cellules car elle vont toujours faire références à la cellule G5 de ta feuille "Trame de Facture", ça implique que si tu change le nom de ta feuille (pour pouvoir les différencier) ça ne fonctionnera plus.
    Une fois stocké t'arrive-t-il de les modifier par la suite?

    Et si tu ne la stockes pas (tu ré-écrit sur la même trame), et bien elle fera référence à la nouvelle facture mais plus à l'ancienne.
    Conclusion il faut garder les valeurs (dans ta feuille "SUIVI") mais pas les formules.

    Pour ce qui est du client tu ne prévois qu'une cellule donc cela implique de mettre toute les références client dans un seule cellule (pas possible de mettre le nom dans une cellule et l'adresse dans une autre, par exemple)
    RQ : On peut modifier ça si tu as besoin.

    Le montant est en G27, que ce passe-t-il si il y a trop de produit et donc que le montant se décalle plus bas? Faut-il le prévoir?

    En attente de tes réponses au question pour bien cybler la demande.
    Par contre il faudra partir sur une macro et pas sur des formule dans les cellules.

    A plus

  3. #3
    Futur Membre du Club
    Femme Profil pro
    secrétaire comptable
    Inscrit en
    Février 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : secrétaire comptable

    Informations forums :
    Inscription : Février 2014
    Messages : 5
    Points : 5
    Points
    5
    Par défaut
    Bonjour coy76,

    Tout d'abord MERCI de t'intéresser à mon cas.

    Je vais essayer de mieux détailler avec la description étape par étape de ce que j'imagine mettre en place.

    étape 1
    Je saisis une facture 1 dans "trame de facture".
    Parallèlement la feuille "suivi" génère la ligne correspondant aux données de la facture 1.

    étape 2
    Pour stocker, je copie dans un autre classeur nommé "facture 1" la feuille "trame de facture" de la facture 1 puis la renomme.
    Je conserve ma feuille "trame de facture" dans mon classeur "facture".

    étape 3
    Je saisie une facture n°2 dans "trame de facture".
    Parallèlement la feuille "suivi" génère la ligne correspondant aux données de la facture 2 et décale la ligne facture 1 vers le bas.

    Et ainsi de suite...

    RQ

    * Il est en effet important que je puisse rajouter des lignes "produit", il faut donc prévoir que les cellules des montant ht, tva et ttc puissent être décalées.

    * Comme tu le suggères, j'avais prévu d'insérer l'adresse du client dans une autre cellule, mais de toute façon je n'ai pas besoin de cette donnée dans mon "Suivi".

    * Enfin, je te mets le copier/coller du sujet approchant que j'avais lu dans ce forum et qui me donne l'impression que mon projet est réalisable :

    Problème
    J'aimerai reporter la valeur d'une cellule A1 de la feuille 1 dans un tableau de la feuille 2 cellule B2.
    Par contre lorsque l'on modifie la cellule A1 je souhaiterai garder l'ancienne valeur dans la cellule B2 (de la feuille 2) et ajouter la nouvelle valeur dans la feuille 2 en B3 et ainsi de suite.

    Solution
    code à insérer dans le module de la feuille 1 :
    Private Sub Worksheet_Change(ByVal Target As Range)
    With Target
    If .Address = "$A$1" And .Value > "" Then _
    Feuil2.Cells(Rows.Count, 2).End(xlUp)(2).Value = .Value
    End With
    End Sub


    Je ne comprends pas ce que signifie ce code, ni comment l'utiliser… Mais son application a l'air similaire à mon souhait, non ?

    Ces explications te conviennent-elles ? N'hésite pas à me recontacter si tu as besoins d'autres éléments.
    Et MERCI encore...

  4. #4
    Membre du Club
    Homme Profil pro
    amateur
    Inscrit en
    Avril 2013
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : amateur
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2013
    Messages : 38
    Points : 66
    Points
    66
    Par défaut
    re bonjour Valweb80

    Voici le code que je te propose, comme tu n'est pas familiarisée avec VBA j'ai bien décri chaque étape pour que tu comprennes mieux le pourquoi du comment.
    Par contre avant de poursuivre voici une astuce pour progresser plus vite.

    Quand tu veux faire quelques chose en VBA mais sans connaitre le code utilise l'enregistreur de macro automatique. C'est extrêmement utilise pour bien mettre en relation ce que tu fais et comment Excel va le traduire en VBA (pour cela tu va dans l'onglet "Développeur" et tu cliques sur "Enregistrer une Macro" ensuite tu fais l'action voulu et à la fin n'oublis surtout de de cliquer sur le même bouton afin d'arrêter l'enregistrement.
    Ensuite tu fais ALT+F11 pour ouvrir l'éditeur VBA et ainsi voir le code qui en résulte.

    Bref revenons à nos moutons .....
    Ci dessous le code :
    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
     
     
    Public Sub transfert()
    'déclaration des variables
    Dim nom As String, objet As String, numfacture As String, client As String
    Dim montantHT As Variant, montantTTC As Variant, datefact As Date
     
    ' selection de la feuille de travail
    Sheets("TRAME DE FACTURE").Select
     
    'Affectation des valeurs aux variables
    numfact = Cells(2, 7).Value
    client = Cells(5, 7).Value
    objet = Cells(17, 1).Value
    datefact = Cells(13, 7).Value
     
    'vérification sur la colonne "G" de la position de la cellule contenant le mot "Montant HT"
    'afin de définir le numéros de ligne de ce montant
    For i = 19 To 40
    If Cells(i, 6).Value = "Montant HT" Then
    'affectaion des valeurs aux variables
    montantHT = Cells(i, 7).Value
    montantTTC = Cells(i + 2, 7).Value
    Else: End If
    Next i
     
    Sheets("SUIVI").Select
    Range("A1").Select
    'positionnement de la cellule à la fin de la liste
    Selection.End(xlDown).Select
    ligne = Selection.Row
    If ligne = 1048576 Then
    ligne = 1
    Cells(ligne + 1, 1).Select
    Else: End If
     
    'copie des données dans la ligne défini ci dessus
    Cells(ligne + 1, 1).Value = numfact
    Cells(ligne + 1, 2).Value = client
    Cells(ligne + 1, 3).Value = objet
    Cells(ligne + 1, 4).Value = montantHT
    Cells(ligne + 1, 5).Value = montantTTC
    Cells(ligne + 1, 6).Value = detefact
     
    Sheets("TRAME DE FACTURE").Select
     
     
    'Copie de la nouvelle facture dans un nouveau fichier (sous entendu 1 fichier par nouvelle facture)
    ' je le copie sous le disque D:
         Sheets("TRAME DE FACTURE").Copy
        ChDir "D:\"
        ActiveSheet.Shapes.Range(Array("Button 1")).Select
        Selection.Delete
        'je renomme la feuille avec le numéro de la facture
        Sheets("TRAME DE FACTURE").Name = "Facture" & numfact
        'je renome le fichier avec le nom de la facture
        ActiveWorkbook.SaveAs Filename:="D:\Facture" & numfact & ".xlsx", _
            FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
        ActiveWorkbook.Close
    End Sub
    Par contre il y a des règles à respecter :
    La référence de la facture doit toujours être en G3
    La référence du client doit toujours être en G5
    La référence de l'objet doit toujours être en A17
    La référence de la date doit toujours être en G13

    afin de mieux comprendre la fonction "Cells(2,4).value" elle définie la valeur qui se trouve dans la cellule en ligne 2 et colonne 4

    le mot "Montant HT" doit toujours être en colonne G et ne pas changer l'orthographe.
    Le montant TTC doit toujours être 2 lignes en dessous du montant HT dans la même colonne.

    La macro copie directement la nouvelle facture dans un nouveau fichier.
    Par définition j'ai mis le copie sous "D:\"

    Si tu dois changer quelque chose il faut que tu changes le code VBA afin que la macro continue de fonctionner.
    Pas de panique je te mets le fichier en pièce jointe.

    Chez moi le fichier fonctionne bien (sous PC), en espérant que cela va fonctionner aussi chez toi.


    N'hésite pas à ma dire si c'est OK ou si il faut modifier des choses.
    MEEEEEEEERCIIIIIIIIII de voter et surtout de cliquer sur si tu as eu ta réponse.

    Fichiers attachés Fichiers attachés

  5. #5
    Futur Membre du Club
    Femme Profil pro
    secrétaire comptable
    Inscrit en
    Février 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : secrétaire comptable

    Informations forums :
    Inscription : Février 2014
    Messages : 5
    Points : 5
    Points
    5
    Par défaut
    Bonjour, bonjour Coy76 !

    MEGAMERCI
    C'est top, c'est super, tu viens d'illuminer mon week-end !

    Je viens de tester le fichier chez moi (XL2007 sur PC) et ça fonctionne bien !
    Je te tiendrai au courant quand je l'aurai testé sur MAC XL2011, lundi ou mardi.

    J'ai juste corrigé une petite erreur dans le code : la date n'était pas reportée dans le suivi.
    *ligne 43 du code : detefact > datefact, et là c'est parfait.

    J'imagine que pour stocker les facture dans le dossier de mon choix, je devrai changer la ligne 51 :
    ChDir "D:\" > ChDir "chemin d'accès du dossier en question", c'est bien ça ?

    Je tiens par ailleurs à te féliciter pour la pédagogie dont tu as su faire preuve à mon encontre : les commentaires que tu as inséré dans le code sont bien explicites. Tu m'as donné des clés d'entrée quand je me sentais noyée dans ma méconnaissance, tu m'as donné accès à ce nouvel univers que j'ai, du coup, envie de continuer à explorer !

    Je vais bien sûr cliquer sur RÉSOLU, et avec grand plaisir !

    Bonne continuation à toi

  6. #6
    Membre du Club
    Homme Profil pro
    amateur
    Inscrit en
    Avril 2013
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : amateur
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2013
    Messages : 38
    Points : 66
    Points
    66
    Par défaut
    Bonjour Valweb80,

    Oh làlà que d'honneur
    Pour commencer, désolé pour la ligne 43 (erreur de frappe), ensuite pour le dossier de sauvegarde tu as raison il faut que tu modifis la ligne :
    ChDir "D:\" soit tu remplace le "D" par un autre lecteur (C, H, M si tu utilise un disque externe .....) ensuite derriere le "\" tu viens mettre ton chemin.

    Tu peux encore aller plus loin dans l'automatisation : au niveau du chemin tu mets une variable, et dans ton fichier "Trame de Facture" tu ajoute une case ou tu indiques le chemin et cette case tu la relis à la variable ( avec la fonction chemin = Cells(x,y).value).
    Comme ça pour chaque fichier tu peux le sauvegarder ou tu veux sans aller à chaque fois dans le code VBA pour changer le chemin.

    Derniere remarque/conseil :
    Pour ce genre de "défis" Access et beaucoup mieux adapté car c'est une base de donnée, et via un formulaire (=fiche de remplissage) tu peux stocker toutes les infos sans utiliser de code VBA.Et ensuite les manipuler comme bon te semble via des "requettes" afin d'extraire n'importe quelles données en fonction des critéres que tu désires.

    Pour finir merci pour tes compliments (c'est assez rares...), comme tu peux le voir j'ai pas beaucoup de point, donc je ne suis pas un expert en VBA, mais j'ai commencé au même niveau que toi.
    Je ne suis pas informaticien mais comme je te l'ai dit avant si tu utilises l'enregistreue automatique de macro, ça résouds (à mon niveau) 80% de mes besoins, pour le reste il y a le Forum.

    C'est aussi grâce au forum (et donc à d'autre utilisateur plus expérimenté) que j'ai réussi à faire certaines chose, et c'est pour cela que de temps à autre j'aide comme je peux ceux qui on plus de mal que moi en essayant d'expliquer les choses au lieu de balancer du code et dire "essaye ça".

    J'ai une devise : "Tout est possible avec Excel, sauf cuire les pizzas"
    Bonne continuation dans le code VBA

    A plus dans le forum.

  7. #7
    Futur Membre du Club
    Femme Profil pro
    secrétaire comptable
    Inscrit en
    Février 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : secrétaire comptable

    Informations forums :
    Inscription : Février 2014
    Messages : 5
    Points : 5
    Points
    5
    Par défaut
    Bonjour Coy76,

    Comme promis, la suite de l'épisode "à la recherche de la macro qui va bien" !

    Donc je te le redis, chez moi sur PC, ça marche nickel.

    Ce matin, au boulot sur MAC, ça marche presque.

    Quand je clique sur le bouton, la feuille de suivi est bien alimentée, par contre l'exportation de la facture m'ouvre le classeur généré rebaptisé "classeur 1" par défaut et signale une erreur d'éxécution 76.

    Vu que je n'ai pas de disque D, qu'ici on est en réseau, je pense que j'ai un souci avec mon chemin d'accès au dossier "factures émises" créé pour l'occasion… J'ai bien essayé de reparamétrer les lignes ChDir, mais j'ai dû rater quelque chose au passage.

    Je vais continuer à explorer mais si tu as un conseil où une solution rapide : je prends !
    (je ne suis pas très à l'aise sur Mac, c'est assez fastidieux)

    Merci encore.
    Bonne journée

  8. #8
    Futur Membre du Club
    Femme Profil pro
    secrétaire comptable
    Inscrit en
    Février 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : secrétaire comptable

    Informations forums :
    Inscription : Février 2014
    Messages : 5
    Points : 5
    Points
    5
    Par défaut
    re-Bonjour,

    Je viens de voir ton message après t'avoir à nouveau sollicité !
    Du coup, ne t'embêtes pas à re-répondre, j'ai tout ce qu'il me faut finalement.

    Ne sois pas gêné si je te complimente : il me semble important de féliciter correctement les personnes comme toi, qui prennent le temps.
    Je suis par ailleurs ravie d'apprendre que tu as démarré à mon niveau et que tu n'es pas informaticien : ça me laisse espérer une belle progression !

    Bonne continuation.

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

Discussions similaires

  1. [WD18] Metre une colonne d'une Table sur une ligne d'une autre Table
    Par Totophe2 dans le forum WinDev
    Réponses: 2
    Dernier message: 22/11/2013, 12h58
  2. [Toutes versions] coller les données d'une plage d'une cellule dans une cellule d'une autre feuille[VBA]
    Par arthson dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 24/01/2012, 17h37
  3. [XL-2007] problème de codage en vba ("copie d'une partie d'une cellule dans une cellule vide")
    Par skipeemed dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 26/10/2010, 17h01
  4. Réponses: 2
    Dernier message: 30/10/2008, 13h28
  5. Afficher la valeur d'une cellule sur une image
    Par alex830001 dans le forum Excel
    Réponses: 2
    Dernier message: 02/07/2008, 11h07

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