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 :

MON Code VBA ne fonction pas sur mon tableau de bord


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Mars 2018
    Messages
    110
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Ressources humaines

    Informations forums :
    Inscription : Mars 2018
    Messages : 110
    Par défaut MON Code VBA ne fonction pas sur mon tableau de bord
    Bonjour la Famille ,

    J'ai besoin de votre assistance concernant mon fichier excel qui semble ne pas fonctionner sur mon code vba , ci-joint mon fichier excelTableau de Bord.xlsm

    Code VBA :

    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
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
     
    Sub MiseAJourTableauDeBord()
        Dim wsOutbound As Worksheet
        Dim wsRevenue As Worksheet
        Dim wsMainOeuvre As Worksheet
        Dim wsCarburant As Worksheet
        Dim wsHabillage As Worksheet
        Dim wsReachStacker As Worksheet
        Dim wsChariot As Worksheet
        Dim wsFumigation As Worksheet
        Dim wsAutre As Worksheet
        Dim wsLocationMagasin As Worksheet
        Dim wsEmpotage As Worksheet
        Dim wsTableauDeBord As Worksheet
     
        ' Récupérer les références des feuilles de calcul
        Set wsOutbound = ThisWorkbook.Sheets("Outbound")
        Set wsRevenue = ThisWorkbook.Sheets("Revenue")
        Set wsMainOeuvre = ThisWorkbook.Sheets("Main d'œuvre")
        Set wsCarburant = ThisWorkbook.Sheets("Carburant")
        Set wsHabillage = ThisWorkbook.Sheets("Habillage")
        Set wsReachStacker = ThisWorkbook.Sheets("Reach Stacker")
        Set wsChariot = ThisWorkbook.Sheets("Chariot")
        Set wsFumigation = ThisWorkbook.Sheets("Fumigation")
        Set wsAutre = ThisWorkbook.Sheets("Autre")
        Set wsLocationMagasin = ThisWorkbook.Sheets("Location Magasin")
        Set wsEmpotage = ThisWorkbook.Sheets("Empotage")
        Set wsTableauDeBord = ThisWorkbook.Sheets("Tableau de Bord")
     
        ' Récupérer les données de la feuille Outbound
        Dim outboundLastRow As Long
        outboundLastRow = wsOutbound.Cells(wsOutbound.Rows.Count, "H").End(xlUp).Row
     
        Dim outboundRange As Range
        Set outboundRange = wsOutbound.Range("H2:I" & outboundLastRow)
     
        ' Mettre à jour la colonne J de la feuille Outbound
        Dim cell As Range
        For Each cell In outboundRange
            Select Case cell.Value
                Case "Africa Sourcing"
                    Select Case cell.Offset(0, 1).Value
                        Case "Mise à Fob Sac"
                            cell.Offset(0, 2).Value = 31500
                        Case "Mise à Fob Vrac"
                            cell.Offset(0, 2).Value = 33500
                        Case "Mise à Fob Conventionnel"
                            cell.Offset(0, 2).Value = 20500
                        Case "Rechargement"
                            cell.Offset(0, 2).Value = 1000
                        Case "Logistique"
                            cell.Offset(0, 2).Value = 12000
                        Case "Manutention", "Autre"
                            cell.Offset(0, 2).Value = 50000
                    End Select
                Case "Saco"
                    Select Case cell.Offset(0, 1).Value
                        Case "Mise à Fob Sac"
                            cell.Offset(0, 2).Value = 30000
                        Case "Mise à Fob Vrac"
                            cell.Offset(0, 2).Value = 31000
                        Case "Mise à Fob Conventionnel"
                            cell.Offset(0, 2).Value = 19500
                        Case "Rechargement"
                            cell.Offset(0, 2).Value = 1000
                        Case "Logistique"
                            cell.Offset(0, 2).Value = 12000
                        Case "Manutention", "Autre"
                            cell.Offset(0, 2).Value = 50000
                    End Select
                Case "Autre"
                    Select Case cell.Offset(0, 1).Value
                        Case "Mise à Fob Sac"
                            cell.Offset(0, 2).Value = 35000
                        Case "Mise à Fob Vrac"
                            cell.Offset(0, 2).Value = 37000
                        Case "Mise à Fob Conventionnel"
                            cell.Offset(0, 2).Value = 23000
                        Case "Rechargement"
                            cell.Offset(0, 2).Value = 1000
                        Case "Logistique"
                            cell.Offset(0, 2).Value = 12000
                        Case "Manutention", "Autre"
                            cell.Offset(0, 2).Value = 50000
                    End Select
            End Select
        Next cell
     
        ' Mettre à jour le tableau de bord
        Dim dashboardLastRow As Long
        dashboardLastRow = wsTableauDeBord.Cells(wsTableauDeBord.Rows.Count, "A").End(xlUp).Row
     
        Dim dashboardRange As Range
        Set dashboardRange = wsTableauDeBord.Range("A2:K" & dashboardLastRow)
     
        For Each cell In dashboardRange
            Select Case cell.Value
                Case "Revenue"
                    cell.Offset(0, 1).Formula = "=SUMIF(Revenue!$A$2:$A$" & revenueLastRow & ",$A2,Revenue!$C$2:$C$" & revenueLastRow & ")"
                Case "Main d'œuvre"
                    cell.Offset(0, 1).Formula = "=SUMIF('Main d''œuvre'!$A$2:$A$" & mainOeuvreLastRow & ",$A2,'Main d''œuvre'!$C$2:$C$" & mainOeuvreLastRow & ")"
                Case "Carburant"
                    cell.Offset(0, 1).Formula = "=SUMIF(Carburant!$A$2:$A$" & carburantLastRow & ",$A2,Carburant!$C$2:$C$" & carburantLastRow & ")"
                Case "Habillage"
                    cell.Offset(0, 1).Formula = "=SUMIF(Habillage!$A$2:$A$" & habillageLastRow & ",$A2,Habillage!$C$2:$C$" & habillageLastRow & ")"
                Case "Reach Stacker"
                    cell.Offset(0, 1).Formula = "=SUMIF('Reach Stacker'!$A$2:$A$" & reachStackerLastRow & ",$A2,'Reach Stacker'!$C$2:$C$" & reachStackerLastRow & ")"
                Case "Chariot"
                    cell.Offset(0, 1).Formula = "=SUMIF(Chariot!$A$2:$A$" & chariotLastRow & ",$A2,Chariot!$C$2:$C$" & chariotLastRow & ")"
                Case "Fumigation"
                    cell.Offset(0, 1).Formula = "=SUMIF(Fumigation!$A$2:$A$" & fumigationLastRow & ",$A2,Fumigation!$C$2:$C$" & fumigationLastRow & ")"
                Case "Autre"
                    cell.Offset(0, 1).Formula = "=SUMIF(Autre!$A$2:$A$" & autreLastRow & ",$A2,Autre!$C$2:$C$" & autreLastRow & ")"
                Case "Location Magasin"
                    cell.Offset(0, 1).Formula = "=SUMIF('Location Magasin'!$A$2:$A$" & locationMagasinLastRow & ",$A2,'Location Magasin'!$C$2:$C$" & locationMagasinLastRow & ")"
                Case "Empotage"
                    cell.Offset(0, 1).Formula = "=SUMIF(Empotage!$A$2:$A$" & empotageLastRow & ",$A2,Empotage!$C$2:$C$" & empotageLastRow & ")"
            End Select
        Next cell
    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, je ne sais pas ouvrir le fichier, voir ci-dessous. A priori je ne vois pas d'erreur dans le code, juste que tu n'as pas déclaré les différentes variables LastRow, cela peut poser problème.
    Images attachées Images attachées  

  3. #3
    Membre confirmé
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Mars 2018
    Messages
    110
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Ressources humaines

    Informations forums :
    Inscription : Mars 2018
    Messages : 110
    Par défaut
    Voici le bon fichier sans la macro afin que tu puisses l'ouvrir.Tableau de Bord.xlsx

  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
    Salut, de prime abord je constate 2 problèmes.
    Dans la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set outboundRange = wsOutbound.Range("H2:I" & outboundLastRow)
    tu définis un range qui ne contient pas les valeurs que tu testes ensuite avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
      Select Case cell.Value
                Case "Africa Sourcing"
    en effet, cette valeur est contenue dans la colonne F, en dehors du range que tu as défini.
    Plus loin dans ton code tu définis un range dont les cellules sont vides
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set dashboardRange = wsTableauDeBord.Range("A2:K" & dashboardLastRow)
    donc tous les Case ..Select qui suivent ne donneront aucun résultat. Aussi, tu définis le range jusque ta colonne K alors que la dernière colonne est H.La macro fonctionne bien mais comme toutes les cellules testées sont vides, il ne se passe rien. Ou alors tu m'as fourni un tableau vide parce que confidentiel mais dans ce cas je peux pas vraiment tester.
    Petite remarque en passant, c'est dommage que tu aies créé des tableaux structurés pour ensuite les traiter comme de simples plages de données dans ta macro.

  5. #5
    Membre confirmé
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Mars 2018
    Messages
    110
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Ressources humaines

    Informations forums :
    Inscription : Mars 2018
    Messages : 110
    Par défaut
    Bonjour Franc ,

    En utilisant le fichier renseigné il ne marche toujours pas . Svp pouvez-vous m'envoyer le renseigner à votre niveau avec la macro Intégrée svp.

    J'ajoute certaine feuille du fichier renseigné.Tableau de Bord Mise à Jour.xlsx

  6. #6
    Membre Expert
    Inscrit en
    Décembre 2002
    Messages
    993
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 993
    Par défaut
    Salut,
    Je ne comprends pas ce que tu veux faire dans cette partie du code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Dim dashboardRange As Range
    Set dashboardRange = wsTableauDeBord.Range("A2:K" & dashboardLastRow)
     
        For Each cell In dashboardRange
            Select Case cell.Value
                Case "Revenue"
                    cell.Offset(0, 1).Formula = "=SUMIF(Revenue!$A$2:$A$" & revenueLastRow & ",$A2,Revenue!$C$2:$C$" & revenueLastRow & ")"
                Case "Main d'œuvre"
                    cell.Offset(0, 1).Formula = "=SUMIF('Main d''œuvre'!$A$2:$A$" & mainOeuvreLastRow & ",$A2,'Main d''œuvre'!$C$2:$C$" & mainOeuvreLastRow & ")"
    dashboardRange correspond a une plage de cellules qui est vide, donc la boucle Select..Case ne trouvera rien et le code ne sera pas exécuté.
    comment cell.Value pourrait prendre la valeur "Revenue" ou "Main d'oeuvre" etc... alors que le tableau est vide ?

Discussions similaires

  1. [AC-2019] Code VBA ne fonctionne pas sur contrôle image
    Par pegase23 dans le forum IHM
    Réponses: 2
    Dernier message: 31/12/2022, 14h14
  2. [XL-2016] Mon Code VBA ne fonctionne pas toujours
    Par Fab_de_chez_PERFORM dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 11/09/2021, 16h44
  3. Réponses: 2
    Dernier message: 09/01/2020, 21h50
  4. Réponses: 4
    Dernier message: 25/01/2013, 10h04

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