Utiliser la formule SI

  • Initiateur de la discussion Initiateur de la discussion patachon49
  • Date de début Date de début

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 !

Re : Utiliser la formule SI

je me suis permi de modifier un peu le tableau pour répondre a ta demande...sinon il faut passer par des macros me semble-t-il car il y aurait un problème de références circulaires.
voici donc un exemple avec des valeurs a saisir en plus, dans les cellules vertes, pour le bon affichage des x et des 1 !
j'espere que ca ira.
 

Pièces jointes

Re : Utiliser la formule SI

Salut patachon49 et le forum
Ne connaissant du problème que ce que tu en dis, difficile de t'orienter
- si tu travailles par formules
On peut mais on ne pourra utiliser la ligne qu'une fois :
si tu rentres "1" en D3, la formule existant dans cette cellule sera écrasée par ton entrée manuelle (=formule deviendra 1). Tu t'aperçois de ton erreur et tu entres 1 en E3, D3 restera à 1. Je déconseille

- si tu travailles par macro :
Clic-Droit sur le nom de l'onglet => Menu contextuel>>Visualiser le code, et tu colles :
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Cel As Range, plage As Range
Set plage = Intersect(Target, Range([B3], Cells(Rows.Count, "F")))
If plage Is Nothing Then Exit Sub
For Each Cel In plage
    If Cel = 1 Then
        Select Case Left(Cel.Address(0, 0), 1)
            Case "B"
                Cel.Offset(0, 1) = "x"
            Case "C"
                Cel.Offset(0, -1) = "x"
            Case "D"
                Cel.Offset(0, 1) = "x"
                Cel.Offset(0, 2) = "x"
            Case "E"
                Cel.Offset(0, -1) = "x"
                Cel.Offset(0, 1) = "x"
            Case "F"
                Cel.Offset(0, -1) = "x"
                Cel.Offset(0, -2) = "x"
        End Select
    End If
Next Cel
End Sub
et tu essaies toutes les combinaisons sur la ligne 3 ou 4, pour vérifier. Attention, seul le fait d'entrer 1 dans une des cellules est pris en compte.
A+
 
Re : Utiliser la formule SI

Merci à vous.
C'est Gorfael qui m'a permis de régler mon problème.
Cela dit, je joins le tableau entier pour savoir s'il est possible d'inclure la macro pour chaque groupe de colonnes (aux couleurs différentes). L'idée étant qu'à chaque fois qu'on place 1 dans une des cellules du groupe couleur, les autres cellules deviennent X pour éviter plusieurs 1 dans la ligne d'un même groupe couleur.
Merci encore à tous.
Dans l'attente, mes cordiales salutations.

PS : j'utilise excel 2007 mais je travaille en 2003 pour mes correspondants.
PATACHON 49
 
Re : Utiliser la formule SI

Salut patachon49 et le forum
Pas réussit à trouver ton exemple, alors, je suis partie de l'hypothèse que tes autres colonnes reflétaient la même disposition que les colonne A:E. (couleurs d'une largeur de 3 colonnes maxi). Ce qui donnerait une macro (qui remplace la précédente) de ce style :
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Cel As Range, X As Integer
For Each Cel In Target
    If Cel.Interior.ColorIndex <> xlNone And Cel = 1 Then
        For X = -2 To 2
            If X <> 0 And Cel.Column + X > 0 And Cel.Column + X <= Columns.Count Then
                If Cel.Interior.Color = Cel.Offset(0, X).Interior.Color _
                    Then Cel.Offset(0, X) = "x"
            End If
        Next X
    End If
Next Cel
End Sub
Juste une remarque : tu utilises un jaune qui n'appartient pas à la palette de couleurs de base d'excel (c'est pour ça que j'utilise Color à la place de ColorIndex) : Je sais que chacun peut se créer la couleur qu'il trouve la "mieux" pour son œil averti. Mais si créer des couleurs peut sembler plus mieux bien 😛, il faut garder à l'esprit qu'excel est avant tout un outil de travail. Et que pour lui il y a autant de différence entre le jaune=65535 et le jaune=65534 que le blanc et le noir alors que si tu fais le test, ça m'étonnerais que tu puisses voir la différence.
Je sais, sur ton fichier, c'est toi qui colore les colonnes et personne d'autre. Mais c'est souvent une cause de perte de cheveux intempestive, quand tu es sûr que la couleur, c'est la même, et que ça ne fonctionne pas.
ouais, je sais, mes talents artistiques laissent à désirer, mais pas mes codes 😛
A+
 
Re : Utiliser la formule SI

Merci à toi. C'est presque tout bon. Simplement les couleurs n'étaient qu'indicatives pour me faire comprendre. En fin de compte, le tableau sera blanc. J'ai bien vu que quand je supprime les couleurs, cela ne marche plus vraiment.
Donc, je reformule :
A savoir :
- sexe : M ou F (2 colonnes)
- âge : normal ou avance ou retard (3 colonnes)
- Entrée en 6 : collège ou dérogation ou privé ou allongement ou ULIS (5 colonnes)
- langue vivante : E ou D ou E+D ou D+E ou autre (5 colonnes)
Pour chacun de ces 4 groupes de colonnes, un seul 1 doit être possible par ligne.
Merci encore pour ton aide.
 
Re : Utiliser la formule SI

Salut patachon49 et le forum
Simplement les couleurs n'étaient qu'indicatives pour me faire comprendre.
La demande précédente :
L'idée étant qu'à chaque fois qu'on place 1 dans une des cellules du groupe couleur, les autres cellules deviennent X pour éviter plusieurs 1 dans la ligne d'un même groupe couleur.
Je suis un peut perdu, là. En plus, tu signales une nouvelle pièce jointe qui n'existe pas, et l'initiale reste la même.
Qu'est-ce que tu veux, réellement ? Je suis incapable de le déterminer à travers tes postes.
A+
 
Re : Utiliser la formule SI

Salut patachon49 et le forum
Je ne connais pas la version 2007, mais on va essayer
Clic-droit sur le nom de l'onglet => Menu contextuel>>visualiser le code
Ou <Alt>+<F11>, rechercher dans l'explorateur de projet le module qui a le nom désiré entre parenthèse.
Sur la feuille de droite, coller la macro suivante :
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Cel As Range, X As Integer
For Each Cel In Target
    If Cel.Interior.ColorIndex <> xlNone And Cel = 1 Then
        For X = -4 To 4
            If X <> 0 And Cel.Column + X > 0 And Cel.Column + X <= Columns.Count Then
                If Cel.Interior.Color = Cel.Offset(0, X).Interior.Color _
                    Then Cel.Offset(0, X) = "x"
            End If
        Next X
    End If
Next Cel
End Sub
Revenir sous feuille de calcul et tester. En mettant un 1 dans une des cellules colorée, les X se remplissent tout seul (l'inverse n'est pas vrai).
A+
PS : une fois que ça fonctionne, s'il faut des explications, les demander
 
Dernière édition:
Re : Utiliser la formule SI

La partie en couleurs fonctionne parfaitement. Idem avec excel 2003. Simplement les autres colonnes de droite (sans couleur) ne doivent pas être conditionnées à cette macro et c'est le cas. Peux-tu y remédier ?
Voir le fichier joint.
Merci encore pour ton aide et bravo pour tes compétences.
 

Pièces jointes

Re : Utiliser la formule SI

Salut patachon49 et le forum
Une autre tentative :
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Cel As Range, Plage As Range, X As Integer
Set Plage = Intersect(Target, Range("A:T"))
If Plage Is Nothing Then Exit Sub
For Each Cel In Plage
    If Cel.Interior.ColorIndex <> xlNone And Cel = 1 Then
        For X = -4 To 4
            If X <> 0 And Cel.Column + X > 0 And Cel.Column + X <= Columns.Count Then
                If Cel.Interior.Color = Cel.Offset(0, X).Interior.Color _
                    Then Cel.Offset(0, X) = "x"
            End If
        Next X
    End If
Next Cel
End Sub
A+
 
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
13
Affichages
305
Réponses
19
Affichages
704
Réponses
5
Affichages
230
Réponses
18
Affichages
603
Réponses
3
Affichages
209
Réponses
15
Affichages
566
Réponses
14
Affichages
361
Retour