Macro recherche dans une colonne

Shub11

XLDnaute Nouveau
Bonjour à toutes et à tous...

Je vous sollicite étant donné mon très faible niveau en langage macro mais désireux d'apprendre à l'utiliser.

Vous trouverez en pièce jointe un petit fichier...

Dans ce fichier, une trame sommaire des données que je vais utiliser.

Nous avons donc 7 colonnes, 1 ligne d'en-tête de colonne et un nombre variable de lignes en fonctions des données que je vais entrer dans ce tableau.

Le but de la macro que je veux mettre en place est de définir une couleur dans la colonne "couleur" en fonction de la saisie du "code couleur" correspondant dans les colonnes I et J.

Compliquons ensuite un peu la tâche, je préfère vous expliquez d'emblée ce que je veux obtenir au final, plutôt que d'ajouter des modifications au pas à pas (à vous de me dire si ma façon de vous exposer est bonne ou pas).

La table de correspondance que j'ai faite afficher en rouge n'apparait pas directement dans le fichier, j'aimerai l'insérer à l'aide de la macro mais qu'ensuite ces 2 colonnes soient masquées.

La recherche de la couleur de la colonne G doit se faire pour toute les lignes de la colonne F non vides.

Je souhaiterai aussi que la colonne F soit masquée.

J'aimerai aussi masquer la colonne B dans le cas ou il n' y a rien de saisi dans cette colonne (à part le nom de la colonne en B3).
En fait, selon les cas, la colonne B ne contiendra jamais de ligne soit avec une valeur soit sans valeur. Quand je remplirai mon classeur je serai soit dans le cas où pour toutes les lignes il y aura une valeur pour cette colonne soit il n'y en aura pas.

Merci d'avance pour le temps que vous consacrerez à ma demande et pour les explications que vous pourrez m'apporter et qui j'espère m'aideront à apprendre un peu plus le fonctionnement des macros.

Bonne journée à vous.
 

Pièces jointes

  • test.xls
    31 KB · Affichages: 66
  • test.xls
    31 KB · Affichages: 59
  • test.xls
    31 KB · Affichages: 65

Papou-net

XLDnaute Barbatruc
Re : Macro recherche dans une colonne

Bonjour shub11, et bienvenue sur le Forum,

Ci-joint ton fichier complété.
Les codes couleurs sont définis dans un tableau par la macro Codes_Couleurs, située dans Module1.
Cette macro est appelée automatiquement à chaque fois que ton classeur est activé à l'écran : macro Private Sub Workbook_Activate() dans le module ThisWorkbook.
De ce fait, ta liste en rouge dans la feuille 1 n'est plus nécessaire.
A chaque fois que tu modifies une cellule dans la colonne F, la cellule adjacente en colonne G prend la couleur correspondante.
Pour le reste de tes questions, je n'ai pas bien compris. Pourquoi veux-tu masquer la colonne F ? Tu ne pourras plus y changer le code couleur.
Si tu masques la colonne B (si pas de site saisi), il te faudra l'afficher manuellement pour y entrer un site éventuellement. A moins que tes cellules ne soient remplies automatiquement par importation de données. Peux-tu préciser ces 2 points ?

A te lire.

Cordialement.
 

Pièces jointes

  • Copie de test.xls
    48.5 KB · Affichages: 68
  • Copie de test.xls
    48.5 KB · Affichages: 61
  • Copie de test.xls
    48.5 KB · Affichages: 65

Dranreb

XLDnaute Barbatruc
Re : Macro recherche dans une colonne

Bonjour.
À condition de colorer effectivement les fonds de la table J3:J11 (ce qui offrirait la possibilité de changer les couleurs à toute fins utiles) ce code mets en G la couleur du code en F quand on le modifie :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Me.Cells(Target.Row, "G").Interior.ColorIndex = Me.[J3].Offset(Me.Cells(Target.Row, "F").Value).Interior.ColorIndex
End Sub
À mettre dans le module de la feuille.
À +
 

Shub11

XLDnaute Nouveau
Re : Macro recherche dans une colonne

Bonjour Papou-net et Dranreb,

Merci pour vos réponses qui ont mises en lumière la mauvaise formulation de ma problématique.
Pour un premier post c'est exactement ce que je voulais éviter...
En réalité, je dois saisir en F un code renvoyant à du texte et non "colorier" la cellule.

Pour ce qui est de masquer la colonne F, c'est dans le but d'imprimer au final le tableau, donc je ne veux pas qu'elle soit visible.

La colonne F sera rempli dans le tableau brut avant l'exécution de la macro.

Ce sera le même cas pour la colonne B "Site", la colonne sera remplie (ou pas) avant l'exécution de la macro.

Merci en tout cas pour vos recherches et désolé pour mes explications qui n'étaient pas assez précises.
 

Papou-net

XLDnaute Barbatruc
Re : Macro recherche dans une colonne

RE Shub11

Si j'ai bien compris, voici ton fichier corrigé.
J'ai créé une macro :

Code:
Sub Masquer_Colonnes()
If Range("B:B").SpecialCells(xlCellTypeConstants).Count = 1 Then Columns("B:B").Hidden = True
Columns("F:F").Hidden = True
Columns("I:J").Hidden = True
End Sub

qui se déclenche lorsque tu lances l'impression de ton fichier :

Code:
Private Sub Workbook_BeforePrint(Cancel As Boolean)
Masquer_Colonnes
End Sub

Donc, la colonne B est masquée si elle est vide et les colonnes F, I et J sont masquées pour éviter d'être imprimées.

Espérant avoir répondu.

Cordialement.
 

Pièces jointes

  • Copie de test-1A.xls
    42 KB · Affichages: 52

Shub11

XLDnaute Nouveau
Re : Macro recherche dans une colonne

Bonjour Papou-net et merci,
J'ai testé et cela fonctionne très bien.
Par contre pourrais tu m'expliquer le fonctionnement de la macro pour l'association ''code couleur'' et ''couleur'' car lorsque je modifie le texte en J il n'y a pas de modification dans le tableau.

Bonne journée
 

Papou-net

XLDnaute Barbatruc
Re : Macro recherche dans une colonne

Bonsoir Shub11,

Voici ton fichier adapté.
La modification d'une couleur en colonne J lance la macro
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
dans le module Feuil1.

Cette macro appelle la procédure
Code:
Sub Codes_Couleurs()
qui met la liste des couleurs à jour.

Espérant avoir répondu.

Cordialement.
 

Pièces jointes

  • Copie de test-1B.xls
    40 KB · Affichages: 49

Shub11

XLDnaute Nouveau
Re : Macro recherche dans une colonne

Bonjour Papou-net,

Impeccable cela fonctionne très bien !

Merci

Par contre, si je rajoute un code "9" en I12, je pensais qu'en modifiant la macro en rajoutant Range("J12") cela fonctionnerait:

Sub Codes_Couleurs()
' Definition de la couleur en fonction de son code
Couleur = Array(Range("J3"), Range("J4"), Range("J5"), Range("J6"), Range("J7"), Range("J8"), _
Range("J9"), Range("J10"), Range("J11"), Range("J12"))
End Sub

Peux-tu m'éclairer ?

Cordialement
 

Shub11

XLDnaute Nouveau
Re : Macro recherche dans une colonne

Je crois que j'ai trouvé l'erreur, je n'avais pas modifier le target.value:

Private Sub Worksheet_Change(ByVal Target As Range)
If Selection.Rows.Count > 1 Or Selection.Columns.Count > 1 Then Exit Sub
If Target.Column = 6 And Target.Row > 3 Then
If Target.Value >= 0 And Target.Value <= 9 Then
Cells(Target.Row, Target.Column + 1) = Couleur(Target)
End If
End If
If Target.Column = 10 And Target.Row > 2 And Target.Row < 12 Then Codes_Couleurs
End Sub
 

Papou-net

XLDnaute Barbatruc
Re : Macro recherche dans une colonne

Bonsoir Shub11,

Voici une nouvelle version de ton fichier.
La mise à jour de la colonne G se fait automatiquement si tu modifies, ajoutes ou retires des références dans les colonnes I et J.

Espérant avoir été utile.

Cordialement.
 

Pièces jointes

  • Copie de test-1C.xls
    44.5 KB · Affichages: 47

Discussions similaires

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 294
Messages
2 086 895
Membres
103 404
dernier inscrit
sultan87