if répété avec conséquences différentes à chaque fois
1 réponse
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).
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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
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" <Chrisdolby@discussions.microsoft.com> a écrit dans le message de news:
81FE35B3-E1FB-449E-8870-C3926A21087D@microsoft.com...
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).
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).