Cherche formule ou moyen de :

Bonjour,

Je cherche une formule pour effectuer l'opération suivante :
si dans la colonne M j'ai un 0 (zéro) de M2 à M450
remplacer les 4 de la ligne (A...:J...) par 1

Je vous remercie de votre aide.

20 réponses

  1. Bonjour,

    Je n'ai pas bien compris votre besoin...

    J'ai l'impression qu'il suffi de faire un SI dans la colonne A en fonction des valeurs de la colonne M !

    Bien cordialement,
    0
    1. Bonjour adrienKO,

      Je te remercie de tenter de me venir en aide, mais voilà, en colonne M, le 0 n'est jamais à la même place ni non plus d'ailleurs le 4 en regard de l même ligne dans les colonnes A2:Jxxx pour remplacer ce par un 1.

      Merci de me venir en aide.
      0
      1. Bonjour

        1. si dans la colonne M j'ai un 0 (zéro) de M2 à M450
        -un 0 quelque part
        -plusieurs zéros
        -un 0 partout
        2. remplacer les 4 de la ligne (A...:J...) par 1
        -tous les 4 de la colonne A
        -seulement le 4 qui est dans la même ligne que le 0 trouvé
        -tous les 4 qui sont dans la même ligne que les 0 trouvés
        -mêmes questions sur plusieurs colonnes

        Le plus simple est de donner quelques exemples, voire de mettre ton fichier sur cjoint.com et de joindre le lien obtenu à ton prochain message.

        cdlmt
        0
        1. Salut,

          Pas tout compris non plus, si il y a un 0 plage M2 à M450 il faut le remplacer par 4

          si c'est cela, impossible sans VBA sauf si en M il y a une formule ce qui semble être le cas, ajouter une conditionnelle du type =si(ta formule =0;4;ta formule)

          A+
          Mike-31

          Une période d'échec est un moment rêvé pour semer les graines du savoir.
          0
          1. Bonjour à vous tous et merci de votre aide

            C'est pas facile d'expliquer ce qui parait évident pour moi, mais je vais essayer de nouveau :

            en colonne M je peux avoir un 0 dans certaines cellules de cette colonne aléatoirement.

            En regard de ces 0 et pour chaque ligne ou figure ce 0
            Je veux remplacer le chiffre 4 qui se trouvent de façon aléatoire dans les colonnes A:J

            Est-ce bien plus clair pour vous, vu que je ne peux pas mettre le classeur en lien.

            En vous remerciant de votre patience et de vos connaissances.
            0
            1. Les nombres 4 qui sont dans les colonnes A:J sont ils le résultat d'une formule?
              si oui, on peut se passer de macro, sinon il n'y a qu'une macro pour faire ça
              0
              1. re,
                non les chiffres 4 ne proviennent pas de formule et une macro je ne connais pas.
                0
                1. Re,

                  ah, je n'avais pas tout compris, donc colonne M s'il y a un 0 tu veux sur la même ligne mais colonne A à J mettre un 4

                  si c'est bien cela quelle formule as tu colonne A, B, C, D, E, F, D, H, I et J

                  si dans ces colonnes les formules sont identiques donne simplement celle en A
                  0
                  1. ah, je n'avais pas tout compris, donc colonne M s'il y a un 0 tu veux sur la même ligne mais colonne A à J mettre un 4

                    ce que je voudrai :
                    colonne M s'il y a un 0 tu veux sur la même ligne mais colonne A à J mettre un 1 à la place du 4
                    0
                    1. Dans ce cas, il n'y a qu'une macro
                      Il est clair que dans ce cas, les 4 des colonnes A:J auront définitivement disparu

                      Peux tu envoyer une partie de ton fichier au fomat excel 2003 sur cjoint.com et joindre le lien obtenu à ton prochain message
                      0
                      1. re,
                        J'ai réussi à voir mais je ne comprends pas ce que ça veux dire.
                        Pourrais-tu me donner les explications qui me font cruellement défauts ?

                        En faisant Ctrl+s ça efface bien les 4 mais ça ne met pas 1 à la place.

                        En te remerciant et à te lire.
                        0
                        1. zut, j'ai oublié le 1!
                          https://www.cjoint.com/?3ExsFKU2vER

                          Pour les explications

                          La procedure RAZ (activée par ctrl+r) est chargée de créer le tableau
                          remplit lA2:J20 avec un nombre aléatoire de 0 à 9 et M2:M20 avec un nombre aléatoire de 0 à 4

                          La procédure Efface4 (activée par ctrl+s) décrit les lignes de lideb à lifin
                          Si la ligne en cours colonne M on a 0 alors, on décrit les colonnes de 1 à 10 et si on trouve 4, on met 1

                          bonne suite
                          0
                          1. La procédure Efface4 (activée par ctrl+s) décrit les lignes de lideb à lifin
                            Si la ligne en cours colonne M on a 0 alors, on décrit les colonnes de 1 à 10 et si on trouve 4, on met 1

                            Ca efface bien les chiffres 4 et met les cellules en jaune, mais n'écrit pas le chiffre 1 à la place du 4
                            0
                            1. Je viens de trouver, j'ai remplacé :
                              If .Cells(li, co) = 4 Then .Cells(li, co) = ""
                              par :
                              If .Cells(li, co) = 4 Then .Cells(li, co) = 1
                              0
                              1. ben voilà!
                                tu comprends pour quoi j'avais nommé la procédure Effae4 au lieu de Remplace4!
                                0
                            2. Oui, mais c'est la première fois que je vois du code c'est pour çà que j'aurai aimé que tu me décrive ce que fait exactement ce code point par point afin que je comprenne, du moins que j'essaie.
                              En te remerciant.
                              0
                              1. re, encore moi,
                                Que me faudrait-il modifier si je veux que le code ne fonctionne que de C9 à J19
                                Avec tous mes remerciements.
                                0
                                1. Une version plus aisée à faire évoluer

                                  ' constantes à modifier selon ta configuration
                                  Const lideb = 9  ' ligne debut tableau
                                  Const lifin = 19 ' ligne fin tableau
                                  Const codeb = 3  ' colonne début tableau = C
                                  Const cofin = 10 ' colonne fin tableau = J
                                  Const coco = 13  ' colonne M
                                  
                                  Public Sub raz()
                                  Dim li As Long, co As Long
                                  Application.ScreenUpdating = False
                                  With ActiveSheet
                                    For li = lideb To lifin
                                      For co = codeb To cofin
                                        .Cells(li, co) = Int(Rnd * 10)
                                      Next co
                                      .Cells(li, coco).Value = Int(Rnd * 6)
                                    Next li
                                  End With
                                  Application.ScreenUpdating = True
                                  End Sub
                                  
                                  Public Sub Remplace4()
                                  Dim li As Long, co As Long
                                  Application.ScreenUpdating = False
                                  With ActiveSheet
                                    For li = lideb To lifin
                                      If .Cells(li, coco).Value = 0 Then
                                        For co = codeb To cofin
                                          If .Cells(li, co) = 4 Then .Cells(li, co) = 1
                                        Next co
                                      End If
                                    Next li
                                  End With
                                  Application.ScreenUpdating = True
                                  End Sub
                                  


                                  bonne soirée
                                  0
                                  1. Je te remercie vivement ccm81, ceci étant mon tout premier code je m'empresse de décortiquer pour bien le comprendre.
                                    Aurais-tu un bon bouquin à m'indiquer ?
                                    0