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 :

Conditions : Intégrer nouvelles lignes avec conditions à partir de 2 feuilles d'un même classeur


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2020
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2020
    Messages : 11
    Points : 11
    Points
    11
    Par défaut Conditions : Intégrer nouvelles lignes avec conditions à partir de 2 feuilles d'un même classeur
    Bonjour a tous,

    Je debute tout juste en programation VBA et bien que je sache inserer de nouvelle ligne dans une feuille je suis incapable d'en ajouter a partir de conditions:
    je souhaiterais a partir de ma feuille "Test" integrer les nouveaux "centre de de cout" par "chapter" par "produit" par "numero de projet" dans la feuille "real budget".
    Le but etant ensuite d'importer la feuille "real budget" dans mon logiciel. je dois donc absolument garder la meme mise en forme que dans la feuille "real Budget"

    Si quelqu'un pouvait m'aider avec un code ca serait vraiment super en me detaillant les etapes avec les apostrophes idealement pour que je comprenne.

    Voici le fichier Navion import aide.xlsx

    Par avance merci
    Bonne soiree

  2. #2
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2015
    Messages
    369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2015
    Messages : 369
    Points : 518
    Points
    518
    Par défaut
    Bonjour jean,

    Chaque Centre de Coût doit-il apparaître de manière unique dans ta feuille "Real Budget" ?

    Je suppose que la feuille "Test" est alimentée par l'utilisateur. Par contre, qu'en est-il des dates se situant dans la feuille "Real Budget" ? A quoi correspondent-elles ? Pourrais-tu aussi détailler la nature des valeurs chiffrées qui se situent à droite ? Sont-elles intégrées dans la feuille que tu souhaites exporter ?

    Tu pourrais déjà commencer par structurer le tableau que tu souhaites, ne serait-ce qu'au niveau des colonnes en définissant correctement les en-têtes.

    Je te conseillerai vivement de mettre en première colonne le Centre de Coût, qui si j'ai bien saisi ta demande, correspond à LA variable à prendre en compte. Tu pourras ainsi disposer les autres en-têtes que tu souhaites à la suite.

    Je ne pourrai que te conseiller, comme on me l'a conseillé, de créer un tableau structuré en le renommant d'une façon lisible et accessible :
    "t_data" par exemple.

    En l'attente de tes réponses,

    Révèr

  3. #3
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Citation Envoyé par jeancf33 Voir le message
    bien que je sache inserer de nouvelle ligne dans une feuille je suis incapable d'en ajouter a partir de conditions:
    je souhaiterais a partir de ma feuille "Test" integrer les nouveaux "centre de de cout" par "chapter" par "produit" par "numero de projet" dans la feuille "real budget".
    Le but etant ensuite d'importer la feuille "real budget" dans mon logiciel. je dois donc absolument garder la meme mise en forme que dans la feuille "real Budget"
    Il suffit d'activer le filtre placé sur le tableau Test avec les critères que tu cites.
    Lire ceci : https://msdn.microsoft.com/fr-fr/lib...4(v=office.15)

    Ensuite, la macro fera une copie sur les lignes visibles en appliquant la méthode Copy à la zone totale limitée par un SpecialCells(xlCellTypeVisible).
    Lire ceci : https://msdn.microsoft.com/fr-fr/lib...0(v=office.15)
    Et ceci : https://msdn.microsoft.com/fr-fr/lib...7(v=office.15)

    Et de coller les valeur à la position souhaité de l'autre feuille par un PasteSpecial(xlPasteValues) pour conserver le format de destination.
    Lire ceci : https://msdn.microsoft.com/fr-fr/lib...6(v=office.15)
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  4. #4
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2020
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2020
    Messages : 11
    Points : 11
    Points
    11
    Par défaut
    Bonjour Révér,

    J'ai modifié et y ai ajouté les formules pour pour y donner du sens. ( somme.si.ens) avec plage nommée pour gagner du temps. (J'ai essayé la fonction indirecte pour eviter d'avoir a chaque fois besoin de changer de feuille mais elle prend pas est ce a cause de mes plage nommée?)

    Dans ma feuille budget j'ai de nouveaux centre de cout ( Kostenstelle en allemand) et j'aimerai les integrer a mon onglet "import " en gardant la meme mise en forme.
    Dans la feuille import tu ne trouveras pas les centres de couts (F14/H02/F22) qui sont des nouveaux centre de couts.
    Si je n'avais pas ces nouveaux centre de couts mon fichier dans l'etat fonctionnerait avec mes simples formules mais vu que j'ai ces nouveaux centres de couts je dois modifier ma feuille import afin de les prendres en compte.

    J'ai par "chapter " un centre de cout unique mais je peux avoir plusieurs centre de couts different au ssein d'un meme chapter ex : chapter 605000 => centre de cout F13 ; 605000 F18 ect...
    Bien que je dois garder intact la nommenclature dans la feuille "import" en vert la mise en forme comment c'est extrait et en bleu la plage de donnees que je veux mettre a jour. Mais evidement ma plage en vert bougera car pour mon centre de cout "f14" que je vais ajouter les données il sera orcement lié a des "chapter" donc ma colonne va s'agrandir.

    En regardant ma fomule somme.si.ens peut etre que tu comprendras mieux ce que je peux dire. J`'ai laissé les formules uniquement sur les deux premieres lignes (965 et 966) et j'ai copié en valeur le reste car sinon le fichier est trop lourd.

    Mais je pense pas qu'on puisse le faire de maniere automatiser finalement. Mais je reste preneur d'une eventuelle idee et surtout la fomule indirect je comprends pas pourquoi elle ne fonctionne pas. et egalement est ce que tu connais la formule/fonction ligne qui permet d'ajuster un tableau en fonction des donnees? je crois que ca fonctionne avec un nb.si mais j'arrive pas a la retrouver sur youtube.

    Quel est l'avantage d'un tableau structuré dans cette exemple precis a part pour les forumles en automatique sinon je vois pas ?

    Navision Import Budget v2.xlsx

    Bonne journée
    Bien a toi,
    Jean

  5. #5
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2020
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2020
    Messages : 11
    Points : 11
    Points
    11
    Par défaut
    Bonjour Menhir,

    J'essaye ta methode ce soir mais je crois pas quelle reponde a mes conditions je voudrais en effet que ma macros fonctionne "pour toujours" pour importe le nouveau centre de couts ajoutés ou supprimé.
    En faisant une macros c'est seulement pour un usage repetitif et qui serait pas amené a changer.
    peut que le mois prochain j'aurais un nouveau centre de cout et la ma macros ne fonctionnera pas car elle est enregister sur comment un ajouter le centre de cout "f14 par exemple" et non F300 par exemple ( il n'existe pas)


    Merci pour tes liens en tout cas, j'approfondie ca ce soir a la maison.

    Bonne journée,
    Bien a toi,
    Jean

  6. #6
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Citation Envoyé par jeancf33 Voir le message
    En faisant une macros c'est seulement pour un usage repetitif et qui serait pas amené a changer.
    Ca dépend comme elle est codée.
    Les limites du codage tiennent un peu des connaissances du codeur et beaucoup de son imagination.
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  7. #7
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2015
    Messages
    369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2015
    Messages : 369
    Points : 518
    Points
    518
    Par défaut
    Bonjour Menhir et jean,

    Je rejoins l'avis de Menhir. Effectuer un filtre sur la table Budget me paraît le plus adapté pour intégrer les nouvelles lignes.

    Je vois bien, au niveau algorithmique, quelque chose du genre (dis-moi si j'ai mal compris ta demande) :

    Déjà je souhaite poser les bases. Un Centre de coût peut apparaître plusieurs fois, on est bien d'accord ? (J'ai cliqué sur le filtre KostenStelle et il n'y a clairement pas un millier de choix possibles ) -> D'où la nécessité du SOMME.SI.ENS que je comprends mieux

    L'avantage d'un tableau Structuré est que tu peux modifier sa taille et son contenu comme bon te semble, sans enrayer les formules ou avoir à définir une "nouvelle dernière ligne" à chaque fois que tu en rajouteras une.

    Maintenant... voilà l'idée que j'ai :

    1) L'utilisateur rajoute une ligne nouvelle ligne au Tableau Structuré (TS) - Budget. (Effectuer la saisie à l'aide d'un formulaire peut-être une bonne idée et te permettra de contrôler la manière dont sont écrites les informations si certaines syntaxes doivent être respectées - Une simple pression sur un bouton de Validation te permettra d'insérer toutes ces valeurs dans une nouvelle ligne du TS. Méthode : ListObjects("t_budget").ListRows.Add )
    2) Ensuite, une recherche sera effectuée dans le tableau TS "t_import" afin de chercher la variable Kostenstelle de ta nouvelle ligne dans le tableau. 2 choix possibles :
    • Trouvé : Les données chiffrées s'ajoutent automatiquement
    • Non Trouvé : Une nouvelle ligne est créée dans le TS "t_import" avec la même méthode que précédemment. A toi de faire respecter l'ordre d'affichage pour qu'il soit rigoureusement identique


    Autres Options :
    On peut imaginer que l'utilisateur modifie des valeurs ou supprime une ligne du TS "t_budget" dans ce cas, voici les choix...
    • Modification des données chiffrées d'une ligne : L'utilisateur devra choisir la ligne qu'il souhaite modifier. A toi de créer des filtres lui permettant de faciliter sa recherche. Une fois cette ligne trouvée, il pourra modifier les données chiffrées de cette ligne. Une fois la modification validée, tu modifieras les valeurs correspondantes dans "t_budget" et ensuite chercheras la correspondance sur la variable Kostenstelle dans le TS "t_import" pour mettre à jour les valeurs. La méthode .Find dans la colonne "Kostenstelle" pourra t'être grandement utile.
    • Suppression de ligne : La suppression de la ligne s'effectuera EN DERNIER. Même principe que la modification, l'utilisateur choisira une ligne. Ensuite, tu mettras en premier lieu à jour les valeurs dans "t_import" (simple soustraction), puis tu supprimeras la ligne de "t_budget" avec la méthode ListRows(n_ligne).Delete


    Il s'agit là de ma pure imagination algorithmique, je n'ai encore rien testé de mon côté ! J'espère que tu auras compris le fonctionnement que je m'imagine, et qu'il te correspond. Si certains points te paraissent peu clair, n'hésite pas à me demander. Je serai apte à t'expliquer




    PS : Ne serait-il pas possible de tout passer par Excel ? Le tableau "t_import" pourrait se mettre automatiquement à jour en fonction du contenu du tableau "t_budget" non ? Seule la création d'un nouveau Kostenstelle se ferait à travers le code. La suppression et modification pourraient s'effectuer via Excel.

    Révèr

Discussions similaires

  1. Réponses: 1
    Dernier message: 20/02/2020, 08h42
  2. Creer des nouvelles lignes avec sed
    Par hpavavar dans le forum Shell et commandes GNU
    Réponses: 4
    Dernier message: 24/10/2009, 15h58
  3. Ajouter une nouvelle ligne avec les calculs
    Par Myogtha dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 20/02/2009, 10h19
  4. nouvelle ligne avec richfaces
    Par hassounbs dans le forum JSF
    Réponses: 2
    Dernier message: 05/11/2008, 10h57
  5. copier ligne avec formule et creer une feuille par ligne
    Par yanchs dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 27/01/2008, 18h04

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