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 :

Extraire les données d'une feuille vers une autre en les organisant via diverses méthodes


Sujet :

Macros et VBA Excel

  1. #21
    Membre émérite
    Inscrit en
    Octobre 2010
    Messages
    1 401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 401
    Points : 2 684
    Points
    2 684
    Par défaut
    Méthode très simple:

    Une seule passe : Lecture de chacune des lignes et transcription des données au fur et à mesure.


    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
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    Sub tt()
     Set f1 = Worksheets("Feuil1")
     Set f2 = Worksheets("Feuil2")
     f2.Cells.Clear
     
     derniereLigne = f1.UsedRange.Rows.Count
     
     ligneF2 = 1
     
     PremiereColdate = 4
     DerniereColDate = Sheets("Feuil1").Range("A1").CurrentRegion.Columns.Count
     
     For ColonneDate = Cells(1, PremiereColdate).Column To Cells(1, DerniereColDate).Column
     debut = 0
     
     For i = 2 To derniereLigne
     If f1.Cells(i, 1) <> "" Then
     
      ligneF2 = ligneF2 + 1
      f2.Cells(ligneF2, 1) = f1.Cells(i, 1)
      debut = i
     
      colDest = 3
      OKDate = False
      For j = debut To derniereLigne
       'Verifie si c'est le même collaborateur ou le prochain
       If f1.Cells(j, 1) <> "" And j > debut Then
        Exit For
       Else
        'Verifie si le numéro d'item est OK.
        If f2.Cells(1, colDest) <> "" And f1.Cells(j, "C").Value <> f2.Cells(1, colDest) Then
         'Erreur : les numéros d'items ne sont pas identiques
         f1.Activate
         f1.Cells(j, "C").Select
         f2.Activate
         f2.Cells(1, colDest).Select
         MsgBox "Erreur : " & f1.Cells(j, "C").Value
         Stop
         End
       Else
     
     
      If f2.Cells(1, colDest) = "" Then
       'Ecrit entête de la colonne
        f2.Cells(1, colDest) = f1.Cells(j, "C")
       End If
       'Ecrit valeur de cet item
       f2.Cells(ligneF2, colDest) = f1.Cells(j, ColonneDate)
       End If
       If OKDate = False Then
       'Copie la date en colonne B
        f1.Cells(1, ColonneDate).copy f2.Cells(ligneF2, "B")
        OKDate = True
       End If
       'Incrémente Colonne Destination
       colDest = colDest + 1
       End If
      Next
     
      End If
     
     Next
     
     Next
     MsgBox "Fin"
    End Sub

  2. #22
    Futur Membre du Club
    Homme Profil pro
    Superviseur de Hotline
    Inscrit en
    Avril 2014
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Superviseur de Hotline
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2014
    Messages : 13
    Points : 5
    Points
    5
    Par défaut DONE !
    Bonjour à tous !


    Et bien cette fois-ci je crois qu'on y est. C'est exactement ce que je cherchais à réaliser (code DocMarti). Je suppose que quand tu as dis, "il ne te reste qu'à ajouter deux For et Next", c'est ce à quoi tu pensais. J'essayais de le faire mais j'organisais mal le code. En tout cas, vraiment un grand merci à vous deux (Il va me falloir du temps avant de décrypter la seconde proposition, mais j'y arriverai, ce n'est que ma première macro !)

    Je me vois donc l'obligation de mettre cette discussion en RESOLU !

    Encore un grand merci pour votre aide et à bientôt !!

    Cordialement,

  3. #23
    Membre émérite
    Inscrit en
    Octobre 2010
    Messages
    1 401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 401
    Points : 2 684
    Points
    2 684
    Par défaut
    Citation Envoyé par Maaestro Voir le message
    (code DocMarti). Je suppose que quand tu as dis, "il ne te reste qu'à ajouter deux For et Next", c'est ce à quoi tu pensais. J'essayais de le faire mais j'organisais mal le code. ,
    Non. Je me suis mal exprimé. Désolé. Je pensais aux 2 For...Next que je venais de mettre dans mon post No.11 pour compléter ton approche.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    For Coldate = 3 To 4
     
    For collab = 1 To NbCollaborateurs
    Mon dernier code n'a aucun rapport avec ton approche basée sur le fait que tous les collaborateurs ont le même nombre d'items (25).

    Dans mon dernier code, chaque collaborateur peut avoir un nombre différent d'items : ça ne me dérange pas. Je suis habitué aux imprévus qu'on rencontre souvent sur une feuille Excel.

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Transférer une ligne d'une feuille vers une autre feuille
    Par ElPibeOro dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 23/04/2012, 10h20
  2. Déplacer une image d'une feuille vers une autre dans un fichier Excel
    Par helenaide dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 03/10/2011, 14h27
  3. [XL-2007] copier une ligne d'une feuille vers une autre feuille
    Par scarfunk dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 27/05/2010, 22h18
  4. Macro Copier données d'une feuille vers une feuille cible
    Par La Zélie dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 08/09/2008, 10h01
  5. Réponses: 8
    Dernier message: 12/10/2007, 12h54

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