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 :

Aide macro excel débutant


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Août 2010
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 22
    Par défaut Aide macro excel débutant
    Salut a Tous, voila j'ai un souci au niveau du développement d'une macro,je ne sais pas cmt faire.Un peu d'aide serait la bien venue.

    Voici ce que je voulais faire dans un premier temps:


    Petit topo du sujet:

    J'ai 1 feuille excel.


    Feuill1:
    -------A---------B----------------C----------------D-----------E
    1--VOIT_NOM--VOIT_FLUX---VOIT_tRANSPORT---VOIT_DIV---VOIT_USINE
    2 ---1234--------1-------------UPS----------------bleu--------Paris
    3 ---1234--------2--------------TnT--------------Rose----------
    4----5678--------1-------------TnT----------------Noir---------Rome
    5----4321--------1------------TnT-----------------Noir----------Venise
    5----4321--------2------------UPS----------------Jaune-----------
    6----4321--------2------------UPS----------------Jaune-----------

    Ce tableau traite d'envois de voitures.

    Petites explications:
    En A La référence de flux concernant la meme voiture.
    En B ,1 si l'envoi de la voiture est de l'usine vers client,2 l'inverse.En E, le nom de l'usine,
    mais seulement lors des flux de Usine vers Client.

    C'est un tableau raccourci,il y a sinon d'autres colonnes et des milliers de lignes.
    Ce que j'aimerais faire,c'est:
    Que la macro check le tableau d'abord en VOIT_USINE, si il y a quelque chose(donc par exemple pour la premiere ligne : Paris)
    il va se reporter a VOIT_NOM(donc pour la premiere ligne 1234) et ensuite va parcourir le tableau et récuperer toutes les lignes avec le meme VOIT_NOM)
    puis ensuite va copier ces lignes dans une nouvelle feuille.

    Voila je seche un peu, je pense qu'il faut utiliser pas mal de boucles.Mais étant débutant ,de l'aide pourrait m'etre précieuse.

    Je vous remercie.

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    592
    Détails du profil
    Informations personnelles :
    Âge : 75
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 592
    Par défaut
    Salut,

    Pourquoi ne pas faire un tri avec comme critères:
    1- VOIT_USINE
    2- VOIT_NOM

    et hop ... les lignes qui t'intéressent se suivent .

    A+
    PPz

  3. #3
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    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
    Dim LastLig As Long, i As Long
    Dim LastCol As Integer, j As Integer
     
    Application.ScreenUpdating = False
    'adapter les noms des feuilles, Data et resultat à ton classeur
    'le but est de copier chaque référence de flux comportant renvoi usine client
    With Sheets("Data")
        If AutoFilterMode Then .Range("A1").AutoFilter
        LastLig = .Range("A1").End(xlDown).Row
        LastCol = .Range("A1").End(xlToRight).Column
        .Cells(2, LastCol + 1).Formula = "=if(mod(sumif(" & .Range("A2:A" & LastLig).Address & "," & .Range("A2").Address(0, 0) & "," & .Range("B2:B" & LastLig).Address & "),2)=0,0,1)"
        .Cells(2, LastCol + 1).AutoFill .Range(.Cells(2, LastCol + 1), .Cells(LastLig, LastCol + 1))
        .Range("A1").AutoFilter field:=LastCol + 1, Criteria1:="1"
        .Range(.Cells(1, 1), .Cells(LastLig, LastCol)).SpecialCells(xlCellTypeVisible).Copy Sheets("Resultat").Range("A1")
        .Range("A1").AutoFilter
        .Columns(LastCol + 1).ClearContents
    End With
    dans ton exemple, la totalité des lignes ou j'ai mal compris

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Août 2010
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 22
    Par défaut
    En fait ce n'est qu'une étape car je vais comparer ces groupes de données apres.

    Donc imaginons que toutes les lignes ne sont pas classés.Les VOIT_NOM ne sont pas en groupes.J'aimerai qu'en partant de la VOIT_USINE,on retrouve sa VOIT_NOM et puis les lignes qui contiennent aussi cette VOIT_NOM et les copier ensemble dans une nouvelle feuille excel.

    Par exemple si g ca:

    -------A---------B----------------C----------------D-----------E
    1--VOIT_NOM--VOIT_FLUX---VOIT_tRANSPORT---VOIT_DIV---VOIT_USINE
    2 ---1234--------1-------------UPS----------------bleu--------Paris
    3----4321--------1------------TnT-----------------Noir----------Venise
    4----4321--------2------------UPS----------------Jaune-----------
    5----5678--------1-------------TnT----------------Noir---------Rome
    6----4321--------2------------UPS----------------Jaune-----------
    7 ---1234--------2--------------TnT--------------Rose----------

    je devrais avoir ca/pas forcément exactement,mais quelque chose de classé:

    -------A---------B----------------C----------------D-----------E
    1--VOIT_NOM--VOIT_FLUX---VOIT_tRANSPORT---VOIT_DIV---VOIT_USINE
    2 ---1234--------1-------------UPS----------------bleu--------Paris
    3 ---1234--------2--------------TnT--------------Rose----------
    4----5678--------1-------------TnT----------------Noir---------Rome
    5----4321--------1------------TnT-----------------Noir----------Venise
    6----4321--------2------------UPS----------------Jaune-----------
    7----4321--------2------------UPS----------------Jaune-----------

    Pour faire ca ,il faut donc partir de la VOIT_USINE,car c'est la clé pour le regroupement.Puis checker la VOIT_NOM correspondant a cette VOIT_USINE et regrouper toutes les lignes ayant cette VOIT_NOM.


    J'ai essayé ton code, et quand j'ai mis les lignes dans le désordre comme ci dessus, ca recopier les lignes.

  5. #5
    Membre émérite
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    592
    Détails du profil
    Informations personnelles :
    Âge : 75
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 592
    Par défaut
    Au vu de ton exemple, j'ai l'impression que tu fais le contraire:
    1- les lignes du même véhicule (VOIT_NOM) sont rassemblées
    2- puis on ordonne suivant VOIT_USINE

    pour être certain il faudrait que tu ajoutes des enregistrements :
    4321--------1------------TnT-----------------Noir----------Paris
    4321--------1------------TnT-----------------Noir----------Rome
    5678--------1------------TnT-----------------Noir----------Paris
    5678--------1------------TnT-----------------Noir----------Venise
    1234--------1------------UPS----------------bleu----------Rome
    1234--------1------------UPS----------------bleu----------Venise

    A+
    PPz

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Août 2010
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 22
    Par défaut
    Les lignes en VOIT_FLUX 1 sont des flux de usine vers client donc elles auront une VOIT_USINE(la ville de l'usine) mais les VOIT_FLUX 2 ,du client vers l'usine(s'il renvoie la voiture par exemple) aura la meme VOIT_NOM parceque c'est la meme voiture mais n'aura pas de VOIT_USINE.Donc pour regrouper les lignes correspondant a la meme VOIT_NOM, il faudra partir d'une ligne de flux 1 et regarder sa VOIT_USINE.Puis a partir de la VOIT_NOM correspondant a cette VOIT_USINE, regrouper les données ayant la meme VOIT_NOM.Il faut savoir qu'il n'y aura pas 2 fois le meme VOIT_USINE dans le tableau.Seulement une fois.

    Je ne sais pas si c'est clair.

  7. #7
    Membre émérite
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    592
    Détails du profil
    Informations personnelles :
    Âge : 75
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 592
    Par défaut
    si j'ai bien compris, une voiture va de l'usine à un client dans ce cas :
    - VOIT_NOM : est l'identifiant unique de la voiture (numéro de série par exemple)
    - VOIT_FLUX : est égal à 1
    - VOIT_USINE : est l'usine de départ
    - le reste est moins important.

    Dans certain cas la voiture est renvoyée par le client, dans ce cas :
    - VOIT_NOM : est l'identifiant unique de la voiture (numéro de série par exemple)
    - VOIT_FLUX : est égal à 2
    - VOIT_USINE : est vide
    - le reste est moins important.

    Donc :
    - un numéro de VOIT_NOM apparaît au plus deux fois
    - il ne peut pas y avoir de flux 2 sans flux 1
    Ce n'est pas ce que je vois dans ton exemple, il y a 2 lignes
    4321--------2------------UPS----------------Jaune-----------

    Donc je n'ai pas encore compris ton problème.
    A suivre

    PPz

Discussions similaires

  1. Aide macro excel
    Par gregtw29 dans le forum Macros et VBA Excel
    Réponses: 16
    Dernier message: 13/06/2012, 17h11
  2. Aide macro excel
    Par Orbichoox dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 22/05/2012, 09h29
  3. aide macro excel
    Par bensof1 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 04/03/2011, 19h39
  4. [XL-2007] Aide macro excel
    Par maxxxime dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 07/06/2010, 14h13
  5. Aide macro Excel
    Par lololasticot dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 10/11/2007, 11h53

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