Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Remplir automatiquement une cellule en fonction d'une mfc ou d'un valeur

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Niquido

XLDnaute Junior
Bonjour à tous,

Mon soucis je souhaite avoir dans ma colonne en jaune le numéro de la semaine qui suis ma mise en forme noire sur chaque ligne.
Si il n'y en à pas mettre TBP
Voir fichier joint pour mieux comprendre

Si vous trouvez une solution sans utiliser la mise en forme de mes cellules en noire ==> il faut en gros prendre la dernière semaine + 1 après la dernière valeur différentes de 0

Résolution par macro ou non au choix

Par avance merci et dsl pour les explication louches!!!
n'hésitez pas à m'en demander plus
 

Pièces jointes

Re : Remplir automatiquement une cellule en fonction d'une mfc ou d'un valeur

Bonsoir niquido,

Je ne sais pas si on peut qualifier de "louches" tes explications ... mais peu claires, ça c'est sûr 😱

Avec ce que j'ai cru comprendre, essaie, en D3:
Code:
=SI(SOMME($E3:$J3)=0;"TBP";"CW"&INDEX($A$1:$J$1;1;MAX(SI($E3:$J3>0;COLONNE($E3:$J3)))+1))
Attention, valider avec Ctrl+Shift+Enter, puis recopier vers le bas
 
Re : Remplir automatiquement une cellule en fonction d'une mfc ou d'un valeur

Bonjour,

Une piste en VBA sans utilisation des MFCs (on supprime donc toutes les "Mises en Forme Conditionnelles").
Copiez le code suivant dans la fenêtre de code de la feuille concernée.
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Plage As Range
Dim R As Range
Dim C As Range
Dim Semaine As Range
Dim i&
Dim k&
Dim numLig&
'---
Set Plage = Range(Cells(3, 5), Cells([a65536].End(xlUp).Row, [iv1].End(xlToLeft).Column))
Set R = Application.Intersect(Target, Plage)
If R Is Nothing Then Exit Sub
'---
Plage.Interior.Color = xlNone
For i& = 1 To Plage.Rows.Count
  Set R = Range(Plage.Cells(i&, 1), Plage.Cells(i&, Plage.Columns.Count))
  numLig& = R.Row
  Set C = R
  '---
  On Error Resume Next
  For k& = C.Columns.Count To 1 Step -1
    If C(1, k&) = 0 Then
      Set C = C.Resize(1, k& - 1)
      If Err <> 0 Then
        Set C = Nothing
        Err.Clear
        Exit For
      End If
    Else
      Exit For
    End If
  Next k&
  '---
  If C Is Nothing Then
    Range("d" & numLig& & "") = "TBP"
  Else
    C.Interior.Color = vbBlack
    Set Semaine = Cells(1, C.Columns.Count + 4).Offset(0, 1)
    Range("d" & numLig& & "") = "CW" & CStr(Semaine)
  End If
  On Error GoTo 0
Next i&
End Sub
Chaque changement dans la plage concernée (E3:J9 dans votre exemple) déclenche la procédure évènementielle.
 

Pièces jointes

Re : Remplir automatiquement une cellule en fonction d'une mfc ou d'un valeur

Merci bien ça marche !!!

J'ai bien fait attention à faire ce que tu m'a dis pour valider la formule mais juste pour info personnel ça fait quoi exactement ?
 
Re : Remplir automatiquement une cellule en fonction d'une mfc ou d'un valeur

Bonjour Niquido, PMO2,
J'ai bien fait attention à faire ce que tu m'a dis pour valider la formule mais juste pour info personnel ça fait quoi exactement ?

- positionne-toi en D8 (où tu as collé la formule)
- clique dans la barre de formule. Les accolades qui étaient apparues quand tu as fait Ctrl+Shift+Enter vont disparaître ... ne te tracasse pas!
- sélectionne cette partie de la formule: SI($E8:$J8>0;COLONNE($E8:$J8)) attention à bien sélectionner les parenthèses aussi
- appuie sur F9: tu devrais voir apparaître une petite matrice, composée de FAUX et l'un ou l'autre chiffre. Dans la plage de E8 à J8, Excel repère les cellules dont la valeur est supérieure à 0 et, pour les cellules où cette condition est vérifiée, il retourne le ou les n° de colonne. En D8, ça devrait donner {FAUX.6.FAUX.8.FAUX.FAUX} 6 et 8 sont les deux colonnes (F et H) où les valeurs sont >0
- appuie sur Esc, pour ne pas "bousiller" ta formule (faute de quoi, la petite matrice de FAUX et de chiffres figurerait en tant que telle dans la formule, en remplacement de la portion de formule évaluée)
-Comme tu veux la dernière colonne non-vide, MAX donne le 8, dans le cas présent (si tu veux t'en convaincre, sélectionne MAX(SI($E8:$J8>0;COLONNE($E8:$J8))), appuye sur F9 ... et n'oublie pas de faire Esc, quand tu auras vu apparaître le '8'!). Le '+1' permet de donner le n° de colonne qui suit!
-Enfin, Index renverra le contenu de la colonne 9, dans la plage A1:J1

L'explication est suffisamment complète? 🙂
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…