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 :

transfert entre deux feuilles suivant des conditions [Toutes versions]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juin 2010
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 27
    Par défaut transfert entre deux feuilles suivant des conditions
    Bonjour,
    Etant donne que je debute sous vba et excel j'ai besoin de votre aide,

    J'ai plusieur ameliorations a effectuer dans ce classeur,

    Premierement ce fichier excel contient 38feuilles:
    la premiere feuille evolue de jour en jour ( ajout de ligne par differents personne avec la meme structure- chaque colonne est bien definis, comme par exemple la colonne A, c'est la date. la colonne B, Le noms des personnes qui interviennent dans ce fichier, la colonne C, le numero de modules etc...)

    je voudrais faire une macro ou plusieurs, qui me copierai des lignes d'une feuille a une autre selon une certaine conditions,

    je m'explique:

    si par exemple dans la colonne B2, j'ai "801" ou "801a" ou "801b" ou "801c", je voudrais que la macro me copie automatiquement la ligne complete vers la feuille "801" et a chaque fois qu'on detecte dans la colonne B de la premiere feuille les termes "801" ou "801a" ou "801b" ou "801c" je voudrais que la feuille "801" s'incremente a la suite...

    Est ce que je me suis bien exprime ou vous avez des questions?

    Sachant que je dois traiter les donnes a partir de "801" jusqu'a "837" et avec les lettres A, B et C a la suite donc 37*3= 111 donnees differentes...

    En esperant trouver mes reponses sur ce forum, Au plaisir de vous lire Merci!

  2. #2
    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
    Une proposition
    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
    Public Sub Transfert()
    Dim LastLig As Long
    Dim k As Integer
    Dim j As Byte
    Dim Crit As String
     
    Application.ScreenUpdating = False
    With Sheets("BASE")     'à adpter
       LastLig = .Cells(Rows.Count, 2).End(xlUp).Row
       For k = 801 To 837
          Crit = k
          For j = 1 To 2
             With .Range("B1:B" & LastLig)
                .AutoFilter
                .AutoFilter Field:=1, Criteria1:=Crit
             End With
             If .Range("B1:B" & LastLig).SpecialCells(xlCellTypeVisible).Count > 1 Then
                On Error Resume Next
                .Range("B2:B" & LastLig).SpecialCells(xlCellTypeVisible).EntireRow.Copy Sheets("" & k & "").Cells(Rows.Count, 2).End(xlUp).Offset(1, 0)
                On Error GoTo 0
             End If
             .Range("B1:B" & LastLig).AutoFilter
             Crit = Crit & "*"
          Next j
       Next k
    End With
    End Sub
    Edit, suite à la demande en MP, crée un module général, y colle cette sub (en adaptant le nom de la feuille de donnée, que j'ai nommé ici BASE pour exemple)
    Tu peux lancer la macro de différentes manières

  3. #3
    Membre averti
    Inscrit en
    Juin 2010
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 27
    Par défaut
    Merci!
    je vais essayer cette soluce et je te tiens au courant!

    et pour lancer la macro, dois je le faire manuellement? ou est ce que c'est possible que ca se fasse automatiquement?

  4. #4
    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
    ça dépend de ce que tu veux faire
    bien sûr ce que je proposais ce n'est pas une solution clé en main
    c'est à dire ça suppose que toutes les feuilles de 801 à 837 existent déjà, qu'elle sont vides à l'exception de la ligne des titre...etc

  5. #5
    Membre averti
    Inscrit en
    Juin 2010
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 27
    Par défaut
    non les feuilles de 801 a 837 sont deja remplis et par rapport a la feuille c'est pas le nombre de lignes qui sont remplis,

    a moins que je laisse les feuilles de 801 a 837 vides et qu'en mettant ce code, est ce que ca va me les remplir automatiquement? (mettre a jour si tu preferes) car la premiere feuille a deja plus 700 lignes de remplis...

    c'est juste une recopie d'informations a partir de la premiere feuille, car les modifications externe ne seront faites que sur la premiere feuille, apres c'est excel qui va mettre a jour les feuilles 801 a 837...

    concernant les macros, je voudrais qu'il n'y ait pas d'autres manip a faire pour que ce code soit pris en compte, juste on ouvre le fichier, on remplis la premiere feuille et excel remplis les autres... on enregistre le fichier et c'est tout,

    Je ne veux pas que les utilisateurs ont besoin d'aller activer la macro avant chaque entrer de donnees...

  6. #6
    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
    Si la première feuille sert comme base de données, si tu peux envisager par code d'effacer toutes les données des feuilles filles et de remplir chacune par les données correspondantes issues de la feuille mère?
    si tuas compris le code?
    il filtre les données sur la colonne B
    copie les lignes filtrées dans la feuille correspondante
    enlève le filtrer

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

Discussions similaires

  1. [XL-2010] Transferts de données entre deux feuilles
    Par ElPibeOro dans le forum Macros et VBA Excel
    Réponses: 22
    Dernier message: 30/04/2013, 18h04
  2. [XL-2010] Transférer des données entre deux feuilles et les placer à des lignes spécifiques
    Par ElPibeOro dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 26/04/2013, 15h25
  3. copier des infos avec condition entre deux feuilles
    Par suikasensei dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 07/07/2011, 18h36
  4. [XL-2003] Rechercher des donnée entre deux feuilles
    Par mimil49 dans le forum Excel
    Réponses: 1
    Dernier message: 06/07/2011, 17h14
  5. Réponses: 2
    Dernier message: 10/10/2008, 21h35

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