Cherche formule ou moyen de :

jh 15 ans Messages postés 77 Statut Membre -  
jh 15 ans Messages postés 77 Statut Membre -
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.

A voir également:

20 réponses

adrienK0 Messages postés 77 Statut Membre 19
 
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
jh 15 ans Messages postés 77 Statut Membre 10
 
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
ccm81 Messages postés 11033 Statut Membre 2 433
 
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
Mike-31 Messages postés 19572 Date d'inscription   Statut Contributeur Dernière intervention   5 139
 
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jh 15 ans Messages postés 77 Statut Membre 10
 
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
ccm81 Messages postés 11033 Statut Membre 2 433
 
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
jh 15 ans Messages postés 77 Statut Membre 10
 
re,
non les chiffres 4 ne proviennent pas de formule et une macro je ne connais pas.
0
Mike-31 Messages postés 19572 Date d'inscription   Statut Contributeur Dernière intervention   5 139
 
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
jh 15 ans Messages postés 77 Statut Membre 10
 
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
ccm81 Messages postés 11033 Statut Membre 2 433
 
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
jh 15 ans Messages postés 77 Statut Membre 10
 
0
ccm81 Messages postés 11033 Statut Membre 2 433
 
Quelque chose comme ça?

https://www.cjoint.com/?3ExqlmfeBcZ
0
jh 15 ans Messages postés 77 Statut Membre 10
 
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
ccm81 Messages postés 11033 Statut Membre 2 433
 
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
jh 15 ans Messages postés 77 Statut Membre 10
 
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
jh 15 ans Messages postés 77 Statut Membre 10
 
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
ccm81 Messages postés 11033 Statut Membre 2 433
 
ben voilà!
tu comprends pour quoi j'avais nommé la procédure Effae4 au lieu de Remplace4!
0
jh 15 ans Messages postés 77 Statut Membre 10
 
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
jh 15 ans Messages postés 77 Statut Membre 10
 
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
ccm81 Messages postés 11033 Statut Membre 2 433
 
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
jh 15 ans Messages postés 77 Statut Membre 10
 
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