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 :

Mise en forme [XL-2003]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Juin 2011
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 18
    Par défaut Mise en forme
    Bonjour,

    J'ai un souci avec mon code (ci-joint), je ne comprends pas pourquoi, il me colorie toute la page en rouge alors qu'il ne doit colorié que les ligne qu'il ne trouve pas. Je ne trouve pas mon erreur

    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
    With Sheets("2- PREP ADI")
        'on décolorie toutes ls cellules de la feuille 1
        .Cells.Interior.ColorIndex = xlNone
        'LastLig indique la ligne de la dernière cellule remplie de la colonne G de la feuille 1
        Lastlig = .Cells(.Rows.Count, "g").End(xlUp).Row
        'On boucle sur toutes les cellules de la colonne G (de la ligne 2 à la ligne LastLig)
        For i = 2 To Lastlig
            'Pour chaque valeur de la colonne G, on cherche si elle existe en colonne q de la feuille 2
            Set c = Sheets("3- SIRCA").Range("q:q").Find(.Range("g" & i).Value, LookIn:=xlValues, lookat:=xlWhole)
            If Not c Is Nothing Then
                'Si on trouve la valeur recherchée, on fait quoi?
                Range("g" & i).Offset(0, 28).Value = c.Value
                Range("g" & i).Offset(0, 29).Value = c.Offset(0, 1).Value
                Range("g" & i).Offset(0, 31).Value = "VRAI"
                Set c = Nothing
            Else
                'Pour chaque valeur de la colonne G, on cherche si elle existe en colonne q de la feuille 2
                    Set c = Sheets("5- PACIFICA").Range("q:q").Find(.Range("g" & i).Value, LookIn:=xlValues, lookat:=xlWhole)
                        If Not c Is Nothing Then
                'Si on trouve la valeur recherchée, on fait quoi?
                            Range("g" & i).Offset(0, 28).Value = "NS"
                            Range("g" & i).Offset(0, 29).Value = "NS"
                            Range("g" & i).Offset(0, 30).Value = "NS"
                            Range("g" & i).Offset(0, 34).Value = "463100000000"
                            Range("g" & i).Offset(0, 36).Value = "NS"
                            Set c = Nothing
                        Else
                'Pour chaque valeur de la colonne G, on cherche si elle existe en colonne K de la feuille 2
                    Set c = Sheets("6- VIA VITA").Range("k:k").Find(.Range("g" & i).Value, LookIn:=xlValues, lookat:=xlWhole)
                            If Not c Is Nothing Then
                'Si on trouve la valeur recherchée, on fait quoi?
                Range("g" & i).Offset(0, 28).Value = "NS"
                Range("g" & i).Offset(0, 29).Value = "NS"
                Range("g" & i).Offset(0, 30).Value = "NS"
                Range("g" & i).Offset(0, 34).Value = "462211000000"
                Range("g" & i).Offset(0, 36).Value = "NS"
                        Set c = Nothing
                            Else
                'Si n'est pas trouvé, on colorie la ligne en rouge
                Intersect(.UsedRange, .Rows(i)).Interior.ColorIndex = 3
                            End If
                        End If
            End If
        Next i
    End With
    Merci pour votre aide

  2. #2
    Membre Expert Avatar de Jean-Pierre49
    Homme Profil pro
    Retraité
    Inscrit en
    Juillet 2007
    Messages
    659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2007
    Messages : 659
    Par défaut
    Bonjour

    'Si n'est pas trouvé, on colorie la ligne en rouge
    Intersect(.UsedRange, .Rows(i)).Interior.ColorIndex = 3
    Si c'est la ligne pourquoi pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .Rows(i).Interior.ColorIndex = 3
    Cordialement

  3. #3
    Membre Expert
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2011
    Messages
    1 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 858
    Par défaut
    Bonjour,

    J’ai testé ton code. il colorie bien toutes les lignes qu'il ne trouve pas dans la plage utilisée.

    Cordialement.

  4. #4
    Membre averti
    Homme Profil pro
    Inscrit en
    Juin 2011
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 18
    Par défaut
    Quand je le teste, il colorie toutes lignes en rouge.
    Je ne sais pas si ma condition final est bien placée. Quand j'y vais pas à pas, il décolorie bien la feuille et ensuite il la recolorie

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 5
    Par défaut
    Citation Envoyé par xema972 Voir le message
    Quand je le teste, il colorie toutes lignes en rouge.
    Je ne sais pas si ma condition final est bien placée. Quand j'y vais pas à pas, il décolorie bien la feuille et ensuite il la recolorie
    bonjour,

    pour qu'il ne colorie pas toutes les lignes ni toutes les colonnes il faut
    1. Supprimer toutes les lignes ("couper") après celle que tu n'utilises pas (exemple supprimer toutes les lignes après la 10ème)
    2. Supprimer toutes les colonnes ("couper") après celle que tu n'utilises pas
    (exemple supprimer toutes les colonnes après la 12ème)
    3. Te placer sur la cellule A1
    4. Sauver
    5. Utiliser le code indiquer ci dessus en faisant intersect avec .usedrange.

    Les étapes 1 à 4 permettente à Excel de prendre en compte que la dernière cellule utilisée sur ta feuille est la L2 (ligne=10, colonne=12)

    Attention les étapes 3 et 4 sont obligatoires.

    Est-ce assez clair ?

  6. #6
    Membre Expert
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2011
    Messages
    1 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 858
    Par défaut
    Quand je le teste, il colorie toutes lignes en rouge.
    Je ne sais pas si ma condition final est bien placée. Quand j'y vais pas à pas, il décolorie bien la feuille et ensuite il la recolorie
    Je ne comprends pas la séquence que tu décris.
    En effectuant ta procédure pas à pas, tu devrais constater les phases suivantes :
    - suppression du remplissage de toutes les cellules de la feuille «2- PREP ADI », donc feuille blanche.
    On balaye chaque cellule renseignée de la colonne G de la feuille «2- PREP ADI »
    - s’il existe une valeur identique en colonne Q de la feuille "3- SIRCA", on effectue le traitement1,
    - sinon, s’il existe une valeur identique en colonne Q de la feuille "5- PACIFICA", on effectue le traitement2,
    - sinon, s’il existe une valeur identique en colonne K de la feuille " 6- VIA VITA", on effectue le traitement3,
    - sinon, on colorie la ligne en rouge.
    Au final, on ne colorie la ligne en rouge que si la correspondance n’a pas été trouvée.
    Si tu obtiens toutes les lignes en rouge, c’est qu’aucune correspondance n’a été trouvée.
    Reste à savoir pourquoi.
    En pas à pas, tu dois pouvoir vérifier ce qui se passe quand 2 valeurs identiques sont comparées.

    Cordialement.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [CR] mise en forme d'un champs texte en fonction des données
    Par niPrM dans le forum SAP Crystal Reports
    Réponses: 6
    Dernier message: 29/06/2004, 11h57
  2. [CR 9] Mise en forme non affichée when null
    Par Yorglaa dans le forum Formules
    Réponses: 2
    Dernier message: 28/06/2004, 17h27
  3. mise en forme rapide d'applets
    Par appletj dans le forum Applets
    Réponses: 11
    Dernier message: 03/06/2004, 13h28
  4. Mise en forme HTML
    Par Regis.C dans le forum XML/XSL et SOAP
    Réponses: 5
    Dernier message: 25/04/2004, 11h55
  5. Mise en forme fichier avant Import
    Par jeff37 dans le forum Langage SQL
    Réponses: 3
    Dernier message: 21/04/2004, 15h16

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