Recherche des valeurs dans une colonne depuis n'importe qu'elle cellule

chripatoche

XLDnaute Nouveau
Bonjour à tous,

OK désolé, je suis vos conseils et j'ouvre une nouvelle discussion.

Je suis sur le planning d'une équipe avec des horaires décalés sur semaines glissantes. Il y a plusieurs types de semaine et chacune d'elle porte un nom. La cellule sous le NOM de l'employé est "configurée" avec une liste de données de validation comprenant les noms de chaque semaine.

Lorsque je choisi une semaine, la cellule active se colorise et les horaires de début (cellules en dessous) se remplissent automatiquement pour chaque jour de la semaine en cours.

Voici l'extrait du code (du débutant que je suis)

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Counter As Integer
    If Not Intersect(Target, [C12:CG61]) Is Nothing And Target.Count = 1 Then
        Select Case UCase(Target.Value)
             Case "SEM WE JOURNEE"
                Target.Interior.Color = RGB(51, 204, 255)
                Target.Font.Color = RGB(0, 0, 0)
                For Counter = 1 To 8
                    If ActiveCell.Offset(Counter, -2).Value = "LUNDI" Or ActiveCell.Offset(Counter, -2).Value = "MARDI" Then
                        ActiveCell.Offset(Counter).Value = "8:15"
                    End If
                    If ActiveCell.Offset(Counter, -2).Value = "MERCREDI" Then
                        ActiveCell.Offset(Counter).Value = "JSV"
                    End If
                    If ActiveCell.Offset(Counter, -2).Value = "JEUDI" Then
                        ActiveCell.Offset(Counter).Value = "8:15"
                    End If
                    If ActiveCell.Offset(Counter, -2).Value = "VENDREDI" Then
                        ActiveCell.Offset(Counter).Value = "JSV"
                    End If
                    If ActiveCell.Offset(Counter, -2).Value = "SAMEDI" Or ActiveCell.Offset(Counter, -2).Value = "DIMANCHE" Then
                        ActiveCell.Offset(Counter).Value = "8:15"
                    End If
                Next Counter
             Case Else
                Target.Interior.ColorIndex = xlNone
        End Select
    End If
End Sub

Je n'ai pas fini, le cycle est sur 10 semaines différentes.

Ça marche uniquement quand la case active se situe dans une colonne précise. Si elle est plus éloignée ça ne fonctionne plus. C'est normal puisque j'écris : If ActiveCell.Offset(rowOffset:=Counter, columnOffset:=-2)

En fait je ne trouve pas comment remplacer columnOffset:=-2 par le nom de la colonne dans laquelle je fais la recherche.

Pour info, je veux écrire automatiquement dans des cellules des informations différentes, suivant que le jour est différent. Les jours se situent dans la colonne C

Ce que je n'arrive pas non plus à faire avec " Case Else" c'est d'effacer les heures de début de journée lorsque j'efface le nom de la semaine.

Connaitriez-vous les bonnes syntaxes ?

Ci-joint le fichier Matrice Planning essai2.xls

Merci
Chripatoche
 

Pièces jointes

  • Matrice Planning essai2.zip
    40.9 KB · Affichages: 37

sousou

XLDnaute Barbatruc
Re : Recherche des valeurs dans une colonne depuis n'importe qu'elle cellule

bonjour.
Chripatoche
Tes cellules conteant les jours de la semaine n'&étant pas relatif à ta cellule active tu doit mles adresser directement en calculant le numéro de ligne la colonne étant toujours la trois.
Exemple: remplace la ligne cidessous par celle qui suit
If ActiveCell.Offset(Counter, -2).Value = "SAMEDI" Then
If Cells(ActiveCell.Row + Counter, 3).Value = "SAMEDI" Then

pour adresser Samedi, c'est la cellule dont le numéro de la ligne est égale au numéro de la cigne de la cellule active+ le compteur, et la colonne est la colonne 3

Autres exemple:
If ActiveCell.Offset(Counter, -2).Value = "LUNDI" Or ActiveCell.Offset(Counter, -2).Value = "MARDI" Or ActiveCell.Offset(Counter, -2).Value = "MERCREDI" Or ActiveCell.Offset(Counter, -2).Value = "JEUDI" Or ActiveCell.Offset(Counter, -2).Value = "VENDREDI" Then

If Cells(ActiveCell.Row + Counter, 3).Value = "LUNDI" Or Cells(ActiveCell.Row + Counter, 3).Value = Cells(ActiveCell.Row + Counter, 3).Value = "MERCREDI" Or Cells(ActiveCell.Row + Counter, 1).Value = "JEUDI" Or Cells(ActiveCell.Row + Counter, 3).Value = "VENDREDI" Then
 

Statistiques des forums

Discussions
311 720
Messages
2 081 886
Membres
101 830
dernier inscrit
sonia poulaert