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 :

Sur base d'une valeur à "oui" créer une nouvelle ligne dans une autre feuille et y copier des données


Sujet :

Excel

  1. #61
    Membre habitué
    Inscrit en
    Janvier 2011
    Messages
    120
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 120
    Points : 129
    Points
    129
    Par défaut
    Mes données sont bien en liste. Je l'avais noté dans le message que tu as déplacé.

    Je vais essayer de faire ca.

    Si tu veux voir l'exemple en pratique, j'utilise le fichier qu'on a créé avec : mercatog et casefayere. Merci à eux

  2. #62
    Membre habitué
    Inscrit en
    Janvier 2011
    Messages
    120
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 120
    Points : 129
    Points
    129
    Par défaut
    J'essaye ta méthode mais je ne sais pas pourquoi cela ne fonctionne pas. J'ai systématiquement un message d'erreur.

    Est ce que je dois prendre exactement le même nombre de colonne que celle sélectionnée ?

  3. #63
    Membre habitué
    Inscrit en
    Janvier 2011
    Messages
    120
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 120
    Points : 129
    Points
    129
    Par défaut
    J'ai réussi à faire fonctionner le filtre (il ne fonctionnait pas car je prenais les deux premières lignes qui étaient vides)

    J'applique le filtre sur les colonnes Produit; Detail produit; Etc; ID Client
    qui me copie correctement les données voulues sur la feuille "Impression" (Qui est la lettre type qui reprend les données du client et de tout ses produits).

    Je suis maintenant confronté à deux nouveaux problèmes.

    Le détail des produits est constitué en liste de cette façon :

    Num; Nom; Prénom; Num & Rue; Code Postal; Ville; Produit; Detail produit; Etc; ID Client

    Les données copiées par le filtre sont : Produit; Detail produit; Etc; ID Client

    Mais j'ai aussi besoin des coordonnées du client qui sont positionnées dans l'entente de la lettre.

    1) Comment faire pour qu'il me copie une seul fois Nom; Prénom; Num & Rue; Code Postal; Ville et le positionne correctement dans l'entente de ma feuille à imprimer ?

    2) Actuellement, je dois recommencer l'opération complète du filtre pour chaque client. Comment faire pour que toute les données changent automatiquement quand je modifie ID Client sur la page d'impression ?

    Merci

  4. #64
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 124
    Points : 55 905
    Points
    55 905
    Billets dans le blog
    131
    Par défaut
    Réponse en deux temps:

    1) Le filtre avancé impose une construction du type de celle que j'ai illustrée. Donc, tu ne peux pas récupérer en même temps et dans des zones différentes les données du client et des produits qui le concernent.

    Tu dois disposer de deux tables (deux feuilles, si tu préfères), l'une avec la liste des clients, l'autre avec la liste des produits vendus.

    Pour récupérer les coordonnées du client, tu pourras utiliser RECHERCHEV() qui ira chercher les données dans la liste des clients (mon tuto explique comment faire). Pour récupérer la liste des produits, tu utilises le filtre avancé.

    2) Pour les coordonnées du client, le simple fait de changer l'ID (paramètre 1 de la fonction RECHERCHEV() ) forcera le calcul et les bonnes données apparaîtront.

    Pour automatiser le filtre avancé, comme tu dis n'être pas habitué au VBA, le "moins pire" sera de lancer l'enregistreur de macro puis d'adapter le code...
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  5. #65
    Membre habitué
    Inscrit en
    Janvier 2011
    Messages
    120
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 120
    Points : 129
    Points
    129
    Par défaut
    Je vais essayer mais c'est un peu chinois ce que tu m'explique
    Je sais je ne suis vraiment pas doué

  6. #66
    Membre habitué
    Inscrit en
    Janvier 2011
    Messages
    120
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 120
    Points : 129
    Points
    129
    Par défaut
    Bonsoir

    Je n'arrive pas à créer la macro. Je n'y comprend rien.

    Sur base du fichier de : mercatog que j'ai adapté, qui pourrait m'aider à créer cette macro dans l'onglet impression ?

    merci

    Voici le fichier modifiié
    Fichiers attachés Fichiers attachés

  7. #67
    Expert éminent Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Points : 9 548
    Points
    9 548
    Par défaut
    Bonjour Gregk, le forum,

    J'ai remanié ton fichier en ajoutant une feuille "imp_prod"
    Si tu cliques sur le numéro de client dans la feuille "imp_client" (anciennement "impression") les deux feuilles se mettent à jour et je pense que tu peux construire ton publipostage à partir de là. Comme je ne manie pas le publipostage par VBA, il faut donc passer, pour le moment, client par client.

    bon courage
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  8. #68
    Membre habitué
    Inscrit en
    Janvier 2011
    Messages
    120
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 120
    Points : 129
    Points
    129
    Par défaut
    Bonjour casefayere,

    Pour cette partie, on peut oublier le publipostage. Je ferai une impression client par client. (même si je dois faire une boucle par après sur le code du client)

    Par contre ce qui est important, c'est que les deux feuilles "imp_client" &"imp_prod" soit sur la même page et regroupe les données du client et des produits.

    Si tu reprends la feuille "impression" dans mon exemple, c'est le résultat auquel je voudrais arriver. L'objectif est d'imprimer une facture récapitulative produit + client.

    Merci de ton aide.

  9. #69
    Expert éminent Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Points : 9 548
    Points
    9 548
    Par défaut
    Re,
    je l'avais fait dans un premier temps mais j'ai séparé les feuilles pour la gestion de ton publipostage mais si il faut revenir en arrière, je vais reprendre le code.

    Patience !!!
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  10. #70
    Membre habitué
    Inscrit en
    Janvier 2011
    Messages
    120
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 120
    Points : 129
    Points
    129
    Par défaut
    Sauf erreur de ma part le publipostage n'est pas possible sur deux feuilles.

    De plus, si je dois changer le client manuellement, autant que je l'imprime moi même car un publipostage ne sera pas possible vu qu'il n'y aura qu'un client à imprimer lol

  11. #71
    Expert éminent Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Points : 9 548
    Points
    9 548
    Par défaut
    Ci-joint fichier transformé (une feuille impression)
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  12. #72
    Membre habitué
    Inscrit en
    Janvier 2011
    Messages
    120
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 120
    Points : 129
    Points
    129
    Par défaut
    Merci Dom,

    Comment puis je modifier la mise en page ?

    Comment puis je dire à excel dans quelle cellule je voudrais que le nom soit copié ? (Comme dans mon exemple)

  13. #73
    Expert éminent Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Points : 9 548
    Points
    9 548
    Par défaut
    Comment puis je modifier la mise en page ?
    quelle mise en page ? présentation comme ton dernier fichier ?

    Comment puis je dire à excel dans quelle cellule je voudrais que le nom soit copié ?
    Quel nom ?, je ne comprends pas
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  14. #74
    Membre habitué
    Inscrit en
    Janvier 2011
    Messages
    120
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 120
    Points : 129
    Points
    129
    Par défaut
    Citation Envoyé par casefayere
    quelle mise en page ? présentation comme ton dernier fichier ?
    Oui

    Citation Envoyé par casefayere
    Quel nom ?, je ne comprends pas
    Nom, prénom, adresse du client. (et sans intitulé)

    Il s'agit d'un facture, donc doit figurer dessus que le detail des produits et le nom, prénom et l'adresse du client (si possible en haut à droite comme pour une lettre traditionnelle)

  15. #75
    Expert éminent Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Points : 9 548
    Points
    9 548
    Par défaut
    Regardes, présenté comme ton dernier fichier

    si ça ne va pas, on change encore
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  16. #76
    Expert éminent Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Points : 9 548
    Points
    9 548
    Par défaut
    Une autre présentation
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  17. #77
    Expert éminent Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Points : 9 548
    Points
    9 548
    Par défaut
    Je pensais encore, si tu décides de descendre ou d'insérer des lignes avant "Nom produit", prends plutot ce code dans la feuille "impression"
    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
    Private Sub Worksheet_Change(ByVal Target As Range)
    Dim derlg As Integer, cell As Range, plage As Range, ld As Integer, données As Integer
    If Target.Address = "$A$2" Then
        derlg = Sheets("impression").Range("A" & Rows.Count).End(xlUp).Row + 1
        données = Range("A1: A" & derlg).Find("Nom Produit").Row + 1'pourvu que ton entete aie toujours ce nom exact
        Range("A" & données, "F" & derlg).ClearContents
        derlg = données
        With Sheets("Liste des produits par client")
            ld = .Range("A" & .Rows.Count).End(xlUp).Row
            Set plage = .Range("a4:a" & ld)
            For Each cell In plage
                If cell = Range("A2") Then
                   Range("A" & derlg, "F" & derlg) = .Range(cell(1, 8).Address, cell(1, 13).Address).Value
                   derlg = derlg + 1
                End If
            Next cell
        End With
    End If
    End Sub
    et tes données iront au bon endroit sans changer le code
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  18. #78
    Membre habitué
    Inscrit en
    Janvier 2011
    Messages
    120
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 120
    Points : 129
    Points
    129
    Par défaut
    C'est super :-) Nous y somme arrivé. Il me reste juste à faire une mise en page correcte.

    Par contre, j'ai essayé de remplacer le code de la feuille "impression" et ajouter une colonne avant "nom du produit" pour tester ton code mais cela ne fonctionne pas. Ou c'est moi qui ai mal fait...

    Autre question, supposons que je doivent ajouter des colonnes soit dans la feuille "données clients" soit dans la feuille "liste de produits".

    Pour que les colonnes ajoutées ne perturbent pas le code ou qu'elles soient bien copiées, qu'est ce que je devrais changer dans les macros vba ?

    Merci

  19. #79
    Expert éminent Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Points : 9 548
    Points
    9 548
    Par défaut
    Bonjour Gregk, le forum,

    Eh oui, mon dernier code prévoit que tu puisses ajouter des lignes or manque de chance ce sont des colonnes que tu ajoutes, pour prévoir cette éventualité il va falloir corriger ce code en fonction de 4 possibilités ajouter des lignes, supprimer des lignes, ajouter des colonnes, supprimer des colonnes.

    Je veux bien m'occuper de cette partie.

    Pour ton autre question :
    Autre question, supposons que je doivent ajouter des colonnes soit dans la feuille "données clients" soit dans la feuille "liste de produits".
    , il va falloir que tu te mouilles un peu plus et comprendre le code de mercatog que tu changeras en fonction. Analyse ce code pas à pas, c'est une bonne formation, j'aurais pu te dire la même chose pour mon dernier code mais voilà, ma bonté me perdra
    bonne journée, en attendant
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  20. #80
    Expert éminent Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Points : 9 548
    Points
    9 548
    Par défaut
    Essayes ce code dans la feuille impression
    attention aux entetes utilisées, "ID CLIENT", "Nom Produit", "prix"
    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
    Private Sub Worksheet_Change(ByVal Target As Range)
    Dim c As String, chProd As Range, Dercol As Range
    Dim cell As Range, plage As Range, ld As Integer, données As Range
    Dim ident As Range
    Set ident = ActiveSheet.Cells.Find("ID CLIENT").Offset(1, 0)
    If Target.Address = ident.Address Then
       Set Dercol = ActiveSheet.Cells.Find("prix")
       c = Split(Cells(Dercol.Column).Address, "$")(1)
       Set Dercol = Range(c & Rows.Count).End(xlUp).Offset(1, 0)
       Set chProd = ActiveSheet.Cells.Find("Nom Produit").Offset(1, 0)
       Set données = Range(chProd.Address, Dercol.Address)
       données.ClearContents
       'si la dernière colonne est toujours "prix"
       Set Dercol = ActiveSheet.Cells.Find("prix").Offset(1, 0)
       With Sheets("Liste des produits par client")
          ld = .Range("A" & .Rows.Count).End(xlUp).Row
          Set plage = .Range("a4:a" & ld)
          For Each cell In plage
             If cell = ident Then
                Range(chProd.Address, Dercol.Address) = .Range(cell(1, 8).Address, cell(1, 13).Address).Value
                Set chProd = chProd.Offset(1, 0)
                Set Dercol = Dercol.Offset(1, 0)
             End If
          Next cell
       End With
    End If
    End Sub
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

Discussions similaires

  1. Forcer une nouvelle ligne dans une zone de texte
    Par nicolas2603 dans le forum IHM
    Réponses: 1
    Dernier message: 28/05/2008, 12h15
  2. Réponses: 3
    Dernier message: 05/05/2008, 12h00
  3. Réponses: 2
    Dernier message: 06/02/2007, 09h17

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