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 :

Amélioration d'un fichier excel en vba


Sujet :

Macros et VBA Excel

  1. #1
    Membre actif
    Homme Profil pro
    Inscrit en
    Septembre 2011
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2011
    Messages : 27
    Par défaut Amélioration d'un fichier excel en vba
    Bonjour,
    Je suis en train d'essayer de créer un fichier excel qui grace à des macro permet :
    à certaines personnes de saisir des infos
    à d'autres de mettre à jour ces infos dans la feuille principale.
    Lorsque je modifie l'ordre des lignes j'arrive à remettre toutes les feuilles dans l'ordre (par rapport au fichier "ecran scheduler"), par contre si je rajoute ou je supprime des lignes cela ne se met pas à jour dans les autres feuilles.
    Quelqu'un peut il m'aider pour que l'ajout/suppression de ligne dans la feuille "ecran scheduler" soit mis à jour lorsque j'exporte? (ouverture>>>admin et admin).
    Merci par avance

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour

    Il est plus souhaitable de mettre des explications et le code qui fait l'action qu'un fichier joint qui ne sera pas lu par tous.

    Philippe

  3. #3
    Membre actif
    Homme Profil pro
    Inscrit en
    Septembre 2011
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2011
    Messages : 27
    Par défaut code "made in enregistreur de macro"
    Bonsoir,
    Voici le code de l'export. Bonne soirée

    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
    Columns("C:C").Select
        Selection.Insert Shift:=xlToRight
        Columns("D:D").Select
        Selection.Insert Shift:=xlToRight
        Range("C5").Select
        ActiveCell.FormulaR1C1 = "=RC[-2]&RC[-1]"
        Range("C5").Select
        Selection.Copy
        Range(Selection, Selection.End(xlDown)).Select
        ActiveSheet.Paste
        Range("D5").Select
        Application.CutCopyMode = False
        ActiveCell.FormulaR1C1 = "1"
        Range("D6").Select
        ActiveCell.FormulaR1C1 = "=R[-1]C+1"
        Range("D6").Select
        Selection.Copy
        Range(Selection, Selection.End(xlDown)).Select
        ActiveSheet.Paste
        Sheets("Faisabilité ABB").Select
        Columns("C:C").Select
        Application.CutCopyMode = False
        Selection.Insert Shift:=xlToRight
        Range("C5").Select
        ActiveCell.FormulaR1C1 = _
            "=VLOOKUP(RC[-2]&RC[-1],'Ecran scheduler'!C:C[1],2,FALSE)"
        Selection.Copy
        Range(Selection, Selection.End(xlDown)).Select
        ActiveSheet.Paste
        Sheets("Faisabilité WERNER").Select
        Columns("C:C").Select
        Application.CutCopyMode = False
        Selection.Insert Shift:=xlToRight
        Range("C5").Select
        ActiveCell.FormulaR1C1 = _
            "=VLOOKUP(RC[-2]&RC[-1],'Ecran scheduler'!C:C[1],2,FALSE)"
        Selection.Copy
        Range(Selection, Selection.End(xlDown)).Select
        ActiveSheet.Paste
        Sheets("Faisabilité SA1").Select
        Columns("C:C").Select
        Application.CutCopyMode = False
        Selection.Insert Shift:=xlToRight
        Range("C5").Select
        ActiveCell.FormulaR1C1 = _
            "=VLOOKUP(RC[-2]&RC[-1],'Ecran scheduler'!C:C[1],2,FALSE)"
        Selection.Copy
        Range(Selection, Selection.End(xlDown)).Select
        ActiveSheet.Paste
     
    ' Tri des tableaux en fonction vlookup de l'écran scheduler
     
        Sheets("Faisabilité ABB").Select
        Range("A4:K4").Select
        Range(Selection, Selection.End(xlDown)).Select
        Range(Selection, Selection.End(xlDown)).Select
        Application.CutCopyMode = False
        Selection.Sort Key1:=Range("C5"), Order1:=xlAscending, Header:=xlYes, _
            OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
            DataOption1:=xlSortNormal
        Sheets("Faisabilité WERNER").Select
        Range("A4:K4").Select
        Range(Selection, Selection.End(xlDown)).Select
        Range(Selection, Selection.End(xlDown)).Select
        Selection.Sort Key1:=Range("C5"), Order1:=xlAscending, Header:=xlYes, _
            OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
            DataOption1:=xlSortNormal
        Sheets("Faisabilité SA1").Select
        Range("A4").Select
        Range(Selection, Selection.End(xlToRight)).Select
        Range(Selection, Selection.End(xlToRight)).Select
        Range(Selection, Selection.End(xlToRight)).Select
        Range(Selection, Selection.End(xlToRight)).Select
        Range(Selection, Selection.End(xlToLeft)).Select
        Range("A4:K4").Select
        Range(Selection, Selection.End(xlDown)).Select
        Range(Selection, Selection.End(xlDown)).Select
        Selection.Sort Key1:=Range("C5"), Order1:=xlAscending, Header:=xlYes, _
            OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
            DataOption1:=xlSortNormal
        Columns("C:C").Select
        Selection.Delete Shift:=xlToLeft
        Range("A4").Select
        Sheets("Faisabilité WERNER").Select
        Columns("C:C").Select
        Selection.Delete Shift:=xlToLeft
        Range("A4").Select
        Sheets("Faisabilité ABB").Select
        Columns("C:C").Select
        Selection.Delete Shift:=xlToLeft
        Range("A4").Select
        Sheets("Ecran scheduler").Select
        Columns("C:D").Select
        Selection.Delete Shift:=xlToLeft
        Range("A4").Select
     
        Cells.Select
        Selection.Copy
        Sheets("Faisabilité ML1").Select
        Cells.Select
        ActiveSheet.Paste
        Range("D1").Select
        Application.CutCopyMode = False
        Selection.Copy
        Range("A1:B2").Select
        ActiveSheet.Paste
        Sheets("Ecran scheduler").Select
    End Sub

  4. #4
    Rédacteur/Modérateur


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

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Salut.

    Il faut éviter d'utiliser des Select à tout va. Le code écrit (produit par l'enregistreur?) de cette manière est impossible à gérer et à modifier.

    La bonne technique pour arriver au résultat est de suivre les étapes suivantes :
    1. exposer le problème de façon claire, précise mais concise, si possible de façon schématique ;
    2. découper le problème en petits morceaux pour écrire des petites procédures qui permettront de résoudre le problème en s'attaquant à chaque caillou plutôt qu'à une montagne ;
    3. regarder les codes qui sont proposés sur le forum, dans les tutos, pour voir comment se passer des SELECT ;
    4. Expliquer clairement sur le forum ce qui pose problème.


    Sans cela, impossible de t'aider.

    Bon courage.
    "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 confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    Bonjour,
    En effet, c'est l'hiver il faut tailler, un exemple de raccourcissement pour le début car ensuite il faut comprendre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Dim Dl As Long
    Dl = Range("B" & Rows.Count).End(xlUp).Row 'pour dernière ligne si elle est en B, à toi de voir
    Columns("C:D").Insert Shift:=xlToRight
        Range("C5:C" & Range("B" & Dl)).FormulaR1C1 = "=RC[-2]&RC[-1]"
        Range("D5") = 1
        Range("D6:D" & Dl).FormulaR1C1 = "=R[-1]C+1"
    .....
    à la place de :
    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
    Columns("C:C").Select
        Selection.Insert Shift:=xlToRight
        Columns("D:D").Select
        Selection.Insert Shift:=xlToRight
        Range("C5").Select
        ActiveCell.FormulaR1C1 = "=RC[-2]&RC[-1]"
        Range("C5").Select
        Selection.Copy
        Range(Selection, Selection.End(xlDown)).Select
        ActiveSheet.Paste
        Range("D5").Select
        Application.CutCopyMode = False
        ActiveCell.FormulaR1C1 = "1"
        Range("D6").Select
        ActiveCell.FormulaR1C1 = "=R[-1]C+1"
        Range("D6").Select
        Selection.Copy
        Range(Selection, Selection.End(xlDown)).Select
        ActiveSheet.Paste
    ......
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

Discussions similaires

  1. [VBA] comment lire un fichier Excel en VBA
    Par mdmdmd dans le forum SDK
    Réponses: 1
    Dernier message: 17/07/2007, 16h19
  2. envoi mail fichier excel en VBA
    Par natie_49 dans le forum Excel
    Réponses: 1
    Dernier message: 09/07/2007, 19h56
  3. Fermeture fichier excel en vba
    Par avyrex dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 19/11/2006, 21h30
  4. créer un fichier excell avec VBA(access)
    Par JCH dans le forum Access
    Réponses: 1
    Dernier message: 19/09/2006, 19h07
  5. Ouverture d'un fichier Excel en VBA par Access
    Par illight dans le forum Access
    Réponses: 2
    Dernier message: 02/11/2005, 11h14

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