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 :

Ma macro ne se lance pas


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2023
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2023
    Messages : 3
    Par défaut Ma macro ne se lance pas
    Bonjour, je suis assez novice sur VBA, et je dois faire une macro qui a pour but de rajouter une nouvelle section a la fin de plusieurs feuilles (Variant de 200 à 400 par classeur) l'idée est donc de rajouter une section a la fin de chaque feuille (cette section reprends des données de la feuille existante (lié à la ligne debourses) et en rajoute de nouvelles). Par la suite je souhaiterai grouper la partie que la section vient remplacer. J'ai écris ce code mais quand je le lance rien ne fonctionne... Pouvez vous m'aider ? Je reste disponible pour tout éclaircissement ! Bonne journée à vous :

    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
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    Option Explicit
    Sub AjouterNouvelleSection()
        Dim ws          As Worksheet
        Dim coef        As Worksheet
        Dim total1      As Double
        Dim total1bis   As Double
        Dim total4      As Double
        Dim K1          As Double
        Dim K2          As Double
        Dim K3          As Double
        Dim K4          As Double
        Dim PU          As Double
        Dim QMO         As Double
        Dim SST         As Double
        Dim SearchRange As Range
        Dim deboursesRow As Range
        Dim lastRow     As Long
        Dim rng, rng2, rng3, rng4 As Range
        'RecupŽrer les coef de la feuille coef
        Set coef = ThisWorkbook.Worksheets("Coefficients")
        With K1 = coef.Range("G4").Value
            K2 = coef.Range("G6").Value
            K3 = coef.Range("G8").Value
            K4 = coef.Range("G10").Value
        End With
        'Parcourir toutes les feuilles du classeur
        For Each ws In ThisWorkbook.Worksheets
            If ws.Name <> "Coefficients" And ws.Name <> "BPDE" Then
                Set SearchRange = ws.Range("A1:C200")
                Set deboursesRow = ws.Range("A1:C200").Find("DEBOURSES", LookIn:=xlValues, SearchOrder:=xlRows)
                If Not deboursesRow Is Nothing Then
                    lastRow = SearchRange.End(xlDown).Row
                    total1bis = ws.Cells(deboursesRow.Row, 12).Value
                    total1 = ws.Cells(deboursesRow.Row, 14).Value - total1bis
                    total4 = ws.Cells(deboursesRow.Row, 16).Value
                    PU = ws.Range("C9").Value
                    QMO = ws.Cells(deboursesRow.Row, 10).Value / (total1 + total1bis + total4)
                    'Remplir les valeurs dans la nouvelle section
     
                    ws.Cells(lastRow + 3, 2).Value = "(1) Tous les prix sont hors TVA."
                    ws.Cells(lastRow + 5, 2).Value = "(2) A complŽter pour les prix de bordereau uniquement."
                    ws.Cells(lastRow + 7, 2).Value = "(3) Si les taux appliquŽs aux fournitures, aux travaux sous-traitŽs ou aux travaux exŽcutŽs"
                    ws.Cells(lastRow + 8, 2).Value = "par        'entrepreneur sont diffŽrents, les faire appara”tre distinctement."
                    ws.Cells(lastRow + 10, 2).Value = "(4) Si les frais gŽnŽraux de chantier comprennent une part importante de matŽriel ou de frais"
                    ws.Cells(lastRow + 11, 2).Value =        'installation de chantier, faire appara”tre cette part distinctement et en donner la"
                    ws.Cells(lastRow + 12, 2).Value = "dŽcomposition par nature de dŽpenses."
                    ws.Cells(lastRow + 14, 2).Value = "(5)        'entrepreneur fournit le sous-dŽtail de prix du sous-traitant."
                    ws.Cells(lastRow + 3, 9).Value = "TOTAL 1 (T1)"
                    ws.Cells(lastRow + 3, 10).Value = "(T1) hors fournitures"
                    ws.Cells(lastRow + 3, 13).Value = total1
                    ws.Cells(lastRow + 4, 10).Value = "(T1 bis) part fournitures"
                    ws.Cells(lastRow + 4, 13).Value = total1bis
                    ws.Cells(lastRow + 6, 11).Value = "T1"
                    ws.Cells(lastRow + 6, 12).Value = "T1bis"
                    ws.Cells(lastRow + 7, 10).Value = "K1 frais gŽnŽraux de sige (3)"
                    ws.Cells(lastRow + 7, 11).Value = K1
                    ws.Cells(lastRow + 7, 12).Value = K1
                    ws.Cells(lastRow + 9, 10).Value = "K2 frais gŽnŽraus de chantier (4)"
                    ws.Cells(lastRow + 9, 11).Value = K2
                    ws.Cells(lastRow + 9, 12).Value = K2
                    ws.Cells(lastRow + 11, 10).Value = "K3 alŽas et bŽnefices"
                    ws.Cells(lastRow + 10, 11).Value = K3 * (1 + K1 + K2)
                    ws.Cells(lastRow + 11, 11).Value = K3 * (1 + K1 + K2)
                    ws.Cells(lastRow + 13, 10).Value = "TOTAL 2 (T2) = T1 (1 + K1/100 + K2/100 + K3/100) + T1bis (1 + K1/100 + K2/100 + K3/100) =   "
                    ws.Cells(lastRow + 13, 12).Value = (total1 + total1bis) * (1 + K1 + K2 + K3)
                    ws.Cells(lastRow + 3, 15).Value = "K4 : frais de sous-traitance"
                    ws.Cells(lastRow + 4, 15).Value = K4
                    ws.Cells(lastRow + 4, 16).Value = "de T4"
                    ws.Cells(lastRow + 6, 15).Value = "TOTAL 4 (T4) = T3(1 + K4/100) : "
                    ws.Cells(lastRow + 7, 16).Value = total4 * (1 + K4)
                    ws.Cells(lastRow + 10, 15).Value = "TOTAL GENERAL : "
                    ws.Cells(lastRow + 11, 15).Value = "T2 + T4 ="
                    ws.Cells(lastRow + 11, 16).Value = (total1 + total1bis) * (1 + K1 + K2 + K3) + total4 * (1 + K4)
                    ws.Cells(lastRow + 13, 15).Value = "PU"
                    ws.Cells(lastRow + 13, 16).Value = Round((total1 + total1bis) * (1 + K1 + K2 + K3) + total4 * (1 + K4) / PU, 2)
                    ws.Cells(lastRow + 15, 15).Value = "QMO"
                    ws.Cells(lastRow + 15, 16).Value = FormatPercent(QMO / (total1 + total1bis + SST))
                    'Mettre une bordure autour du nouveau format
                    Set rng = ws.Range("A" & (lastRow + 2) & ":G" & (lastRow + 16))        ' Added worksheet reference for rng
                    With rng.Borders
                        .LineStyle = xlContinuous        'Border line style
                        .Weight = xlThin
                        .Color = RGB(0, 0, 0)
                    End With
                    Set rng2 = ws.Range("I" & (lastRow + 2) & ":M" & (lastRow + 16))        ' Added worksheet reference for rng2
                    With rng2.Borders
                        .LineStyle = xlContinuous        'Border line style
                        .Weight = xlThin
                        .Color = RGB(0, 0, 0)
                    End With
                    Set rng3 = ws.Range("O" & (lastRow + 2) & ":P" & (lastRow + 8))        ' Added worksheet reference for rng3
                    With rng3.Borders
                        .LineStyle = xlContinuous        'Border line style
                        .Weight = xlThin
                        .Color = RGB(0, 0, 0)
                    End With
                    Set rng4 = ws.Range("O" & (lastRow + 9) & ":P" & (lastRow + 16))        ' Added worksheet reference for rng4
                    With rng4.Borders
                        .LineStyle = xlContinuous        'Border line style
                        .Weight = xlThin
                        .Color = RGB(0, 0, 0)
                    End With
                    ws.Rows((lastRow - 14) & ":" & (lastRow - 1)).OutlineLevel = 1        'Grouper les lignes de l'ancien format
                    ws.Rows((lastRow - 14) & ":" & (lastRow - 1)).ShowDetail = FALSE
                End If
            End If
        Next ws
    End Sub

  2. #2
    Membre Expert
    Inscrit en
    Décembre 2002
    Messages
    993
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 993
    Par défaut
    Bonjour, à priori il n'y a pas d'erreur dans le code, tu as tenté une exécution pas à pas pour vérifier le contenu des variables ?

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2023
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2023
    Messages : 3
    Par défaut
    Merci pour ta réponse, moi aussi je n'ai pas trouvé d'erreur ! Oui, le problème c'est que même lorsque je lance le pas à pas détaillé rien ne s'affiche, la première ligne du code "Sub AjouterNouvelleSection()" se surligne en jaune ... et rien d'autre

  4. #4
    Membre Expert
    Inscrit en
    Décembre 2002
    Messages
    993
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 993
    Par défaut
    Sans le fichier pour tester, perso j'ai pas d'idée.

  5. #5
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 171
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 171
    Billets dans le blog
    53
    Par défaut
    Bonjour?
    Ne pas oublier que dans la déclaration de vos variables en ligne 18 Dim rng, rng2, rng3, rng4 As Range toutes ces variables à l'exception de rng4 sont des Variants
    Ce n'est pas la cause de votre problème mais il est bon que vous le sachiez
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  6. #6
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 171
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 171
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Je vois une belle erreur de syntaxe en ligne 45
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ws.Cells(lastRow + 11, 2).Value =        'installation de chantier, faire appara”tre cette part distinctement et en donner la"
    Vous avez sans doute mis l'apostrophe au lieur d'un guillemet

    Il y en a peut-être d'autres.

    Utilisez la commande Compiler Vba Project avant de lancer votre programme
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

Discussions similaires

  1. Réponses: 0
    Dernier message: 27/07/2017, 06h39
  2. [AC-2013] Table Macro de donnée after-update ne se lance pas
    Par hagbard23 dans le forum Access
    Réponses: 1
    Dernier message: 23/01/2017, 18h27
  3. Worksheets_change ne se lance pas après exécution macro
    Par d0n32 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 11/03/2013, 17h18
  4. [XL-2002] Macro dans Word qui ne se lance pas depuis Excel
    Par polemos dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 22/02/2012, 17h41
  5. Envoi d'un mail en VBA: outlook ne se lance pas
    Par Hannibal dans le forum VBA Access
    Réponses: 4
    Dernier message: 01/06/2003, 15h24

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