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 :

transposition des données


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    Inscrit en
    Avril 2013
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Avril 2013
    Messages : 1
    Par défaut transposition des données
    Bonjour,je veux transposé mes données (feuille 1) sur feuille 2 et j'ai déja construit un code vba (fichier cjoint) mais le probléme c'est que le macro ne copié pas la colonne dur (format hh:mm:ss) et il saute les 3 premiéres valeurs de la colonne pin donc je veux savoir s'il y'a quelqu'un qui peut m'aidé à rectifié le code .
    merci d'avance

    http://cjoint.com/?CDilOkL82Qb

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    652
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2009
    Messages : 652
    Par défaut
    Bonjour,

    Essayez avec votre code modifié.
    Les modifications sont signalées par des ///
    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
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    Option Base 1
     
    ' feuille source
     
    Const FS = "Sheet1"
    Const lidebFS = 1   '////
    Const codebFS = 1
    Const codur = "b"
     
    ' feuille but
     
    Const FB = "Sheet2"
    Const lidebFB = 2
    Const codebfb = 1
     
    Public Sub Transfert()
    Dim lifinFS As Long, liFS As Long, k As Long, li1FS As Long, li2FS As Long
    Dim liFB As Long
    Dim tf, f, nuf
    Dim maxdur As Double    '/// Double ou Variant
    Dim plage As Range, C As Range, plagef As Range
     
    ' init tf
    tf = Array("run", "cell", "oper", "pin", "back")
    ' en têtes feuille but
    With Sheets(FB).Cells(lidebFB, codebfb)
      .Value = "dur"
     
    End With
    For k = 1 To 5
      With Sheets(FB).Cells(lidebFB, codebfb + k)
        .Value = tf(k)
        .HorizontalAlignment = xlCenter
        .VerticalAlignment = xlCenter
      End With
    Next k
     
    ' transfert
    With Sheets(FS)
      lifinFS = .Cells(Rows.Count, codebFS).End(xlUp).Row
     
      '///
      Set plage = .Range(codur & lidebFS + 1 & ":" & codur & lifinFS)
       maxdur = WorksheetFunction.Max(plage)
      '--- trouve le numéro de la première ligne contenant Max ---
      Dim R As Range
      Dim NbLig As Long
      For Each R In plage
        If R = maxdur Then
          NbLig = R.Row
          Exit For
        End If
      Next R
      '--- Resize la plage ---
      Set plage = plage.Resize(NbLig - 1, 1)
      '--- Copier/Coller de la plage ---
      ' colonne dur
      plage.Copy Sheets(FB).Cells(lidebFB + 1, 1)
        '///
     
     
     
      ' colonnes fact
      ' les 4 premières
     
      Set plage = .Range(.Cells(lidebFS, codebFS), .Cells(lifinFS, codebFS))
     
      li1FS = lidebFS + 1
      For nuf = 2 To 5
        f = tf(nuf)
        Set C = plage.Find(f, , , xlWhole)
        li2FS = C.Row
        Set plagef = .Range(.Cells(li1FS, codebFS + 2), .Cells(li2FS - 1, codebFS + 2))
     
        plagef.Copy Sheets(FB).Cells(lidebFB + 1, codebfb + nuf - 1)
        li1FS = li2FS
     
      Next nuf
     
      ' la cinquième
     
      li2FS = lifinFS
      .Range(Cells(li1FS, codebFS + 2), Cells(li2FS, codebFS + 2)).Copy Sheets(FB).Cells(lidebFB + 1, codebfb + 5)
    End With
    End Sub

Discussions similaires

  1. Transposition des données d'une table
    Par alex291184 dans le forum VBA Access
    Réponses: 10
    Dernier message: 06/09/2007, 16h36
  2. cherche module ou langage pour récupérer des données audio..
    Par Ry_Yo dans le forum Langages de programmation
    Réponses: 5
    Dernier message: 12/05/2003, 17h44
  3. Réponses: 13
    Dernier message: 20/03/2003, 08h11
  4. Structure des données en retour d'un DBExtract ?
    Par mikouts dans le forum XMLRAD
    Réponses: 4
    Dernier message: 24/01/2003, 15h15
  5. Réponses: 2
    Dernier message: 18/12/2002, 10h30

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