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 :

Macro pour transférer des produits


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Février 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Février 2014
    Messages : 5
    Par défaut Macro pour transférer des produits
    Bonjour à tous,

    Je connais un peu les macros mais là c'est au-dessus de mes aptitudes . Aujourd'hui, je sollicite votre aide pour m'aider à créer une macro qui me sera très utile. Je joins un exemple simplifié d'un fichier que j'utilise.

    La feuille "Source" nous sert à inscrire des nouveaux produits ou à en supprimer. La feuille "Travail" nous sert pour différents rapports. J'ai fais un petit tableau dans "Travail" qui compare le nombre de produits pour chaque catégorie et indique la différence. Je voudrais que la macro, voyant par exemple, qu"il y a deux produits de plus dans la catégorie peinture dans 'Source", identifie la catégorie et se déplace à la dernière ligne de la catégorie dans "Travail" et ajoute le nombre de ligne requis. Identifier la catégorie et se déplacer est nécessaire puisque dans mon fichier, les produits ne sont pas aux mêmes lignes et dans les même colonnes.

    Je suis capable d'écrire les commandes pour copier les infos après.

    Merci beaucoup pour votre aide. Cela est très apprécié.

    Guy
    Fichiers attachés Fichiers attachés

  2. #2
    Membre Expert Avatar de jerome.vaussenat
    Homme Profil pro
    Formateur Bureautique
    Inscrit en
    Janvier 2011
    Messages
    1 629
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Formateur Bureautique
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 629
    Par défaut
    Salut,

    Impossible d'accéder au fichier :
    "Fichier corrompu"

    Donc aveugle ...


    GG

  3. #3
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Février 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Février 2014
    Messages : 5
    Par défaut
    Merci Jérôme,

    Voici une autre version du fichier.

    J'espère que celle-ci fonctionne.

    Bonne journée.

    Guy
    Fichiers attachés Fichiers attachés

  4. #4
    Expert confirmé Avatar de BENNASR
    Homme Profil pro
    Responsable comptable & financier
    Inscrit en
    Décembre 2013
    Messages
    2 974
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Responsable comptable & financier
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 2 974
    Par défaut
    Bonjour
    NB : proposition d'un autodidacte aucune responsabilité en cas de perte de données donc à tester avec prudence sur une copie de ton fichier
    Principe :
    - Collecter un dictionnaire issue de la feuille "Travail" ET puis la feuille "Source"
    - Nettoyer feuille "Travail" et enregistrer le dictionnaire
    - Comme ça les articles qui ne sont pas enregistrés sur la feuille "Travail" viens s'ajouter à la fin de la liste donc il suffit de faire un trie sur la colonne A et vous aurez vos données triées
    - Le prix pris en considération est celui de la valeur global (colonne 5 de la feuille source) et non pas le prix unitaire (selon votre exemple)
    - la partie qui sert à trier est désactiver , (précédé par un ' ) à supprimer si vous voulez faire un trie
    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
    Sub BenNasr()
    Application.ScreenUpdating = False
    Dim f1 As Worksheet
    Dim f2 As Worksheet
    Set f1 = Sheets("Source")
    Set f2 = Sheets("Travail")
    Dim L As Long
      Set d = CreateObject("Scripting.Dictionary")
      TblBD2 = f2.Range("A3:C" & f2.Range("A" & Rows.Count).End(xlUp).Row)
      For i = 1 To UBound(TblBD2)
       If TblBD2(i, 1) <> "" Then
        clé = TblBD2(i, 1) & "|" & TblBD2(i, 2) & "|" & TblBD2(i, 3)
        d(clé) = d(clé)
         End If
      Next i
      TblBD1 = f1.Range("A3:F" & f1.Range("A" & Rows.Count).End(xlUp).Row)
      For i = 1 To UBound(TblBD1)
        If TblBD1(i, 1) <> "" Then
        clé = TblBD1(i, 1) & "|" & TblBD1(i, 2) & "|" & TblBD1(i, 5)
        d(clé) = d(clé)
        End If
      Next i
      f2.Select
      f2.Cells.ClearContents
       f2.Cells(2, 1).Resize(1, 3) = Array(f1.Cells(2, 1), f1.Cells(2, 2), f1.Cells(2, 3))
      f2.Range("A3").Resize(d.Count) = Application.Transpose(d.keys)
      Application.DisplayAlerts = False
      f2.Range("A3").Resize(d.Count).TextToColumns Other:=1, OtherChar:="|"
     
      '********************************************trier de A à Z sur colonne A
     ' L = f2.Cells(Rows.Count, 1).End(xlUp).Row
     ' f2.Range("A3:C" & L).Sort Range("A3"), xlAscending, Range("A3"), , xlAscending
     
    Application.ScreenUpdating = True
    f2.Select
    End Sub
    Bonne continuation
    Fichiers attachés Fichiers attachés

  5. #5
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Février 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Février 2014
    Messages : 5
    Par défaut
    Merci BENNASR pour la proposition.

    Malheureusement je ne peux pas faire le genre de tri proposé puisque ma feuille "Travail" (en réel) comporte un tas de calculs automatisés qui ne me permettent pas d'effacer les lignes entre mes catégories. Dans mon exemple, je n'ai que 3 catégories, dans mon travail j'en ai 14 et cela grossit toujours. C'est pourquoi, il est important que la macro identifie la catégorie et déplace le curseur dans une des cellules de cette catégorie. Il me faut garder les lignes vides entre les catégories.

    J'apprécie beaucoup la proposition par contre et me permets de la recycler pour un autre travail.

    Bonne journée

    Guy

Discussions similaires

  1. Idée pour sélectionner des produits et les ajouter
    Par Nulenprogra dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 11/02/2007, 11h34
  2. Réponses: 1
    Dernier message: 15/09/2006, 16h23
  3. [VBA-PP] macro pour insérer des images dans PowerPoint
    Par mashpro dans le forum VBA PowerPoint
    Réponses: 4
    Dernier message: 01/08/2006, 22h56
  4. [VBA-E] Probleme Macro pour gérer des cases à cocher
    Par bibiche2184 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 09/06/2006, 18h03
  5. macro pour créer des graphiques
    Par Sebastien_INR59 dans le forum Access
    Réponses: 1
    Dernier message: 07/06/2006, 09h44

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