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 :

Trie de debut et fin d alarme dans une feuille excel avec une boucle tant que


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Inscrit en
    Juillet 2010
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 44
    Points : 28
    Points
    28
    Par défaut Trie de debut et fin d alarme dans une feuille excel avec une boucle tant que
    Bonjour,

    J´ai une feuille excel avec par ligne un code alarme, un état (début ou fin) et une date ( colonne 1 à 7)
    Je souhaiterai mettre sur une meme ligne (colonne 8 à 13) le début et la fin d´une meme alarme. Le pb est que le début et la fin d´une alarme ne se suivent pas forcément, il peut y avoir d´autre alarme entre deux.

    j´ai tenté avec ce code mais j´ai une erreur dans ma boucle While
    Code :
    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
    Sub StartAndEnd()
     
    Dim i As Long, k As Long, LastRow As Long, lastRow2 As Long, j As Long
     
    With Sheets("WEC11")
     
    LastRow = .Range("A65000").End(xlUp).Row
     
    For i = LastRow To 2 Step -1
     
        For k = 1 To 3
     
        If .Cells(i, 7).Value = .Cells(1, 2).Value Then .Cells(i, k + 8).Value = .Cells(i, k).Value
     
        Next k
    Next i
     
    For i = LastRow To 2 Step -1
        For k = 9 To 11
            If .Cells(i, k).Value = "" Then .Cells(i, k).Delete xlShiftUp
        Next k
    Next i
     
     
    LastRow = .Range("A65000").End(xlUp).Row
    lastRow2 = .Range("I65000").End(xlUp).Row
     
    For i = 2 To LastRow
        For j = 2 To lastRow2
     
            For k = 1 To 3
                If .Cells(i, 7).Value = .Cells(1, 1).Value Then
                Do While .Cells(i, 3).Value <> .Cells(j, 11).Value
                i = i + 1
                Loop
                End If
     
            Next k
        Next j
    Next i
     
     
     
     
     
     
     
     
     
     
     
     
    End With
     
     
    End Sub
    Si quelqu´un peut m´expliquer pourquoi il y a une erreur et éventuellement proposer une autre solution

    Merci

    bakaouf

  2. #2
    Nouveau membre du Club
    Inscrit en
    Juillet 2010
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 44
    Points : 28
    Points
    28
    Par défaut
    Dslé j´avais oublié une ligne, l´erreur est dans la boucle While
    code :
    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
    Sub StartAndEnd()
     
    Dim i As Long, k As Long, LastRow As Long, lastRow2 As Long, j As Long
     
    With Sheets("WEC11")
     
    LastRow = .Range("A65000").End(xlUp).Row
    ' Mettre le début dans les colonnes 9 à 11
    For i = LastRow To 2 Step -1
     
        For k = 1 To 3
     
        If .Cells(i, 7).Value = .Cells(1, 2).Value Then .Cells(i, k + 8).Value = .Cells(i, k).Value
     
        Next k
    Next i
     
    For i = LastRow To 2 Step -1
        For k = 9 To 11
            If .Cells(i, k).Value = "" Then .Cells(i, k).Delete xlShiftUp
        Next k
    Next i
     
     
    LastRow = .Range("A65000").End(xlUp).Row
    lastRow2 = .Range("I65000").End(xlUp).Row
    'Mettre la fin dans les colonnes 12 à 14
    For i = 2 To LastRow
        For j = 2 To lastRow2
     
            For k = 1 To 3
                If .Cells(i, 7).Value = .Cells(1, 1).Value Then
                Do While .Cells(i, 3).Value <> .Cells(j, 11).Value
                i = i + 1
                Loop
                End If
                .Cells(i, k).Value = .Cells(j, k + 11).Value
            Next k
        Next j
    Next i
     
     
     
     
     
     
     
     
     
     
     
     
    End With
     
     
    End Sub

  3. #3
    Nouveau membre du Club
    Inscrit en
    Juillet 2010
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 44
    Points : 28
    Points
    28
    Par défaut
    J ai trouvé tt seul une solution.
    Si cela interresse des gens :
    code
    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
    Sub StartAndEnd()
     
    Dim i As Long, k As Long, LastRow As Long, lastRow2 As Long, j As Long
     
    With Sheets("WEC11")
     
    LastRow = .Range("A65000").End(xlUp).Row
    ' Mettre le début dans les colonnes 9 à 11
    For i = LastRow To 2 Step -1
     
        For k = 1 To 3
     
        If .Cells(i, 7).Value = .Cells(1, 2).Value Then .Cells(i, k + 8).Value = .Cells(i, k).Value
     
        Next k
    Next i
     
    For i = LastRow To 2 Step -1
        For k = 9 To 11
            If .Cells(i, k).Value = "" Then .Cells(i, k).Delete xlShiftUp
        Next k
    Next i
     
    For i = LastRow To 2 Step -1
        For k = 1 To 7
            If .Cells(i, 7).Value = .Cells(1, 2).Value Then .Cells(i, k).Delete xlShiftUp
        Next k
    Next i
     
     
    LastRow = .Range("A65000").End(xlUp).Row
    lastRow2 = .Range("I65000").End(xlUp).Row
    'Mettre la fin dans les colonnes 12 à 14
    For i = 2 To LastRow
        For j = 2 To lastRow2
     
            For k = 1 To 3
                If .Cells(i, 7).Value = .Cells(1, 1).Value Then
                Do While .Cells(i, 3).Value <> .Cells(j, 11).Value
                i = i + 1
                Loop
     
                .Cells(j, k + 11).Value = .Cells(i, k).Value
                End If
            Next k
        Next j
    Next i
     
     
     
    End With
     
     
    End Sub

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

Discussions similaires

  1. Ajout d'un bouton dans une feuille excel avec vba
    Par nsqualli dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 25/11/2008, 15h35
  2. Réponses: 6
    Dernier message: 31/05/2008, 18h05
  3. bouton d'appel d'une macro dans une feuille excel avec défilement
    Par fabrice44 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 09/01/2008, 15h30
  4. Réponses: 9
    Dernier message: 19/02/2007, 20h33
  5. Insérer une feuille Excel avec macro dans une page HTML
    Par Pakkaï dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 08/12/2006, 17h40

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