Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

if répété avec conséquences différentes à chaque fois

1 réponse
Avatar
Chrisdolby
Bonjour, je vais essayé d'être le plus clair possible.
J'ai une première plage de cellules [I4:L9] appelée "zonequatre" dans
laquelle je serais amené à écrire des nombres allant de 1 à 12.
J'ai une deuxième plage de cellules [B4:D15] appelée "zonetrois".

Dans ma "zonequatre", j'inscrirai les nombres dans un ordre logique, à
savoir I4, J4, K4, L4, I5, J5 etc...jusqu'à L9.

Au fur et à mesure que j'inscrirai les nombres, je souhaiterais que
lorsqu'apparait le chiffre 1 pour la première fois, la case du dit chiffre 1
soit copiée dans la première case de ma "zonetrois" donc [B4].
Dans le même contexte, je souhaiterais que lorsque le chiffre 1 apparait
pour la seconde fois, la case du deuxième chiffre 1 soit copiée dans la
deuxième case de ma "zonetrois" donc [C4].
De la même manière, lorsque le chiffre 1 apparait pour la troisième fois, la
case du troisième chiffre 1 soit copiée dans la troisième case de ma
"zonetrois".
A partir de la quatrième fois ou le chiffre 1 apparait à nouveau, arrêter le
processus, ne rien faire.

Je souhaiterais faire cela avec les 12 nombres.
Donc si chiffre 2 pour la première fois, copier cette case dans [B5]
(zonetrois)
si chiffre 2 pour la seconde fois, copier cette case dans [C5](zonetrois)
si chiffre 2 pour la troisième fois, copier cette case dans [D5](zonetrois)

Si chiffre 3 pour la première fois, copier cette case dans [B6](zonetrois)
si chiffre 3 pour la seconde fois, copier cette case dans [C6](zonetrois)
si chiffre 3 pour la troisième fois, copier cette case dans
[D6](zonetrois...pour changer....) etc jusqu'au nombre 12.

Je souhaite réaliser cette "manoeuvre" en VBA si cela est réalisable.
Je suis désolé d'avoir été un peu répétitif mais c'est pour être le plus
clair possible...

Je vous remercie d'avance pour votre aide!(qui m'a permis de faire beaucoup
de progrès).

Chris

1 réponse

Avatar
MichDenis
Dans le module feuille de ton classeur, copie ce qui suit:

Pas testé - manque de temps....
'------------------------------
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Rg As Range, C As Range, K As Integer
Set Rg = Intersect(Target, Range("zonequatre"))
If Not Rg Is Nothing Then
Application.EnableEvents = False
For Each C In Rg
If C > 0 And C < 13 Then
K = Application.WorksheetFunction.Ceiling(C.Value, 0)
x = Application.WorksheetFunction.CountIf(Range("zonequatre"), Target)
If x <= 3 Then
Range("zonetrois")(K).Resize(, 2) = ""
Range("zonetrois")(K).Resize(, x - 1) = 1
End If
End If
Next
Application.EnableEvents = True
End If
End Sub
'------------------------------


"Chrisdolby" a écrit dans le message de news:

Bonjour, je vais essayé d'être le plus clair possible.
J'ai une première plage de cellules [I4:L9] appelée "zonequatre" dans
laquelle je serais amené à écrire des nombres allant de 1 à 12.
J'ai une deuxième plage de cellules [B4:D15] appelée "zonetrois".

Dans ma "zonequatre", j'inscrirai les nombres dans un ordre logique, à
savoir I4, J4, K4, L4, I5, J5 etc...jusqu'à L9.

Au fur et à mesure que j'inscrirai les nombres, je souhaiterais que
lorsqu'apparait le chiffre 1 pour la première fois, la case du dit chiffre 1
soit copiée dans la première case de ma "zonetrois" donc [B4].
Dans le même contexte, je souhaiterais que lorsque le chiffre 1 apparait
pour la seconde fois, la case du deuxième chiffre 1 soit copiée dans la
deuxième case de ma "zonetrois" donc [C4].
De la même manière, lorsque le chiffre 1 apparait pour la troisième fois, la
case du troisième chiffre 1 soit copiée dans la troisième case de ma
"zonetrois".
A partir de la quatrième fois ou le chiffre 1 apparait à nouveau, arrêter le
processus, ne rien faire.

Je souhaiterais faire cela avec les 12 nombres.
Donc si chiffre 2 pour la première fois, copier cette case dans [B5]
(zonetrois)
si chiffre 2 pour la seconde fois, copier cette case dans [C5](zonetrois)
si chiffre 2 pour la troisième fois, copier cette case dans [D5](zonetrois)

Si chiffre 3 pour la première fois, copier cette case dans [B6](zonetrois)
si chiffre 3 pour la seconde fois, copier cette case dans [C6](zonetrois)
si chiffre 3 pour la troisième fois, copier cette case dans
[D6](zonetrois...pour changer....) etc jusqu'au nombre 12.

Je souhaite réaliser cette "manoeuvre" en VBA si cela est réalisable.
Je suis désolé d'avoir été un peu répétitif mais c'est pour être le plus
clair possible...

Je vous remercie d'avance pour votre aide!(qui m'a permis de faire beaucoup
de progrès).

Chris