Colonne A et B couleur une ligne sur deux

Résolu/Fermé
Dudulleray - 28 janv. 2013 à 19:35
 Dudulleray - 30 janv. 2013 à 16:28
Bonsoir a toutes et tous, Forum



J'ai une liste dans la colonne (A) et une autre dans la colonne (B)

Afin de mieux me repérer je souhaiterai svp un petit code VBA pour colorer
une ligne sur deux, peut importe la couleur, en espèrant que cela ne ralentisse
pas trop le déroulement du programme.

Je souhaiterai également colorer ces lignes jusqu'a la fin des listes
sinon inutile de colorer jusqu'a la fin des lignes d'excel 2007

Le top aurai été une petite barre d'une couleur descendant ou montante avec les flèches
de direction, voir la molette de la souris.

Bon la, je rève, noël est passé, dommage.

merci d'avance de votre aide et de votre temps

bonne soirée a vous tous

Cordialement Ray
A voir également:

34 réponses

Mike-31 Messages postés 18313 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 avril 2024 5 073
29 janv. 2013 à 10:16
Re,

Je ne comprends pas très bien, le code ci dessous colorise 1 cellule sur 2 à partir de la deuxième ligne si les cellules de la colonne A sont renseignée (ne sont pas vide)
si tu écris [C1].select la cellule C1 sera colorisée

Sub Selection_1_sur_X()
Dim i As Integer
[A2].Select
x = Range("A65536").End(xlUp).Row
For i = 2 To x Step 2
Union(Selection, Range("A" & i, "B" & i)).Interior.ColorIndex = 3
Next i
End Sub
1
Mike-31 Messages postés 18313 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 avril 2024 5 073
29 janv. 2013 à 11:09
Re,

Tu peux expliquer ce que tu veux faire, coloriser la ligne active avec une couleur différente

Pourrai t'on svp remplacer par un petit code qui ferai monter et descendre une barre de couleur unique pour me déplacer dans mes colonnes A et B.

1
Mike-31 Messages postés 18313 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 avril 2024 5 073
29 janv. 2013 à 12:26
Re,

on va faire quelque chose de très simple, commence par remplacer le code macro précédent ou ajoute cette ligne

[A1].Interior.ColorIndex = xlNone

Sub Selection_1_sur_X()
Dim i As Integer
[A1].Select
x = Range("A65536").End(xlUp).Row
For i = 2 To x Step 2
Union(Selection, Range("A" & i, "B" & i)).Interior.ColorIndex = 3
Next i
[A1].Interior.ColorIndex = xlNone
End Sub

ensuite mettre le tableau concerné en surbrillance exemple A1 à B1000 (on pourra modifier plus tard)

colle cette formule

=LIGNE()=CELLULE("ligne")

et choisir une couleur de remplissage exemple bleu

ensuite clic droit sur l'onglet de ta feuille concernée et colle ce code dans les propriétés de la feuille

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Target.Calculate
End Sub
1
Mike-31 Messages postés 18313 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 avril 2024 5 073
29 janv. 2013 à 14:20
Re,

Tu peux également mettre le code dans les propriétés d'un bouton ACTIVEX qui se trouve dans les propriétés feuille ce qui donne

Private Sub CommandButton1_Click()
Dim i As Integer
[A1].Select
x = Range("A65536").End(xlUp).Row
For i = 2 To x Step 2
Union(Selection, Range("A" & i, "B" & i)).Interior.ColorIndex = 3
Next i
[A1].Interior.ColorIndex = xlNone
End Sub


Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Target.Calculate
End Sub

et la mise en forme conditionnelle avec le surlignage cette fois vert, si le tableau est important il faudra passer avec un code VBA

https://www.cjoint.com/c/CADotjGgiIf
1

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Mike-31 Messages postés 18313 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 avril 2024 5 073
29 janv. 2013 à 14:53
Re,

Je m'absente un moment, supprime la mise en forme conditionnelle et ce code

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Target.Calculate
End Sub

dès que je rentre je t'adapte un code écrit par Boisgontier, un Maître parmis les Maîtres
1
Mike-31 Messages postés 18313 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 avril 2024 5 073
28 janv. 2013 à 19:54
Salut,

Regardes si c'est ce que tu cherches

Sub Selection_1_sur_X()
Dim i As Integer
x = Range("A65536").End(xlUp).Row
For i = 2 To x Step 2
Union(Selection, Range("A" & i, "C" & i)).Interior.ColorIndex = 3
Next i
End Sub


Bien sur les colonnes comme la couleur peuvent changer
0
Salut Mike-31, Salut Forum

Merci pour ta réponse, ton code fonctionne comme voulu

mais un petit bémole toutefois

Si par exemple le curseur est en colonne E5 et que j'exécute le code cette cellule se
colorie aussi

J'ai donc fait fait un autre essai j'ai sélectionné la plage E5:F10 par Ex:

Le code a bien fonctionné cela m'a bien colorier une ligne sur deux de la colonne A et de la colonne B

PLUS la plage que j'ai sélectionné, je n'ai pas trouvé comment palier a ce soucis

je vais vite me retrouver avec des cellules colorisées un peu partout

Merci beaucoup pour ton aide je te souhaite une bonne journée

a te relire avec plaisir

Cordialement Ray
0
Mike-31 Messages postés 18313 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 avril 2024 5 073
Modifié par Mike-31 le 29/01/2013 à 07:54
Re,

Tu peux rajouter en début de code la sélection de ta première cellule à coloriser
[A2].Select
comme ceci

Sub Selection_1_sur_X()
Dim i As Integer
[A2].Select
x = Range("A65536").End(xlUp).Row
For i = 2 To x Step 2
Union(Selection, Range("A" & i, "C" & i)).Interior.ColorIndex = 3
Next i
End Sub

si l'adresse de ta première cellule à coloriser est variable il est possible de créer un boucle ou aller la chercher ce qui allongera le code, mais le code ci dessus devrait le faire
A+
Mike-31

Une période d'échec est un moment rêvé pour semer les graines du savoir.
0
Re Salut Mike

Merci pour ta réponse bien matinal, j'ai suivi ton conseil j'ai mis [C1].select et tout fonctionne bien, j'ai juste donc plus que la cellule C1 qui se colore.

Si svp tu a le temps et si possible pourrai tu me faire un petit code qui ferai monter et descendre une barre de couleur unique pour mes colonnes A et B

ce n'ai pas pressé, merci a toi déja pour l'aide apporter, bonne journée a toi

Un petit café pour secouer les neurones et c'est parti pour la journée

Bye bye merci Mike

Cordialement Ray
0
Salut Mike

Merci pour la réponse, c'est bon ca marche bien comme je souhaitai

j'ai du me gourrer quelque part, donc ok pour moi.

Pourrai t'on svp remplacer par un petit code qui ferai monter et descendre une barre de couleur unique pour me déplacer dans mes colonnes A et B.

Merci a plus tard

Raymond
0
Re Mike

Bon dans ma première idée était de faire coloriser une ligne sur deux

c'est chose faites grace a toi, merci

mais comme ma liste est longue, il est plus aisé de déplacer une barre de couleur

avec la molette de la souris ou les flèches de déplacement du clavier dans les colonnes A et B comme pour faire une sélection, mais la pas besoin de sélection

Juste une barre qui monte et descends le long de ma liste pour une meilleure utilisation et de repérage dans le listing

Si tu a le temps bien sur

A plus tard et merci

Ray
0
Re Mike

Merci de t'interesser a mon programme, c'est beaucoup sympa ihihhi

j'ai fait quelques essais mais ca n'a pas l'air de fonctionner

alors je te mets tout le code, ca sera plus simple comme ca, j'espere pouvoir éclairer un peu plus ta lanterne quand a ce que je souhaite faire svp.

j'ai un bouton dans la feuill1 pour lancer la première macro (RepertorierVideos)
qui a pour but d'afficher la liste des vidéos se trouvant sur mon disc dur E.

j'ai un autre bouton (RepertorierAffiches) dans la feuill1 pour lancer ensuite la récupération de la liste des affiches idem disc dur E

plus appel de ta macro

PS je n'ai pas d'autres codes dans le projet que celui ci dessous

le but: de ce programme

colonne A liste des vidéos Ex Tintin.avi
colonne B liste des affiches corespondantes aux vidéos Ex Tintin.jpg

donc je recupére ces listes dans disk E

et je souhaite svp par une barre qui monte ou descends vérifier si le nom de la vidéo en (A) corresponds bien au nom de l'affiche en (B), voir si pas de manquante etc etc

Avec beaucoup de merci Mike

bonne après midi


Option Explicit

Sub RepertorierVideos()
  Dim Chemin As String, Fichier As String, Numligne As Long
  Range("A:B") = ""
  Range("A:B").Interior.ColorIndex = xlNone
  [C1].Select
  'indique le répertoire contenant les fichiers
  Chemin = "E:\VIDEOS\"
  'Boucle sur tous les fichiers .avi du répertoire
  Fichier = Dir(Chemin & "*.avi")
  Numligne = 1
  Do While Len(Fichier) > 0
    Sheets("Feuil1").Range("A" & Numligne).Value = Fichier
    Numligne = Numligne + 1
    Fichier = Dir()
  Loop
End Sub


Sub RepertorierAffiches()
  Dim Chemin As String, Fichier As String, Numligne As Long
  Chemin = "E:\AFFICHE\"
  Fichier = Dir(Chemin & "*.jpg")
  Numligne = 1
  Do While Len(Fichier) > 0
    If Fichier <> "Liberty.jpg" Then
      Sheets("Feuil1").Range("B" & Numligne).Value = Fichier
      Numligne = Numligne + 1
    End If
    Fichier = Dir()
  Loop
  Call Selection_1_sur_X
End Sub

Sub Selection_1_sur_X()
  [A1].Interior.ColorIndex = xlNone
  Dim i As Integer, x As Long
  [A1].Select
  x = Range("A65536").End(xlUp).Row
  For i = 2 To x Step 2
    Union(Selection, Range("A" & i, "B" & i)).Interior.ColorIndex = 4
  Next i
  [A1].Interior.ColorIndex = xlNone
End Sub

les 3 lignes de codes ci-dessous sont comme tu m'a dit dans la feuill1

'Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'Target.Calculate
'End Sub
0
Re Mike

merci j'ai recu et essayer le fichier envoyer sur cjoint

c'est bien comme ca que je souhaiterai que ca marche

je préfère passer par VBA je comprends mieux

Donc que doit-je faire maintenant svp

A plus tard
0
Ok Mike merci c'est gentil a toi

a plus tard rien ne presse t'inquiéte pas

Bye bonne apres midi

Raymond
0
Mike-31 Messages postés 18313 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 avril 2024 5 073
29 janv. 2013 à 15:48
Re,

Voila le fichier, tous les codes sont dans la propriété feuille, la détection de la plage de donnée est automatique en fonction de la dernière cellule non vide de la colonne A
la surlignage couvre les cellules de A à C si tu veux limiter à B il n'y a pas de problème

https://www.cjoint.com/c/CADpWrADU9v
0
Salut Mike
je n'arrive plus a te repondre des que j'envoi le réponse j'ai ce message

*Veuillez écrire correctement s'il vous plaît (pas de SMS, orthographe, grammaire)
0
Mike-31 Messages postés 18313 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 avril 2024 5 073
29 janv. 2013 à 16:56
Re,

Ah bon bizarre

rééssaye voir
0
c'est bon j'ai rebooter mon pc un coup de fatigue de celui ci hihihihi
0
Mike

Bien recu ton fichier merci beaucoup j'ai adapter a mon programme et ca fonctionne parfaitement bien, je repere tres bien les lignes de mon listing

j'ose encore abuser de ta gentillesse mais pour en finir avec ce codependant que tu l'a en tete.

te serai t'il possible de rajouter un test pour verifier si le contenu de la colonne (A)
correspond bien a celui de la colonne (B)

en tenant compte que la colonne (A) ne sont que des fichiers .avi et colonne (B) que des .jpg les extentions avi et jpg sont toujours ecrites en minuscules

donc si le test n'ai pas bon afficher en face colonne (C) un message en rouge "erreur" par exemple

je te remercie encore une fois pour ton excellent travail et j'apprecie ton aide

a plus tard Mike

Raymond
0
Mike-31 Messages postés 18313 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 avril 2024 5 073
29 janv. 2013 à 17:11
Re,

es ce important de tester les extensions des deux colonnes ou simplement si les cellules de ces deux colonnes sur la même ligne sont renseignées exemple A5 et B5 alors en C5 vide ou erreur si une cellule est vide.

Pourquoi veux tu utiliser un code VBA tu as la mise en forme conditionnelle qui le fait très bien
0
Re Mike

Non, ce n'ai pas utile de tester les extentions vu que ce sont toujours les memes

juste tester afin de savoir si le nom de fichier corresponds bien au nom de son affiche avec en colonne C un message si ce n'ai pas excat

Si une cellule de la colonne A ou B est vide je vais le voir de suite

Si possible en VBA je préfère svp

comme ca je ne m'embrouille pas avec les autres possibilités, et je comprends mieux ainsi

mes neurones de 60 ans commence a se fatiguer parfois .

Merci Mike a plus tard
0
Bonsoir Mike,

j'ai oublier de te preciser que des titres de videos commence aussi parfois par des chiffres

désoler de ne pas avoir penser de te dire avant

sinon pour l'instant ca fonctionne bien

Merci a toi, je te souhaite la bonne soirée

Bye bye Cordialement Raymond
0
Mike-31 Messages postés 18313 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 avril 2024 5 073
30 janv. 2013 à 00:10
Re,

Crée un nouveau bouton ACTIVEX et colle ce code dans ses propriétés

Private Sub CommandButton2_Click()
For L = 2 To [A65536].End(xlUp).Row ' Application de la ligne 2 à la dernière ligne non vide
Mot1Mot2 = Cells(L, "A")
I = InStr(Mot1Mot2, ".avi") ' recherche le point commun entre les mots colonne A
For M = 2 To [B65536].End(xlUp).Row ' Application de la ligne 2 à la dernière ligne non vide
Mot1Mot2 = Cells(M, "B")
y = InStr(Mot1Mot2, ".jpg") ' recherche le point commun entre les mots colonne B
If I = 0 And y = 0 Then
Cells(M, "C") = "Erreur"
Cells(M, "C").Font.ColorIndex = 3
ElseIf I <> 0 And y <> 0 Then
Cells(M, "C") = ""
Cells(M, "C").Font.ColorIndex = xlAutomatic
End If
Next
Next
End Sub
0