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 :

Gros problème de débogage [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Ingénieur d'Etudes Mécaniques
    Inscrit en
    Janvier 2013
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur d'Etudes Mécaniques
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2013
    Messages : 8
    Points : 5
    Points
    5
    Par défaut Gros problème de débogage
    Bonjour à tous, je vais encore faire appel à vous!

    Je vous explique mon problème:
    Je souhaite créer une macro qui permet de faire un extract d'une semaine de mon fichier de plan de charge.
    Et dans cet extract, je ne souhaite voir apparaître que les projets pour lesquels une ressource est affectée au moins un jour durant la semaine à extraire.

    Le principe est donc de copier à partir de la feuille "PDC_2013_Prévi" sur la feuille "Extract_Semaine" une partie de l'en-tête du tableau relative aux dates, ainsi que les lignes de projets pour lesquelles il y a une ressource affectée au moins un jour durant la semaine à extraire

    Voici le code que j'ai écrit:
    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
    Option Explicit
        'Sauvegarde
        Dim wb As Workbook
        Dim ws As Worksheet
        Dim Nom, chemin As String
        'Extract
        Dim i, j, k As Integer
        Dim SEM As String
        Dim DebutSEM As String
        Dim Journ As String
        Dim JourVar As String
        Dim NBAffectation As String
        Dim LigneCourante As String
        Dim LigneLibre As String
     
    Sub Commande_Cliquer()
     
        SEM = InputBox("Rentrer le numéro de la semaine", "Numéro de semaine")
        SEM = "S" & SEM
        NBAffectation = Sheets("PDC_2013_Prévi").Range("E65536").End(xlUp).Row + 1
     
        'Trouver la date de début
        i = 13
        While Sheets("PDC_2013_Prévi").Cells(3, i).Value <> SEM
            i = i + 1
        Wend
     
        DebutSEM = i
        Journ = DebutSEM
     
        'Copier le bandeau de la bonne semaine
        k = 13
        While Sheets("PDC_2013_Prévi").Cells(3, i).Value = SEM
            For j = 1 To 5
                Sheets("Extract_Semaine").Cells(j, k).Value = Sheets("PDC_2013_Prévi").Cells(j, i).Value
            Next
            i = i + 1
            k = k + 1
        Wend
     
        'Copier les lignes affectées
        LigneCourante = 6
        While LigneCourante <> NBAffectation
     
            If Sheets("PDC_2013_Prévi").Cells(LigneCourante, 5).Value <> "" Then
     
                Do While Sheets("PDC_2013_Prévi").Cells(3, Journ).Value = SEM
     
                    JourVar = DebutSEM
                    If Sheets("PDC_2013_Prévi").Cells(LigneCourante, Journ).Value <> "" Then
                        LigneLibre = Sheets("Extract_Semaine").Range("E65536").End(xlUp).Row + 1
     
                        For i = 1 To 12
                            Sheets("Extract_Semaine").Cells(LigneLibre, i).Value = Sheets("PDC_2013_Prévi").Cells(LigneCourante, i).Value
                        Next
     
                        j = 13
     
                        For i = JourVar To JourVar + 6
                            Sheets("Extract_Semaine").Cells(LigneLibre, j).Value = Sheets("PDC_2013_Prévi").Cells(LigneCourante, i).Value
                            j = j + 1
                        Next
     
                        Exit Do
     
                    End If
     
                    Journ = Journ + 1
     
                Loop
     
            Else
                LigneCourante = LigneCourante + 1
            End If
            LigneCourante = LigneCourante + 1
        Wend
     
    End Sub
    Ce code me donne une erreur 1004... sur la boucle loop while et je ne sais pas pourquoi.
    Je vous laisse aussi mon tableau allégé en pièce jointe.
    Et je vous remercie de l’intérêt que vous allez porter à ma demande.
    Bonne soirée
    Fichiers attachés Fichiers attachés

  2. #2
    Expert éminent sénior 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
    Points : 31 877
    Points
    31 877
    Par défaut
    Bonsoir

    Je n'ai pas regardé votre code, mais j'ai proposé une autre variante (à adapter éventuellement au niveau résultat obtenu)

    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
    Sub Commande_Cliquer()
    Dim Plage As Range, c As Range, v As Range
    Dim Lastlig As Long, i As Long
    Dim AuMoins As Boolean
    Dim SEM As String
    Dim k As Byte
     
    SEM = InputBox("Rentrer le numéro de la semaine", "Numéro de semaine")
    SEM = "S" & SEM
     
    Worksheets("Extract_Semaine").UsedRange.Clear
     
    With Worksheets("PDC_2013_Prévi")
        Set c = .Rows(3).Find(SEM, LookIn:=xlValues, lookat:=xlWhole, SearchDirection:=xlNext)
        If Not c Is Nothing Then
            Set v = .Rows(3).Find(SEM, LookIn:=xlValues, lookat:=xlWhole, SearchDirection:=xlPrevious)
            k = v.Column - c.Column + 1
            Lastlig = .Cells(.Rows.Count, "I").End(xlUp).Row
            Set Plage = Union(.Range("B4:L5"), c.Offset(1, 0).Resize(2, k))
     
            For i = 6 To Lastlig
                Set v = c.Offset(i - 3, 0).Resize(1, k)
                If Application.Count(v) <> 0 Then
                    AuMoins = True
                    Set Plage = Union(Plage, .Range("B" & i & ":L" & i), v)
                End If
            Next i
            Set v = Nothing
            If AuMoins Then Plage.Copy Worksheets("Extract_Semaine").Range("B4")
            Set Plage = Nothing
            Set c = Nothing
        End If
    End With
    End Sub

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Ingénieur d'Etudes Mécaniques
    Inscrit en
    Janvier 2013
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur d'Etudes Mécaniques
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2013
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    Merci beaucoup pour la réponse...
    J'ai pas tout compris, mais ça marche impécable.

    J'aimerais bien moi aussi connaitre et utiliser les fonctions VBA. Existe-t-il un livre que je peux acheter pour apprendre?

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

Discussions similaires

  1. [Lecture de FichierXML] <--Gros problème
    Par waldo2188 dans le forum Entrée/Sortie
    Réponses: 3
    Dernier message: 18/03/2005, 18h15
  2. gros problème id
    Par Sékiltoyai dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 20/12/2004, 12h53
  3. Gros problème avec la facturation de Tiscali
    Par Harry dans le forum Dépannage et Assistance
    Réponses: 5
    Dernier message: 21/10/2004, 19h55
  4. Gros problème de session/cookies
    Par valfredr dans le forum XMLRAD
    Réponses: 18
    Dernier message: 03/06/2004, 10h21
  5. Gros Problème avec DirectShow et la méthode RELEASE
    Par Olivier Delmotte dans le forum DirectX
    Réponses: 3
    Dernier message: 10/03/2003, 19h10

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