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 :

Réinitialiser une macro [XL-2003]


Sujet :

Macros et VBA Excel

  1. #21
    Expert confirmé
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Par défaut
    Non pas besoin de fichier, le petit bout de code ci-dessous modifie bien la mise en forme des colonnes C et J, de la ligne 9 à la dernière ligne, des feuilles "feuil1", "feuil2", "feuil3" et "feuil4" sans toucher à la mise en forme des autres feuilles.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    TF = Array("Feuil1", "Feuil2", "Feuil3", "Feuil4")
     
    For i = LBound(TF) To UBound(TF)
        With Sheets(TF(i)).Range("C9:C" & Rows.Count & ",J9:J" & Rows.Count)
            .Font.Bold = False
            .Font.ColorIndex = 6
            .Interior.ColorIndex = 3
        End With
    Next

  2. #22
    Membre confirmé
    Femme Profil pro
    Inscrit en
    Octobre 2010
    Messages
    148
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 148
    Par défaut
    Ça c'est bien le code que j'ai appliqué mais par exemple il va me changer la mise en forme de la feuil3 et feuil4 alors que l'erreur n'a été corrigé que sur le feuil1. Je ne sais pas si c'est clair?

  3. #23
    Expert confirmé
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Par défaut
    Oui c'est clair mais tu constateras que dans ces quelques lignes de code il n'y a aucune autre condition d'imposée que de modifier la mise en forme et si je ne m'abuse, c'était le sujet de ta question...
    Si ta condition ne fonctionne plus c'est qu'il y a un twist ailleurs dans ton code. Mets le code complet stp.

  4. #24
    Membre confirmé
    Femme Profil pro
    Inscrit en
    Octobre 2010
    Messages
    148
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 148
    Par défaut
    J'utilise en 1er le code de la recherche des doublons
    Je te les mets aussi pour que tu vois mieux ce que je veux dire..

    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
    Public Sub CDouble(RngA As Range, RngB As Range)
     'Recherche les doublons entre 2 plages
     
    Dim c As Range, v As Range
     
    For Each c In RngA
        If c.Value <> "" Then
            Set v = RngB.Find(c.Value, LookIn:=xlValues, lookat:=xlWhole)
            If Not v Is Nothing Then
                If c.Parent.Name & c.Address <> v.Parent.Name & v.Address Then
                c.Interior.ColorIndex = 46 'Couleur de remplissage
                c.Font.Bold = True 'Ecriture en gras
                c.Font.ColorIndex = 36 'Couleur de police
                v.Interior.ColorIndex = 46 'Couleur de remplissage
                v.Font.Bold = True 'Ecriture en gras
                v.Font.ColorIndex = 36 'Couleur de police
                Set v = Nothing
                End If
            End If
        End If
    Next c
     
    End Sub
    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
    Sub Appliquer_doublons()
     
    Dim i As Byte, j As Byte
    Dim LastLigA As Long, LastLigB As Long
    Dim TF As Variant
     
    Application.ScreenUpdating = False
     
    TF = Array("feuil1", "feuil2", "feuil3", "feuil4") 'Nom des feuilles pour appliquer le module
     
    For i = LBound(TF) To UBound(TF)
        LastLigA = Sheets(TF(i)).Cells(Rows.Count, 1).End(xlUp).Row
            For j = i To UBound(TF)
                LastLigB = Sheets(TF(j)).Cells(Rows.Count, 1).End(xlUp).Row
                CDouble Sheets(TF(i)).Range("B9:B" & LastLigA), Sheets(TF(j)).Range("B9:B" & LastLigB)
                CDouble Sheets(TF(i)).Range("C9:C" & LastLigA), Sheets(TF(j)).Range("C9:C" & LastLigB)
            Next j
    Next i
     
    End Sub
    une fois les erreurs trouvé je peux ou non corrigés les erreurs en fonction de mes données donc je lance le code de correction

    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
    Sub Correction_doublons()
     
    Dim i As Byte, j As Byte
    Dim LastLigA As Long, LastLigB As Long
    Dim TF As Variant
     
    Application.ScreenUpdating = False
     
    TF = Array("feuil1", "feuil2", "feuil3", "feuil4")
     
    For i = LBound(TF) To UBound(TF)
        With Sheets(TF(i)).Range("B9:C" & Rows.Count)
            .Font.Bold = False
            .Font.ColorIndex = 1
            .Interior.ColorIndex = None
        End With
    Next i
     
    For i = LBound(TF) To UBound(TF)
        LastLigA = Sheets(TF(i)).Cells(Rows.Count, 1).End(xlUp).Row
            For j = i To UBound(TF)
                LastLigB = Sheets(TF(j)).Cells(Rows.Count, 1).End(xlUp).Row
                CDouble Sheets(TF(i)).Range("B9:B" & LastLigA), Sheets(TF(j)).Range("B9:B" & LastLigB)
                CDouble Sheets(TF(i)).Range("C9:C" & LastLigA), Sheets(TF(j)).Range("C9:C" & LastLigB)
            Next j
    Next i
     
    End Sub

    Tout ce qui précède c'est pour des cellules côte à côte.
    Maintenant je lance le même type de macro pour la recherche de mes doublons mais je change mes colonnes donc :

    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
    Sub Appliquer_doublons()
     
    Dim i As Byte, j As Byte
    Dim LastLigA As Long, LastLigB As Long
    Dim TF As Variant
     
    Application.ScreenUpdating = False
     
    TF = Array("feuil1", "feuil2", "feuil3", "feuil4") 'Nom des feuilles pour appliquer le module
     
    For i = LBound(TF) To UBound(TF)
        LastLigA = Sheets(TF(i)).Cells(Rows.Count, 1).End(xlUp).Row
            For j = i To UBound(TF)
                LastLigB = Sheets(TF(j)).Cells(Rows.Count, 1).End(xlUp).Row
                CDouble Sheets(TF(i)).Range("B9:B" & LastLigA), Sheets(TF(j)).Range("B9:B" & LastLigB)
                CDouble Sheets(TF(i)).Range("G9:G" & LastLigA), Sheets(TF(j)).Range("C9:C" & LastLigB)
            Next j
    Next i
     
    End Sub
    Et la c'est le ode entier avec ce que tu m'as dit de rajouter.

    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
    Sub Correction_doublons()
     
    Dim i As Byte, j As Byte
    Dim LastLigA As Long, LastLigB As Long
    Dim TF As Variant
     
    Application.ScreenUpdating = False
     
    TF = Array("feuil1", "feuil2", "feuil3", "feuil4")
     
    For i = LBound(TF) To UBound(TF)
        With Sheets(TF(i)).Range("B9:B" & Rows.Count & ",G9:G" & Rows.Count)
            .Font.Bold = False
            .Font.ColorIndex = 1
            .Interior.ColorIndex = None
        End With
    Next i
     
    For i = LBound(TF) To UBound(TF)
        LastLigA = Sheets(TF(i)).Cells(Rows.Count, 1).End(xlUp).Row
            For j = i To UBound(TF)
                LastLigB = Sheets(TF(j)).Cells(Rows.Count, 1).End(xlUp).Row
                CDouble Sheets(TF(i)).Range("B9:B" & LastLigA), Sheets(TF(j)).Range("B9:B" & LastLigB)
                CDouble Sheets(TF(i)).Range("G9:G" & LastLigA), Sheets(TF(j)).Range("C9:C" & LastLigB)
            Next j
    Next i
     
    End Sub
    J'espère que cela sera plus clair...

    Oup's il y a erreur dans mon dernier code.. dans les colonnes c'est peut être ca qui me créer l'erreur

  5. #25
    Expert confirmé
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Par défaut
    Sans analyser plus en détail ton code, cette ligne me semble foireuse
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CDouble Sheets(TF(i)).Range("G9:G" & LastLigA), Sheets(TF(j)).Range("C9:C" & LastLigB)
    Range("C9:C" & LastLigB) ne devrait pas plutôt être Range("G9:G" & LastLigB) ?

    Si ce n'est pas ça il faudra que je regarde plus en profondeur mais je n'ai malheureusement pas le temps là maintenant

  6. #26
    Membre confirmé
    Femme Profil pro
    Inscrit en
    Octobre 2010
    Messages
    148
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 148
    Par défaut
    Oui apparemment c'est ca. c'est que je me suis trompée dans les lettres j'ai corrigé et là ca marche.
    Désolé de t'avoir fait chercher pour rien
    Merci c'est gentil

    Bonne journée

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. réinitialiser une macro
    Par potili2 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 27/10/2007, 06h47
  2. [VB6] Exécuter une macro Access
    Par Nektanebos dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 22/02/2006, 16h32
  3. [VBA-E] [Excel] Lancer une macro à une heure donnée
    Par Lysis dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 16/10/2002, 12h15
  4. Qu'est-ce qu'une macro ?
    Par karli dans le forum Assembleur
    Réponses: 2
    Dernier message: 01/09/2002, 03h38
  5. Réponses: 2
    Dernier message: 22/07/2002, 12h13

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