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 tri et répartition [XL-2003]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    165
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 165
    Par défaut Macro tri et répartition
    Bonjour,

    Je suis entrain de developper un code qui me permet de faire un tri automatique.

    Un sheet nommée travail, oú je colle l'ensemble des lignes est requise.

    Sur ces différentes lignes se trouvent des données, qui vont se différencier par la colonne C.

    Exemple :

    Colonne A : Objet
    Colonne B : Quantité
    Colonne C : Pays
    Colonne D-H : Données

    Résultat attendu :

    En donnant une combinaison de touche (ctrl+p), je voudrais à l'aide d'un moteur et d'un compteur qu'il détecte le pays en colonne C et qu'il transfère automatiquement cette ligne dans sa sheet correspondante.

    En sachant qu'il y a que 6 pays disponible (Chine, Afrique, France, Italie, USA, Espagne, Belgique).

    Un tri de départ me permet de ranger toutes les données par pays :

    Exemple :

    Ligne 1 à 15 : Afrique
    Ligne 16 à 22 : France
    ....

    Donc au final, il faudrait qu'il détecte toutes lignes avec pays d'afrique et qu'il les transfère en une seule fois dans la sheet "Afrique".

    Pouvez-vous m'aider ?

    Merci d'avance

    Bien à toi

  2. #2
    Expert confirmé Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 756
    Par défaut
    Bonjour,

    Ci dessous une proposition de code qui transfert chaque ligne dans la bonne feuille.
    En pré-requis il faut que chaque pays soit reconnu par une feuille qui porte le nom du pays

    A exécuter avec la feuille de données Active (Activesheet)
    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
    Sub TransfereDonnees()
     
    Dim i As Long
    Dim iCible As Long
    Dim shSource As Worksheet
    Dim Sh As Worksheet
     
    Set shSource = ActiveSheet
     
    'Copie les données dans les feuilles Pays
    For i = 2 To shSource.Range("A" & Rows.Count).End(xlUp).Row
        Set Sh = Sheets(Range("C" & i).Value)
        iCible = Sh.Range("A" & Rows.Count).End(xlUp).Row + 1
        shSource.Rows(i).Copy Sh.Range("A" & iCible)
        'Vide la ligne Copiée
        shSource.Rows(i).ClearContents
    Next i
     
    End Sub

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    165
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 165
    Par défaut Problème sur le code
    Je viens d'utiliser votre code :

    Dans la colone A j'ai mis des chiffres aléatoires,
    Dans la colone B des données aléatoires,
    Dans la colonne C les pays suivants : France Italie Roumanie

    La 1ère sheet se nomme "Travail"
    La 2ème sheet se nomme "France"
    La 3ème sheet se nomme "Italie"
    La 4ème sheet se nomme "Roumanie"

    Lorsque je fais mon "Ctrl+a" il sélectionne toute la sheet "travail" et ne fait aucun traitement.

    Pouvez-vous m'aider ?

    Merci d'avance

  4. #4
    Expert confirmé Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 756
    Par défaut
    Le code proposé fonctionne sur la base de ton premier post.
    Si tu changes l'ordre des colonnes en cours de route, modifie le code pour qu'il prenne en considération tes modifications.

    pour info, ctrl + a est un raccourci windows pour tout sélectionner, cela ne pourra pas exécuter la macro.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    165
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 165
    Par défaut Modification code vb
    Je viens de changer le ctrl+a par un ctrl+t.

    Concernant les changements, il n'y a rien qui puisse modifier le code.

    Les pays sont toujours en colonne C, donc que dois-je faire ?

  6. #6
    Expert confirmé Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 756
    Par défaut
    Post un fichier exemple

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    165
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 165
    Par défaut Modification code vb
    J'ai ajouté des données dans les colonnes (D à H).

    Et çà à fonctionné !

    Cependant, je voulais à la base mettre les données dans une sheet nommée "travail".

    Si je colle les données dans travail, il transfère toutes les lignes, sauf la premières !

    Que dois-je faire ?

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

Discussions similaires

  1. [XL-2003] Macro tri répartition
    Par korni184 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 16/01/2012, 21h13
  2. [XL-2003] Macro Tri
    Par jerome.cubi dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 09/07/2010, 17h13
  3. [Toutes versions] Macro, tri et impression
    Par michel0 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 18/05/2010, 00h36
  4. [XL-2007] Macro tri croissant
    Par Jay29 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 22/09/2009, 14h41
  5. [OpenOffice][Tableur] Macro-transfert macro tri colonne de Excell vers Open
    Par ObjectifSciences dans le forum OpenOffice & LibreOffice
    Réponses: 1
    Dernier message: 26/11/2008, 11h30

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