Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 27/10/2011, 09h15   #1
Invité de passage
 
Homme
Inscription : juin 2011
Messages : 16
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : juin 2011
Messages : 16
Points : 4
Points : 4
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 :
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
xema972 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/10/2011, 09h21   #2
Membre Expert
 
Avatar de Jean-Pierre49
 
Homme J-Pierre Catherine
Conception Calcul
Inscription : juillet 2007
Messages : 659
Détails du profil
Informations personnelles :
Nom : Homme J-Pierre Catherine
Âge : 57
Localisation : France, Maine et Loire (Pays de la Loire)

Informations professionnelles :
Activité : Conception Calcul
Secteur : Industrie

Informations forums :
Inscription : juillet 2007
Messages : 659
Points : 1 856
Points : 1 856
Bonjour

Citation:
'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 :
.Rows(i).Interior.ColorIndex = 3
Cordialement
__________________
Jean-Pierre Pensez à Voter pour les réponses qui vous ont aidés, d'avance merci
---------Et n'oubliez pas de mettre : ..quand c'est le cas !---------
Jean-Pierre49 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/10/2011, 10h11   #3
Membre Expert
 
Homme
Retraité
Inscription : avril 2011
Messages : 692
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Retraité

Informations forums :
Inscription : avril 2011
Messages : 692
Points : 1 443
Points : 1 443
Bonjour,

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

Cordialement.
gFZT82 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/10/2011, 13h11   #4
Invité de passage
 
Homme
Inscription : juin 2011
Messages : 16
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : juin 2011
Messages : 16
Points : 4
Points : 4
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
xema972 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/10/2011, 13h55   #5
Invité régulier
 
Homme Antoine
Inscription : octobre 2011
Messages : 5
Détails du profil
Informations personnelles :
Nom : Homme Antoine
Localisation : France

Informations forums :
Inscription : octobre 2011
Messages : 5
Points : 5
Points : 5
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 ?
Excellant est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/10/2011, 14h03   #6
Membre Expert
 
Homme
Retraité
Inscription : avril 2011
Messages : 692
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Retraité

Informations forums :
Inscription : avril 2011
Messages : 692
Points : 1 443
Points : 1 443
Citation:
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.
gFZT82 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/10/2011, 16h12   #7
Invité de passage
 
Homme
Inscription : juin 2011
Messages : 16
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : juin 2011
Messages : 16
Points : 4
Points : 4
J'ai trouvé l'anomalie, en fait les lignes des feuilles de comparaison étaient masquées par un filtre. C'est pourquoi, la macro mettait une couleur sur chaque ligne.

Quand j'ai retiré le filtre plus de souci.

Est ce réellement une anomalie ?

Y a-t-il un code qui me permette de vérifié si il y a un filtre et dans ce cas le retirer.

Merci pour vos réponses
xema972 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 05h35.


 
 
 
 
Partenaires

Hébergement Web