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 :

Macro qui fonctionne dans un fichier Excel mais pas dans un autre


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Homme Profil pro
    Responsable de compte
    Inscrit en
    Avril 2020
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Responsable de compte

    Informations forums :
    Inscription : Avril 2020
    Messages : 10
    Par défaut Macro qui fonctionne dans un fichier Excel mais pas dans un autre
    Bonjour,

    J'ai récupéré une macro dans un fichier, qui coloris des lignes et change la Font du texte en fonction de variables.

    Cela fonctionne très bien dans le fichier d'origine, mais pas dans le nouveau fichier.

    Quelles pourraient-être les causes ?

    Merci

    Voici le code : (j'ai mis du texte pour m'y retrouver car je débute en 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
    Option Explicit
     
    Sub crea_recherche()        'Mise en forme ligne
     
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
     
    Dim i As Double
    Dim post As Double
    Dim derlign As Double
    Dim test As Variant
     
    Sheets("travail").Activate                          'onglet travail actif
     
    derlign = Range("A" & Rows.Count).End(xlUp).Row     'dernière ligne colonne A
     
    For post = 13 To derlign                            'Post= ligne 13 à dernière ligne
     
    If Range("F" & post) = "" Then                      'Si colonne G vide
     
    Range("A" & post, "G" & post).Select                'Sélection Colonne A à G
        With Selection
            .HorizontalAlignment = xlCenter             'centrage texte
            .VerticalAlignment = xlBottom
        End With
        With Selection.Interior
            .ThemeColor = xlThemeColorLight2            'Fond de couleur
            .TintAndShade = 0.399975585192419
        End With
        With Selection.Font                             'Police Arial ...
            .Name = "Arial"
            .Size = 11
            .ThemeColor = xlThemeColorDark1
            .TintAndShade = 0
        End With
        Selection.Font.Bold = True                      'Gras
        Selection.Merge
        With Selection.Borders(xlEdgeLeft)
            .LineStyle = xlContinuous
            .ColorIndex = 0
            .TintAndShade = 0
            .Weight = xlMedium
        End With
        With Selection.Borders(xlEdgeTop)               'Bordure
            .LineStyle = xlContinuous
            .ColorIndex = 0
            .TintAndShade = 0
            .Weight = xlMedium
        End With
        With Selection.Borders(xlEdgeBottom)            'Bordure
            .LineStyle = xlContinuous
            .ColorIndex = 0
            .TintAndShade = 0
            .Weight = xlMedium
        End With
        With Selection.Borders(xlEdgeRight)
            .LineStyle = xlContinuous
            .ColorIndex = 0
            .TintAndShade = 0
            .Weight = xlMedium
        End With
     
    End If
     
    Next post
     
    Sheets("travail").Activate
     
    Application.ScreenUpdating = True           'Mise à jour travail
    Application.DisplayAlerts = True
     
    End Sub

  2. #2
    Membre émérite
    Homme Profil pro
    Responsable des études(en disponibilité)
    Inscrit en
    Juin 2007
    Messages
    367
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable des études(en disponibilité)
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 367
    Par défaut
    Utilise le pas a pas pour trouver ce qui se passe.

    ou ce qui ne se passe pas.

    Je crois qu'il est possible et souhaitable de supprimer la plupart des select.

  3. #3
    Membre émérite
    Homme Profil pro
    Responsable des études(en disponibilité)
    Inscrit en
    Juin 2007
    Messages
    367
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable des études(en disponibilité)
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 367
    Par défaut
    En réutilisant ton 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
     
    Sub crea_recherche2() 'Mise en forme ligne
     
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
     
    Dim i As Double
    Dim post As Double
    Dim derlign As Double
    Dim test As Variant
     
    Sheets("travail").Activate 'onglet travail actif
     
    derlign = Range("A" & Rows.Count).End(xlUp).Row 'dernière ligne colonne A
     
    For post = 13 To derlign 'Post= ligne 13 à dernière ligne
     
    If Range("F" & post) = "" Then 'Si colonne G vide
     
     'Sélection Colonne A à G
    With Range("A" & post, "G" & post)
    .HorizontalAlignment = xlCenter 'centrage texte
    .VerticalAlignment = xlBottom
    End With
    With Range("A" & post, "G" & post).Interior
    .ThemeColor = xlThemeColorLight2 'Fond de couleur
    .TintAndShade = 0.399975585192419
    End With
    With Range("A" & post, "G" & post).Font 'Police Arial ...
    .Name = "Arial"
    .Size = 11
    .ThemeColor = xlThemeColorDark1
    .TintAndShade = 0
    End With
    Range("A" & post, "G" & post).Font.Bold = True 'Gras
    Range("A" & post, "G" & post).Merge
    With Range("A" & post, "G" & post).Borders(xlEdgeLeft)
    .LineStyle = xlContinuous
    .ColorIndex = 0
    .TintAndShade = 0
    .Weight = xlMedium
    End With
    With Range("A" & post, "G" & post).Borders(xlEdgeTop) 'Bordure
    .LineStyle = xlContinuous
    .ColorIndex = 0
    .TintAndShade = 0
    .Weight = xlMedium
    End With
    With Range("A" & post, "G" & post).Borders(xlEdgeBottom) 'Bordure
    .LineStyle = xlContinuous
    .ColorIndex = 0
    .TintAndShade = 0
    .Weight = xlMedium
    End With
    With Range("A" & post, "G" & post).Borders(xlEdgeRight)
    .LineStyle = xlContinuous
    .ColorIndex = 0
    .TintAndShade = 0
    .Weight = xlMedium
    End With
     
    End If
     
    Next post
     
    Sheets("travail").Activate
     
    Application.ScreenUpdating = True 'Mise à jour travail
    Application.DisplayAlerts = True
     
    End Sub

  4. #4
    Membre habitué
    Homme Profil pro
    Responsable de compte
    Inscrit en
    Avril 2020
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Responsable de compte

    Informations forums :
    Inscription : Avril 2020
    Messages : 10
    Par défaut
    Merci pour ce retour.

    J'ai copié ce code dans un nouveau module, mais il ne se passe rien non plus.

    Question bête peut-être mais comment se déclenche cette macro ?

  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 173
    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 173
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Après une lecture rapide du code publié, je constate que l'on ne précise pas l'objet classeur donc la procédure utilise le classeur actif
    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
    Expert confirmé Avatar de Patrice740
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2007
    Messages
    2 478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 478
    Par défaut
    Bonjour,

    Ton code corrigé et entièrement commenté :
    Code VBA : 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
    Option Explicit
    Sub crea_recherche()
    ' Mise en forme ligne
    Dim feuille As Worksheet     'feuille
    Dim post As Long             'il faut un entier Long au lieu d'une nombre à virgule Double
    Dim derlign As Long          'idem
        Application.ScreenUpdating = False                          'Arrêter la mise à jour de l'affichage
        Set feuille = ActiveWorkbook.Worksheets("travail")          'Classeur et onglet concernés, il est préférable d'écrire :
    '   Set feuille = Workbooks("LeClasseur").Worksheets("travail") '(pour éviter tout risque d'erreur de classeur).
        With feuille                                                'Actions sur la feuille du classeur :
            derlign = .Range("A" & .Rows.Count).End(xlUp).Row       '- dernière ligne colonne A de la feuille
            For post = 13 To derlign                                ' - pour Post = ligne 13 à dernière ligne
                If .Range("F" & post) = "" Then                     '  - si colonne G de la feuille est vide :
                    With .Range("A" & post, "G" & post)             '   Actions sur les cellules des colonnes A à G de la feuille :
                        .HorizontalAlignment = xlCenter             '   - centrage texte
                        .VerticalAlignment = xlBottom               '   - bas
                        .Merge                                      '   - fusionnées
                        With .Interior                              '     Actions sur le fond des cellules
                            .ThemeColor = xlThemeColorLight2        '     - couleur du thème
                            .TintAndShade = 0.399975585192419       '     - teinte
                        End With                                    '     fin des actions sur le fond
                        With .Font                                  '     Actions sur le Police des cellules
                            .Name = "Arial"                         '     - Arial
                            .Size = 11                              '     - taille
                            .ThemeColor = xlThemeColorDark1         '     - couleur du thème
                            .TintAndShade = 0                       '     - teinte
                            .Bold = True                            '     - Gras
                        End With                                    '     fin des actions sur la police
                        With .Borders                               '     Actions sur les bordures (tout le tour) des cellules
                            .LineStyle = xlContinuous               '     - style de trait
                            .ColorIndex = 0                         '     - couleur
                            .TintAndShade = 0                       '     - teinte
                            .Weight = xlMedium                      '     - épaisseur
                        End With                                    '     fin des actions sur les bordures
                    End With                                        '   fin des actions sur les cellules A à G
                End If                                              '  - fin de la condition (G est vide)
            Next post                                               ' - fin de la boucle post
            .Activate                                               '- Activer la feuille
        End With                                                    'fin des actions sur la feuille
        Application.ScreenUpdating = True                           'Réactiver la mise à jour de l'affichage
    End Sub

  7. #7
    Membre habitué
    Homme Profil pro
    Responsable de compte
    Inscrit en
    Avril 2020
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Responsable de compte

    Informations forums :
    Inscription : Avril 2020
    Messages : 10
    Par défaut
    Bonjour,

    Merci pour ce retour super précis. Ok ça fonctionne quand j'exécute la macro depuis la fenêtre VBA, par contre comment faire pour que celle-ci fonctionne dès qu'il y a des lignes insérées ?
    (sur l'ancien fichier, cela se faisait automatiquement à l'insertion de lignes)

    Merci.

  8. #8
    Expert confirmé Avatar de Patrice740
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2007
    Messages
    2 478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 478
    Par défaut
    Citation Envoyé par Olivier2610 Voir le message
    Bonjour,
    Merci pour ce retour super précis. Ok ça fonctionne quand j'exécute la macro depuis la fenêtre VBA, par contre comment faire pour que celle-ci fonctionne dès qu'il y a des lignes insérées ? (sur l'ancien fichier, cela se faisait automatiquement à l'insertion de lignes)
    Merci.
    Comment procèdes-tu pour insérer une ou des lignes ?

  9. #9
    Membre habitué
    Homme Profil pro
    Responsable de compte
    Inscrit en
    Avril 2020
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Responsable de compte

    Informations forums :
    Inscription : Avril 2020
    Messages : 10
    Par défaut
    J'ai une autre macro qui insère les données via une autre "feuille" vba sur la feuille "travail" avec des combobox.
    Je dois avouer que sur l'autre fichier excel d'un collègue qui me sert de base pour construire le mien, je ne vois pas ce qui donne l'instruction pour déclencher cette macro de mise en forme des lignes. Cela se fait dès que la première macro insère des lignes de références.

    Citation Envoyé par Patrice740 Voir le message
    Comment procèdes-tu pour insérer une ou des lignes ?

  10. #10
    Expert confirmé Avatar de Patrice740
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2007
    Messages
    2 478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 478
    Par défaut
    Citation Envoyé par Olivier2610 Voir le message
    J'ai une autre macro qui insère les données ....
    Et c'est quoi, le code de cette macro ?

  11. #11
    Expert confirmé Avatar de Patrice740
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2007
    Messages
    2 478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 478
    Par défaut
    Bonjour,


    N'y avait-t'il pas une macro (évènementielle) dans le module de la feuille "travail" du fichier d'origine ?

    Sinon, appelles la procédure en fin de CommandButton2_Click() avant le End Sub ajoutes :
    Call crea_recherche

  12. #12
    Membre habitué
    Homme Profil pro
    Responsable de compte
    Inscrit en
    Avril 2020
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Responsable de compte

    Informations forums :
    Inscription : Avril 2020
    Messages : 10
    Par défaut
    Bonjour,

    Désolé mais qu'entends-tu par une macro événementielle ?

    Citation Envoyé par Patrice740 Voir le message
    Bonjour,


    N'y avait-t'il pas une macro (évènementielle) dans le module de la feuille "travail" du fichier d'origine ?

    Sinon, appelles la procédure en fin de CommandButton2_Click() avant le End Sub ajoutes :
    Call crea_recherche

  13. #13
    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 173
    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 173
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Désolé mais qu'entends-tu par une macro événementielle ?
    Je te suggère la lecture de ces deux tutoriels sur le sujet
    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

  14. #14
    Membre habitué
    Homme Profil pro
    Responsable de compte
    Inscrit en
    Avril 2020
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Responsable de compte

    Informations forums :
    Inscription : Avril 2020
    Messages : 10
    Par défaut
    Ok merci je vais regarder.

    Citation Envoyé par Philippe Tulliez Voir le message
    Bonjour,

    Je te suggère la lecture de ces deux tutoriels sur le sujet

Discussions similaires

  1. Adapter dans Outlook des macros qui fonctionnent dans Word
    Par bruxmu dans le forum VBA Outlook
    Réponses: 14
    Dernier message: 29/07/2016, 18h15
  2. Réponses: 5
    Dernier message: 08/01/2016, 13h58
  3. Réponses: 1
    Dernier message: 08/01/2015, 21h49
  4. Code qui fonctionne sur Matlab 7.1 mais pas sur R2009b?
    Par kariboubou dans le forum MATLAB
    Réponses: 1
    Dernier message: 19/06/2011, 19h11
  5. [CS5] Preloader qui fonctionne avec Le player V9 mais pas V10..
    Par ArC3Nik dans le forum Flash
    Réponses: 1
    Dernier message: 06/07/2010, 19h22

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