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 :

Simplification du code


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2015
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Août 2015
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Simplification du code
    Bonjour
    Je suis un débutant dans tous ce qui est programmation, je trouve les codes VBA intéressants et pratique car j’utilise beaucoup excel dans mon travail.
    j’essai de créer un fichier de collecte de données pour des personnes qui ne sont pas adepte d’outils en bureautique, surtout excel.
    j’essai de faire une synthèse dans un tableau qui est dans l’onglet “Dashboard” et qui collecte les information concernant la moyenne de stock, la moyenne de rotation et la disponibilité de 17 produits (l’exemple de code que j’ai fait prend que 2 produits) de cellules qui se trouve sur 12 onglets différents du même classeur, de Janvier à Décembre, Voila le 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
    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
    Sub copy_valeurs_All()
     
    Application.ScreenUpdating = False
     
    'I-Pour tous les secteurs “All”
    '------------------------------
     
    'I-1 1er Produit
    '---------------
     
    'Format cellule en nombre
    Range(“AD6:AO6”).Select
    Selection.NumberFormat = “0'Copy moyenne de stock
    Sheets(“Dashboard”).Range(“AD6”) = Sheets(“Janvier”).Range(“F226”).Value
    Sheets(“Dashboard”).Range(“AE6”) = Sheets(“Fevrier”).Range(“F226”).Value
    Sheets(“Dashboard”).Range(“AF6”) = Sheets(“Mars”).Range(“F226”).Value
    Sheets(“Dashboard”).Range(“AG6”) = Sheets(“Avril”).Range(“F226”).Value
    Sheets(“Dashboard”).Range(“AH6”) = Sheets(“Mai”).Range(“F226”).Value
    Sheets(“Dashboard”).Range(“AI6”) = Sheets(“Juin”).Range(“F226”).Value
    Sheets(“Dashboard”).Range(“AJ6”) = Sheets(“Juillet”).Range(“F226”).Value
    Sheets(“Dashboard”).Range(“AK6”) = Sheets(“Aout”).Range(“F226”).Value
    Sheets(“Dashboard”).Range(“AL6”) = Sheets(“Septembre”).Range(“F226”).Value
    Sheets(“Dashboard”).Range(“AM6”) = Sheets(“Octobre”).Range(“F226”).Value
    Sheets(“Dashboard”).Range(“AN6”) = Sheets(“Novembre”).Range(“F226”).Value
    Sheets(“Dashboard”).Range(“AO6”) = Sheets(“Décembre”).Range(“F226”).Value
     
    'Format cellule en nombre
    Range(“AD7:AO7”).Select
    Selection.NumberFormat = “0'Copy moyenne de rotation
    Sheets(“Dashboard”).Range(“AD7”) = Sheets(“Janvier”).Range(“G226”).Value
    Sheets(“Dashboard”).Range(“AE7”) = Sheets(“Fevrier”).Range(“G226”).Value
    Sheets(“Dashboard”).Range(“AF7”) = Sheets(“Mars”).Range(“G226”).Value
    Sheets(“Dashboard”).Range(“AG7”) = Sheets(“Avril”).Range(“G226”).Value
    Sheets(“Dashboard”).Range(“AH7”) = Sheets(“Mai”).Range(“G226”).Value
    Sheets(“Dashboard”).Range(“AI7”) = Sheets(“Juin”).Range(“G226”).Value
    Sheets(“Dashboard”).Range(“AJ7”) = Sheets(“Juillet”).Range(“G226”).Value
    Sheets(“Dashboard”).Range(“AK7”) = Sheets(“Aout”).Range(“G226”).Value
    Sheets(“Dashboard”).Range(“AL7”) = Sheets(“Septembre”).Range(“G226”).Value
    Sheets(“Dashboard”).Range(“AM7”) = Sheets(“Octobre”).Range(“G226”).Value
    Sheets(“Dashboard”).Range(“AN7”) = Sheets(“Novembre”).Range(“G226”).Value
    Sheets(“Dashboard”).Range(“AO7”) = Sheets(“Décembre”).Range(“G226”).Value
     
    'Format cellule en pourcentage
    Range(“AD8:AO8”).Select
    Selection.NumberFormat = “0%”
    'Copy moyenne de Disponibilité
    Sheets(“Dashboard”).Range(“AD8”) = Sheets(“Janvier”).Range(“H226”).Value
    Sheets(“Dashboard”).Range(“AE8”) = Sheets(“Fevrier”).Range(“H226”).Value
    Sheets(“Dashboard”).Range(“AF8”) = Sheets(“Mars”).Range(“H226”).Value
    Sheets(“Dashboard”).Range(“AG8”) = Sheets(“Avril”).Range(“H226”).Value
    Sheets(“Dashboard”).Range(“AH8”) = Sheets(“Mai”).Range(“H226”).Value
    Sheets(“Dashboard”).Range(“AI8”) = Sheets(“Juin”).Range(“H226”).Value
    Sheets(“Dashboard”).Range(“AJ8”) = Sheets(“Juillet”).Range(“H226”).Value
    Sheets(“Dashboard”).Range(“AK8”) = Sheets(“Aout”).Range(“H226”).Value
    Sheets(“Dashboard”).Range(“AL8”) = Sheets(“Septembre”).Range(“H226”).Value
    Sheets(“Dashboard”).Range(“AM8”) = Sheets(“Octobre”).Range(“H226”).Value
    Sheets(“Dashboard”).Range(“AN8”) = Sheets(“Novembre”).Range(“H226”).Value
    Sheets(“Dashboard”).Range(“AO8”) = Sheets(“Décembre”).Range(“H226”).Value
     
    'I-2 2ème Produit
    '----------------
     
    'Format cellule en nombre
    Range(“AD9:AO9”).Select
    Selection.NumberFormat = “0'Copy moyenne de stock
    Sheets(“Dashboard”).Range(“AD9”) = Sheets(“Janvier”).Range(“I226”).Value
    Sheets(“Dashboard”).Range(“AE9”) = Sheets(“Fevrier”).Range(“I226”).Value
    Sheets(“Dashboard”).Range(“AF9”) = Sheets(“Mars”).Range(“I226”).Value
    Sheets(“Dashboard”).Range(“AG9”) = Sheets(“Avril”).Range(“I226”).Value
    Sheets(“Dashboard”).Range(“AH9”) = Sheets(“Mai”).Range(“I226”).Value
    Sheets(“Dashboard”).Range(“AI9”) = Sheets(“Juin”).Range(“I226”).Value
    Sheets(“Dashboard”).Range(“AJ9”) = Sheets(“Juillet”).Range(“I226”).Value
    Sheets(“Dashboard”).Range(“AK9”) = Sheets(“Aout”).Range(“I226”).Value
    Sheets(“Dashboard”).Range(“AL9”) = Sheets(“Septembre”).Range(“I226”).Value
    Sheets(“Dashboard”).Range(“AM9”) = Sheets(“Octobre”).Range(“I226”).Value
    Sheets(“Dashboard”).Range(“AN9”) = Sheets(“Novembre”).Range(“I226”).Value
    Sheets(“Dashboard”).Range(“AO9”) = Sheets(“Décembre”).Range(“I226”).Value
     
    'Format cellule en nombre
    Range(“AD10:AO10”).Select
    Selection.NumberFormat = “0'Copy moyenne de rotation
    Sheets(“Dashboard”).Range(“AD10”) = Sheets(“Janvier”).Range(“J226”).Value
    Sheets(“Dashboard”).Range(“AE10”) = Sheets(“Fevrier”).Range(“J226”).Value
    Sheets(“Dashboard”).Range(“AF10”) = Sheets(“Mars”).Range(“J226”).Value
    Sheets(“Dashboard”).Range(“AG10”) = Sheets(“Avril”).Range(“J226”).Value
    Sheets(“Dashboard”).Range(“AH10”) = Sheets(“Mai”).Range(“J226”).Value
    Sheets(“Dashboard”).Range(“AI10”) = Sheets(“Juin”).Range(“J226”).Value
    Sheets(“Dashboard”).Range(“AJ10”) = Sheets(“Juillet”).Range(“J226”).Value
    Sheets(“Dashboard”).Range(“AK10”) = Sheets(“Aout”).Range(“J226”).Value
    Sheets(“Dashboard”).Range(“AL10”) = Sheets(“Septembre”).Range(“J226”).Value
    Sheets(“Dashboard”).Range(“AM10”) = Sheets(“Octobre”).Range(“J226”).Value
    Sheets(“Dashboard”).Range(“AN10”) = Sheets(“Novembre”).Range(“J226”).Value
    Sheets(“Dashboard”).Range(“AO10”) = Sheets(“Décembre”).Range(“J226”).Value
     
    'Format cellule en pourcentage
    Range(“AD11:AO11”).Select
    Selection.NumberFormat = “0%”
    'Copy moyenne de Disponibilité
    Sheets(“Dashboard”).Range(“AD11”) = Sheets(“Janvier”).Range(“K226”).Value
    Sheets(“Dashboard”).Range(“AE11”) = Sheets(“Fevrier”).Range(“K226”).Value
    Sheets(“Dashboard”).Range(“AF11”) = Sheets(“Mars”).Range(“K226”).Value
    Sheets(“Dashboard”).Range(“AG11”) = Sheets(“Avril”).Range(“K226”).Value
    Sheets(“Dashboard”).Range(“AH11”) = Sheets(“Mai”).Range(“K226”).Value
    Sheets(“Dashboard”).Range(“AI11”) = Sheets(“Juin”).Range(“K226”).Value
    Sheets(“Dashboard”).Range(“AJ11”) = Sheets(“Juillet”).Range(“K226”).Value
    Sheets(“Dashboard”).Range(“AK11”) = Sheets(“Aout”).Range(“K226”).Value
    Sheets(“Dashboard”).Range(“AL11”) = Sheets(“Septembre”).Range(“K226”).Value
    Sheets(“Dashboard”).Range(“AM11”) = Sheets(“Octobre”).Range(“K226”).Value
    Sheets(“Dashboard”).Range(“AN11”) = Sheets(“Novembre”).Range(“K226”).Value
    Sheets(“Dashboard”).Range(“AO11”) = Sheets(“Décembre”).Range(“K226”).Value
     
    Application.ScreenUpdating = True
     
    End Sub
    Le code marche cela dit l’exécution est très lente (17 produits), tellement que l’attente est handicapante, c’est due surement au nombreuses lignes de commandes.
    Y a t’il une façon de simplifier les choses.
    Merci beaucoup pour votre aide.

  2. #2
    Futur Membre du Club
    Homme Profil pro
    *
    Inscrit en
    Septembre 2018
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : *

    Informations forums :
    Inscription : Septembre 2018
    Messages : 5
    Points : 6
    Points
    6
    Par défaut
    Bonjour

    il n'y a rien qui justifie que ce code soit lent, par contre les modifications qu'il apporte peuvent déclencher des calculs qui peuvent prendre du temps.
    Essaye avec ce code légèrement modifié qui désactive le calcul automatique et les événements pendant l'exécution.

    Bien cordialement, @+

    Edit: j'ai aussi modifié tes formats de cellules pour enlever les sélections non nécessaires mais ce n'est pas cela qui pouvait beaucoup ralentir.

    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
    Sub copy_valeurs_All()
     
    Application.ScreenUpdating = False
    Application.Calculation = xlCalculationManual
    Application.EnableEvents = False
     
    'I-Pour tous les secteurs "All"
    '------------------------------
     
    'I-1 1er Produit
    '---------------
     
    'Format cellule en nombre
    Range("AD6:AO6").NumberFormat = "0"""
    'Copy moyenne de stock
    Sheets("Dashboard").Range("AD6") = Sheets("Janvier").Range("F226").Value
    Sheets("Dashboard").Range("AE6") = Sheets("Fevrier").Range("F226").Value
    Sheets("Dashboard").Range("AF6") = Sheets("Mars").Range("F226").Value
    Sheets("Dashboard").Range("AG6") = Sheets("Avril").Range("F226").Value
    Sheets("Dashboard").Range("AH6") = Sheets("Mai").Range("F226").Value
    Sheets("Dashboard").Range("AI6") = Sheets("Juin").Range("F226").Value
    Sheets("Dashboard").Range("AJ6") = Sheets("Juillet").Range("F226").Value
    Sheets("Dashboard").Range("AK6") = Sheets("Aout").Range("F226").Value
    Sheets("Dashboard").Range("AL6") = Sheets("Septembre").Range("F226").Value
    Sheets("Dashboard").Range("AM6") = Sheets("Octobre").Range("F226").Value
    Sheets("Dashboard").Range("AN6") = Sheets("Novembre").Range("F226").Value
    Sheets("Dashboard").Range("AO6") = Sheets("Décembre").Range("F226").Value
     
    'Format cellule en nombre
    Range("AD7:AO7").NumberFormat = "0"""
    'Copy moyenne de rotation
    Sheets("Dashboard").Range("AD7") = Sheets("Janvier").Range("G226").Value
    Sheets("Dashboard").Range("AE7") = Sheets("Fevrier").Range("G226").Value
    Sheets("Dashboard").Range("AF7") = Sheets("Mars").Range("G226").Value
    Sheets("Dashboard").Range("AG7") = Sheets("Avril").Range("G226").Value
    Sheets("Dashboard").Range("AH7") = Sheets("Mai").Range("G226").Value
    Sheets("Dashboard").Range("AI7") = Sheets("Juin").Range("G226").Value
    Sheets("Dashboard").Range("AJ7") = Sheets("Juillet").Range("G226").Value
    Sheets("Dashboard").Range("AK7") = Sheets("Aout").Range("G226").Value
    Sheets("Dashboard").Range("AL7") = Sheets("Septembre").Range("G226").Value
    Sheets("Dashboard").Range("AM7") = Sheets("Octobre").Range("G226").Value
    Sheets("Dashboard").Range("AN7") = Sheets("Novembre").Range("G226").Value
    Sheets("Dashboard").Range("AO7") = Sheets("Décembre").Range("G226").Value
     
    'Format cellule en pourcentage
    Range("AD8:AO8").NumberFormat = "0%"""
    'Copy moyenne de Disponibilité
    Sheets("Dashboard").Range("AD8") = Sheets("Janvier").Range("H226").Value
    Sheets("Dashboard").Range("AE8") = Sheets("Fevrier").Range("H226").Value
    Sheets("Dashboard").Range("AF8") = Sheets("Mars").Range("H226").Value
    Sheets("Dashboard").Range("AG8") = Sheets("Avril").Range("H226").Value
    Sheets("Dashboard").Range("AH8") = Sheets("Mai").Range("H226").Value
    Sheets("Dashboard").Range("AI8") = Sheets("Juin").Range("H226").Value
    Sheets("Dashboard").Range("AJ8") = Sheets("Juillet").Range("H226").Value
    Sheets("Dashboard").Range("AK8") = Sheets("Aout").Range("H226").Value
    Sheets("Dashboard").Range("AL8") = Sheets("Septembre").Range("H226").Value
    Sheets("Dashboard").Range("AM8") = Sheets("Octobre").Range("H226").Value
    Sheets("Dashboard").Range("AN8") = Sheets("Novembre").Range("H226").Value
    Sheets("Dashboard").Range("AO8") = Sheets("Décembre").Range("H226").Value
     
    'I-2 2ème Produit
    '----------------
     
    'Format cellule en nombre
    Range("AD9:AO9").NumberFormat = "0"""
    'Copy moyenne de stock
    Sheets("Dashboard").Range("AD9") = Sheets("Janvier").Range("I226").Value
    Sheets("Dashboard").Range("AE9") = Sheets("Fevrier").Range("I226").Value
    Sheets("Dashboard").Range("AF9") = Sheets("Mars").Range("I226").Value
    Sheets("Dashboard").Range("AG9") = Sheets("Avril").Range("I226").Value
    Sheets("Dashboard").Range("AH9") = Sheets("Mai").Range("I226").Value
    Sheets("Dashboard").Range("AI9") = Sheets("Juin").Range("I226").Value
    Sheets("Dashboard").Range("AJ9") = Sheets("Juillet").Range("I226").Value
    Sheets("Dashboard").Range("AK9") = Sheets("Aout").Range("I226").Value
    Sheets("Dashboard").Range("AL9") = Sheets("Septembre").Range("I226").Value
    Sheets("Dashboard").Range("AM9") = Sheets("Octobre").Range("I226").Value
    Sheets("Dashboard").Range("AN9") = Sheets("Novembre").Range("I226").Value
    Sheets("Dashboard").Range("AO9") = Sheets("Décembre").Range("I226").Value
     
    'Format cellule en nombre
    Range("AD10:AO10").NumberFormat = "0"""
    'Copy moyenne de rotation
    Sheets("Dashboard").Range("AD10") = Sheets("Janvier").Range("J226").Value
    Sheets("Dashboard").Range("AE10") = Sheets("Fevrier").Range("J226").Value
    Sheets("Dashboard").Range("AF10") = Sheets("Mars").Range("J226").Value
    Sheets("Dashboard").Range("AG10") = Sheets("Avril").Range("J226").Value
    Sheets("Dashboard").Range("AH10") = Sheets("Mai").Range("J226").Value
    Sheets("Dashboard").Range("AI10") = Sheets("Juin").Range("J226").Value
    Sheets("Dashboard").Range("AJ10") = Sheets("Juillet").Range("J226").Value
    Sheets("Dashboard").Range("AK10") = Sheets("Aout").Range("J226").Value
    Sheets("Dashboard").Range("AL10") = Sheets("Septembre").Range("J226").Value
    Sheets("Dashboard").Range("AM10") = Sheets("Octobre").Range("J226").Value
    Sheets("Dashboard").Range("AN10") = Sheets("Novembre").Range("J226").Value
    Sheets("Dashboard").Range("AO10") = Sheets("Décembre").Range("J226").Value
     
    'Format cellule en pourcentage
    Range("AD11:AO11").NumberFormat = "0%"""
    'Copy moyenne de Disponibilité
    Sheets("Dashboard").Range("AD11") = Sheets("Janvier").Range("K226").Value
    Sheets("Dashboard").Range("AE11") = Sheets("Fevrier").Range("K226").Value
    Sheets("Dashboard").Range("AF11") = Sheets("Mars").Range("K226").Value
    Sheets("Dashboard").Range("AG11") = Sheets("Avril").Range("K226").Value
    Sheets("Dashboard").Range("AH11") = Sheets("Mai").Range("K226").Value
    Sheets("Dashboard").Range("AI11") = Sheets("Juin").Range("K226").Value
    Sheets("Dashboard").Range("AJ11") = Sheets("Juillet").Range("K226").Value
    Sheets("Dashboard").Range("AK11") = Sheets("Aout").Range("K226").Value
    Sheets("Dashboard").Range("AL11") = Sheets("Septembre").Range("K226").Value
    Sheets("Dashboard").Range("AM11") = Sheets("Octobre").Range("K226").Value
    Sheets("Dashboard").Range("AN11") = Sheets("Novembre").Range("K226").Value
    Sheets("Dashboard").Range("AO11") = Sheets("Décembre").Range("K226").Value
     
    Application.ScreenUpdating = True
    Application.Calculation = xlCalculationAutomatic
    Application.EnableEvents = True
     
    End Sub

  3. #3
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Si tu veux automatiser une application avec un onglet par mois, commence par changer tes noms d'onglets : au lieu de mettre la désignation littérale des mois, mets "01", "02", "03", etc.

    Avec cette méthode, ton code sera bien plus simple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Sub copy_valeurs_All()
    Dim Mois As Long, I As Long
     
    Range(“AD6:AO10”).NumberFormat = “0”
    Range(“AD8:AO8”).NumberFormat = “0%”
    Range(“AD11:AO11”).NumberFormat = “0%”
     
    For Mois = 1 to 12
        For I = 0 to 5
            Worksheets(“Dashboard”).Cells(6 + I, 29 + Mois).Value  = Worksheets(Format(Mois, "00")).Cells(226, 6 + I).Value
        Next I
    Next Mois
     
    End Sub
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  4. #4
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 921
    Points
    55 921
    Billets dans le blog
    131
    Par défaut
    Salut.

    Remplace tes 12 onglets par un seul qui reprend également la date des mouvements au sein d'un tableau structuré, et tu pourras utiliser les outils d'analyse d'Excel tels qu'un tableau croisé dynamique, les fonctions XXX.SI.ENS, et autres. Tu éviteras ainsi du code vba et tu n'utiliseras le VBA qu'en appui, pour les quelques opérations d'automatisation de ton outil. Ca n'a plus de sens, avec les outils actuels d'Excel et la taille des feuilles de calcul (1 048 576 x 16 384), de séparer les données sur des feuilles mensuelles.

    Si on te donne les données dans une structure différente qu'un tableau structuré (par exemple 12 feuilles mensuelles et des plages classiques), la première opération incontournable consiste à restructurer ces données dans un seul tableau, et cette remarque vaut pour tout développement informatique de gestion de données. Saute cette étape et tôt ou tard, , ,
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  5. #5
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Citation Envoyé par Pierre Fauconnier Voir le message
    tu pourras utiliser les outils d'analyse d'Excel tels qu'un tableau croisé dynamique, les fonctions XXX.SI.ENS, et autres.
    +1
    Dans "autres", on peut mettre l'outil Filtrer qui peut faire des merveilles.
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  6. #6
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 921
    Points
    55 921
    Billets dans le blog
    131
    Par défaut
    Salut Menhir

    Citation Envoyé par Menhir Voir le message
    [...]Dans "autres", on peut mettre l'outil Filtrer qui peut faire des merveilles.
    Yeah


    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  7. #7
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    J'espère ne pas avoir trop simplifié ton code.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    t = Array("Janvier", "Fevrier", "Mars", "Avril", "Mai", "Juin", "Juillet", "Aout", "Septembre", "Octobre", "Novembre", "Décembre")
    For i = 0 To 11
         Sheets("Dashboard").Range("AD6:AO7,AD9:AO10").Offset(0, i).NumberFormat = "0"
         Sheets("Dashboard").Range("AD8:AO8,AD11:AO11").Offset(0, i).NumberFormat = "0%"
        Debug.Print t(i)
        Sheets("Dashboard").Range("AD6:AD11").Offset(0, i) = Application.Transpose(Sheets(t(i)).Range("F226:K226").Value)
    Next
    Dans le seule but d'amélioré mes compétences je voudrais bien comprendre le -1!
    Dernière modification par Invité ; 13/09/2018 à 13h58.

  8. #8
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 921
    Points
    55 921
    Billets dans le blog
    131
    Par défaut
    Salut Robert,

    • Pas d'accent sur "Février";
    • feuille "Dashboard" en anglais et feuilles mensuelles en français;
    • des plages fixées en dur dans le code;
    • travailler sur les noms Excel des feuilles, amenant bugs et problèmes divers lorsque l'on va (inévitablement, à mon avis) les renommer;
    • donner une solution qui fait que le demandeur s'enfonce dans la mauvaise conception de son classeur.



    Bref, une démarche de conception qui va, à très brève échéance, amener plus de problèmes que de solutions...

    Tu es ingénieur en développement. Tu as donc, comme moi, connu moultes fois la situation suivante face à un développement mal fagoté par un autre (qui est parti ou qui a été viré, ou qui était le petit cousin ou la maîtresse du boss):
    • Robert: Faut tout refaire, c'est mal foutu
    • Le client: On n'a plus le temps, on n'a plus l'argent, c'était pour hier, le développeur nous a quitté, on doit continuer avec ce qu'on a
    • Robert: Ok...



    Et Robert patche, et repatche, et rerepatche. Puis, évidemment, patatras, ça casse (Forcément, ça ne peut que casser)
    • Le client: Allo Robert? Rappliquez fissa. VOTRE code a planté, on est bloqué. C'est urgentissime.



    Alors, si au moins, dans les solutions que l'on donne sur les forums, toi, moi, et d'autres, on essayait systématiquement d'aiguiller le demandeur vers UNE bonne solution (je n'ai pas écrit LA bonne solution)...

    PS: Bien lire ma signature, hein (le -1, c'est la solution proposée qui la reçoit, pas Robert)
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  9. #9
    Invité
    Invité(e)
    Par défaut
    dans la mesure du possible je tente d'apporter une réponse au plus près de la demande.

    le demandeur expose un code qui lui appartient d'adapter à sa problématique et la solution que je préconise est lié au contexte de l'exemple.

    • Pas d'accent sur "Février";
      • on ne modifie pas le nom des onglets accent ou pas anglais ou pas c'est son nom!

    • feuille "Dashboard" en anglais et feuilles mensuelles en français;
      • idem

    • des plages fixées en dur dans le code;
      • c'est la juste réponse de la demande je n'écris le code du demandeur je lui apporte mon aide.

    • travailler sur les noms Excel des feuilles, amenant bugs et problèmes divers lorsque l'on va (inévitablement, à mon avis) les renommer;
      • même sujet (identifier par macro le nom des feuille (Month(date) par exemple) entraînerait le même genre d'erreur suivant la langue du pays.

    • donner une solution qui fait que le demandeur s'enfonce dans la mauvaise conception de son classeur.
      • je ne partage en aucun cas ton analyse mais heureusement tu es là.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sheets("Dashboard").Range("AD6") = Sheets("Janvier").Range("F226").Value
    Sheets("Dashboard").Range("AE6") = Sheets("Fevrier").Range("F226").Value
    Sheets("Dashboard").Range("AF6") = Sheets("Mars").Range("F226").Value
    Sheets("Dashboard").Range("AG6") = Sheets("Avril").Range("F226").Value
    Sheets("Dashboard").Range("AH6") = Sheets("Mai").Range("F226").Value
    Sheets("Dashboard").Range("AI6") = Sheets("Juin").Range("F226").Value
    Sheets("Dashboard").Range("AJ6") = Sheets("Juillet").Range("F226").Value
    Sheets("Dashboard").Range("AK6") = Sheets("Aout").Range("F226").Value
    Sheets("Dashboard").Range("AL6") = Sheets("Septembre").Range("F226").Value
    Sheets("Dashboard").Range("AM6") = Sheets("Octobre").Range("F226").Value
    Sheets("Dashboard").Range("AN6") = Sheets("Novembre").Range("F226").Value
     Sheets("Dashboard").Range("AO6") = Sheets("Décembre").Range("F226").Value

  10. #10
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    re
    si les noms de mois sont correctement orthographiés
    sinon utiliser un array pour les mois
    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
    Dim LeSheet As Worksheet, i&
        Application.ScreenUpdating = False
        Application.Calculation = xlCalculationManual
        Application.EnableEvents = False
        With Sheets("Dashboard")
            With .Range("AD6:AO6")
                .NumberFormat = "0"    'formatage ligne 6
                .Offset(1).NumberFormat = "0"  'formatage ligne 7
                .Offset(2).NumberFormat = "0%"  'formatage ligne 8
                .Offset(3).NumberFormat = "0"  'formatage ligne 9
                .Offset(4).NumberFormat = "0"  'formatage ligne 10
                .Offset(5).NumberFormat = "0%"""  'formatage ligne 11
     
                For i = 1 To .Cells.Count
                    Set LeSheet = Sheets(StrConv(Format("01/0" & i & "/2018", "mmmm"), vbProperCase))
                    .Cells(i) = LeSheet.Range("F226").Value    'ligne 6
                    .Cells(i).Offset(1, 0) = LeSheet.Range("G226").Value    'ligne 7
                    .Cells(i).Offset(2, 0) = LeSheet.Range("H226").Value    'ligne 8
                    .Cells(i).Offset(3, 0) = LeSheet.Range("I226").Value    'ligne 9
                    .Cells(i).Offset(4, 0) = LeSheet.Range("J226").Value    'ligne 10
                    .Cells(i).Offset(5, 0) = LeSheet.Range("K226").Value    'ligne 11
                Next
            End With
        End With
        Application.ScreenUpdating = True
        Application.Calculation = xlCalculationAutomatic
        Application.EnableEvents = True
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  11. #11
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 921
    Points
    55 921
    Billets dans le blog
    131
    Par défaut
    Tu demandes que l'on justifie le -1, j'accède à ta demande...

    Citation Envoyé par dysorthographie Voir le message
    Sheets("Dashboard").Range("AK6") = Sheets("Aout").Range("F226").Value
    Mon expérience me permet d'affirmer que ce code va planter rapidement pour les raisons que j'ai évoquées. Il suffit d'ajouter une ligne ou une colonne dans une des deux feuilles et patatra, tout ce château de cartes sera à refaire. Tu peux ne pas partager mon analyse, ce n'est pas grave, je sais que j'ai raison. C'est un simple constat technique, maintes fois vérifié.

    La conception avec les données sur plusieurs feuilles est simplement foireuse. Point barre! Ce n'est même pas à discuter tellement c'est évident. Ce n'est pas mon avis. C'est une évidence technique.

    Je dois perdre du temps à t'expliquer pourquoi alors que tu travailles avec des bases de données? Ca te viendrait à l'idée de concevoir une base de données avec autant de tables qu'il y a de mois dans une année? Et si on te propose une découpe par semaine, tu va faire quoi? Tu vas créer 52 ou 53 feuilles? Et quand tu devras consolider tout cela, tu feras quoi? Tu vas devoir ajouter des lignes de code pour chaque feuille ajoutée? ET encore, dans un SGBDR, on ne modifie pas la structure trop facilement, mais dans Excel, une simple insertion/suppression de ligne/colonne et on fout tout par terre. Et comme souvent, ceux qui réalisent ces opérations n'ont aucune conscience des liens Excel/VBA, ils y vont allègrement...

    En 2018, on ne travaille plus comme ça avec Excel (on aurait jamais dû travailler comme cela avant, ceci dit, mais faire de la belle ouvrage était plus complexe). Les tableaux structurés et autres outils sont là pour simplifier la vie des utilisateurs et le code VBA des développeurs. Aller dans un autre sens que celui-là est simplement aberrant. En détaillant cela, je ne m'en prends pas à toi, j'explique au demandeur que son classeur est beaucoup trop fragile, qu'il court à la catastrophe, et qu'il est dangereux de suivre des solutions qui le font persister dans sa mauvaise conception.
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  12. #12
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 921
    Points
    55 921
    Billets dans le blog
    131
    Par défaut
    Citation Envoyé par patricktoulon Voir le message
    re[...]
    Et allez, un patch foireux de plus pour "corriger" les fautes de frappe dans les onglets, maintenant...

    Patrick, passe un peu ton classeur à un type qui a une version anglaise de gestion de dates comme c'est souvent le cas dans les boites internationales... Je pense qu'il va se marrer (ou pas!)


    Vous en avez encore beaucoup des solutions foireuses comme celle-là?
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  13. #13
    Membre expérimenté Avatar de Transitoire
    Homme Profil pro
    Auditeur informatique
    Inscrit en
    Décembre 2017
    Messages
    724
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Auditeur informatique

    Informations forums :
    Inscription : Décembre 2017
    Messages : 724
    Points : 1 454
    Points
    1 454
    Par défaut
    Bonjour, pardonnez moi de me mêler à cette discussion.
    J'ai crée depuis des lustres un programme de Devis/Facturation/Comptabilité à base Excel, j'ai commencé Excel avec la version 1,5(Mac).(Mon programme est en toute humilité.)
    J'ai effectivement compris que pour éviter de nombreuses erreurs, il valait mieux une BD unique que des feuilles mois par mois. J'ai rajouté aussi rapidement une colonne mois (1;2; etc) tout en conservant la colonne date pour d'autres raisons.
    Par ailleurs, il est clair aussi que les accents m'ont créés de sérieux problèmes lorsque j'ai transféré mon programme en version PC pour ma fille.
    Il est parfois plus simple de prendre les bonnes habitudes que de perdre les mauvaises.
    Cordialement
    On a deux vies, la deuxième commence quand on se rend compte qu'on n'en a qu'une.
    Confucius

  14. #14
    Invité
    Invité(e)
    Par défaut
    il y a bien longtemps que j'ai banni Excel et par extension Microsoft Office.

    il n'est pas question pour moi de métamorphoser les méthode de raisonnement des demandeurs mais de les amené progressivement à la reconsidérer!
    dans le même ordre d'idées je ne commente et ne donne d'explication au exemple que e fourni. charge au demandeur de s’approprier le code et de me poser toutes les question qu'il juge utile et au quelle je réponds toujours .

    il est évidant qu'il vaut mieux organiser son fichier comme une base de donné en précisant la date de la transaction qui nous donne par conséquent l'année le mois le jour.

    et de confier la mise en forme à un TDC.
    Dernière modification par Invité ; 13/09/2018 à 16h05.

  15. #15
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 921
    Points
    55 921
    Billets dans le blog
    131
    Par défaut
    @Robert,

    Chacun son approche. Je respecte la tienne mais ne la partage pas du tout, c'est pourquoi j'ai apporté un complément technique à cette discussion, histoire que le demandeur comprenne "un peu plus vite" son erreur de conception...

    Cela dit, je ne comprends comment tu peux dire que tu as banni Excel et Office alors que tu donnes des codes qui ont manifestement été saisis dans ces applications. Perso, si j'avais banni une techno, je ne l'utiliserais plus et donc ne saurais plus donner des explications (ni des codes...) dessus
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  16. #16
    Invité
    Invité(e)
    Par défaut
    banni Excel et par extension Microsoft Office de façon professionnel! mais je me l'administre à titre de décontractant et uniquement quand je fournis un fichier!

    la plus par du temps j'écris directement dans
    Microsoft Edge sur mon téléphone.



  17. #17
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 921
    Points
    55 921
    Billets dans le blog
    131
    Par défaut
    Je vois
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  18. #18
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 921
    Points
    55 921
    Billets dans le blog
    131
    Par défaut
    En fait, Robert, si des gens se détournent d'Excel et d'Office dans leur sphère professionnelle (ou disent qu'ils se détournent de ces outils), et si Excel et Access sont si mal aimés des DSI, peut-être Est-ce parce que les utilisateurs qui viennent chercher des solutions sur les forums ne s'entendent pas suffisamment dire qu'ils sont dans l'erreur. Parce que Excel comme Access sont des outils fabuleux ou abominables selon leur utilisation. Bien utilisés (avec les données dans un seul tableau structuré plutôt que dans 12 feuilles), ces outils sont simplement fabuleux.

    Mais conforter l'utilisateur dans sa mauvaise utilisation de l'outil puis venir cracher sur cet outil me laisse pantois.

    En ce qui concerne la demande initiale: Quelle est la question posée? Simplifier mon code svp (c'est le titre de la discussion). Eh bien pour moi, simplifier le code, c'est d'abord simplifier la conception du classeur et la mettre en conformité avec les bonnes pratiques. Après, le code devient simple et léger (dans 99,999% des cas). Et dans pas mal de cas, il devient même inutile.
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  19. #19
    Invité
    Invité(e)
    Par défaut
    Je suis,et c'est pas la première fois, encore d'accord avec toi.

    Si je lutte dans ma société pour ne plus voir fleurir des fichiers Excel c'est pour une capitalisation de information.

    Ce que je fais alimente le travail de celui qui est derrière moi et ainsi de suite.

    Mais je vais rendre la parole au demandeur et le suivre attentivement sens piétiner son poste.

  20. #20
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    re
    libre au developpeur de respecter l'orthographe des mois dans l'array
    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
    Dim LeSheet As Worksheet, i&, mois
        mois = Array("", "Janvier", "Février", "Mars", "Avril", "Mai", "Juin", "Juillet", "Aôut", "Septembre", "Octobre", "Novembre", "Décembre")
        Application.ScreenUpdating = False
        Application.Calculation = xlCalculationManual
        Application.EnableEvents = False
        With Sheets("Dashboard")
            With .Range("AD6:AO6")
                .NumberFormat = "0"    'formatage ligne 6
                .Offset(1).NumberFormat = "0"  'formatage ligne 7
                .Offset(2).NumberFormat = "0%"  'formatage ligne 8
                .Offset(3).NumberFormat = "0"  'formatage ligne 9
                .Offset(4).NumberFormat = "0"  'formatage ligne 10
                .Offset(5).NumberFormat = "0%"""  'formatage ligne 11
     
                For i = 1 To .Cells.Count
                    Set LeSheet = Sheets(mois(i))
                    .Cells(i) = LeSheet.Range("F226").Value    'ligne 6
                    .Cells(i).Offset(1, 0) = LeSheet.Range("G226").Value    'ligne 7
                    .Cells(i).Offset(2, 0) = LeSheet.Range("H226").Value    'ligne 8
                    .Cells(i).Offset(3, 0) = LeSheet.Range("I226").Value    'ligne 9
                    .Cells(i).Offset(4, 0) = LeSheet.Range("J226").Value    'ligne 10
                    .Cells(i).Offset(5, 0) = LeSheet.Range("K226").Value    'ligne 11
                Next
            End With
        End With
        Application.ScreenUpdating = True
        Application.Calculation = xlCalculationAutomatic
        Application.EnableEvents = True
    voila meme si on va en amerique de toute facon c'est comme ca que s'appellent ses feuilles
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

Discussions similaires

  1. Simplification de code
    Par lodan dans le forum Langage
    Réponses: 4
    Dernier message: 20/09/2006, 19h28
  2. Simplification de code
    Par lodan dans le forum Langage
    Réponses: 2
    Dernier message: 31/08/2006, 21h51
  3. Simplification de code (suite)
    Par Jeffboj dans le forum Access
    Réponses: 1
    Dernier message: 12/04/2006, 22h34
  4. simplification de code
    Par Jeffboj dans le forum Access
    Réponses: 11
    Dernier message: 11/04/2006, 15h09
  5. [c#] Simplification de code
    Par Revan012 dans le forum Windows Forms
    Réponses: 5
    Dernier message: 04/02/2006, 16h44

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