Bonjour, j'ai déjà fait appel à vos services mais ayant dû modifier des choses sur ma feuille, les macros forcément ne correspondent plus à ce queje veux.
J'ai voulu essayer de modifier certaines choses... mais j'avou je suis pas au top
En fait quand je double clique sur C5 je veux un résultat aléatoire en D5 compris entre 1 et C5 . Là pas de problème, la cellule n'a pas changé donc j'ai bien ce que je veux.
Mais je voudrais la même chose en C6, C9, C10...F5, F6...I5, I6...L5, L6...O5, O6... toutes les cellules en fond noir.
Bonjour Nico le forum,
je viens d'ouvrir ton classeur mais comme tu n'as mis aucune indication il faut donc deviner ce qui devrait être en C5 et là moi j'ai pas compris.
Alors si au moins tu expliquais ce que tu devrais obtenir en C5 et C6 etc, ce serait plus simple pour t'aider
a+
Papou
Bonjour Nico le forum,
je viens d'ouvrir ton classeur mais comme tu n'as mis aucune indication il faut donc deviner ce qui devrait être en C5 et là moi j'ai pas compris.
Alors si au moins tu expliquais ce que tu devrais obtenir en C5 et C6 etc, ce serait plus simple pour t'aider
a+
Papou
En c5, c6 ... j'aurai un nombre aléatoire compris entre 1 et 100 que je rentrerai moi même. et en d5 je souhaiterai avoir lorsque je double clique sur c5 un nombre aléatoire compris entre 1 et c5 .
voici une fiche avec un exemple: en C5 j'ai saisi 62, quand je double clique sur C5 j'obtiens un nombre aléatoire compris entre 1 et 62 (C5) .
Moi je voudrais le même principe dans toutes les cases que j'ai noircie. Mais quand je rentre pour modifier le macro... je comprend pas grand chose !
re nico , le forum,
bah un peu plus clair mais pas beaucoup!!!
envoi moi le fichier avant que tu le modifies, celui qui marchait et je vais regarder cela car tes explications sont peut être claire pour toi qui connait ton problème mais pour moi pas vraiment.
a+
Papou
Bonjour Nico.Sibille, Paritec ,
Voici le code corrigé (si j'ai bien compris)
Code:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Target.Column > 16 Or Target.Row > 40 Then Exit Sub
Dim Li As Byte, Col As Byte
Randomize
Li = Target.Row
If Li Mod 4 = 1 Then
Col = Target.Column
If Col Mod 3 = 0 Then
If Target <> "" Then Cells(Li, Col + 1) = Int(Cells(Li, Col) * Rnd + 1)
End If
End If
Cancel = True
End Sub
J'utilise Mod qui renvoie le reste de la division pour savoir si je suis dans la bonne colonne et la bonne ligne.
Par contre, j'ai pas compris l'utilité de C6 .
Bon WE
ce fichier est le même qu'avant mais corrigé.
avant il n'y avait que la ligne 5 et rien ensuite.
c'est pour ça que celle ci fonctionne: je double clique sur c5: j'ai mon résultat en d5; je double clique sur F5 j'ai mon résultat en g5; idem en I5 pour j5 .
Je voudrais un macro identique à celui-ci pour chaque case noire. exemple en C9 je rentre un nombre, je double clique dessus et en d9 j'obtiens un résultat compris entre 1 et c9 .
Re ,
C'est bien ce que j'avais dit, je ne suivais pas pour C6. Donc, pour que toutes les cases noires fonctionnent, il faut modifier
Code:
If Li Mod 4 = 1 [B][COLOR=red]Or Li Mod 4 = 2[/COLOR][/B] Then
pour que les 2 lignes fonctionnent, et non uniquement la première. Par contre, il y a un problème de logique, tu souhaites avoir un nombre entre 1 et C5, mais quand C5 = 0, tu sort du cadre et tu obtiens 1...
Bon WE
Désolé, c'est encore moi mais j'ai eu besoin de rallonger mon tableau et du coup en voulant retourner à nouveau... modifier le macro, je ne vois pas de repère de cellule et ne comprend donc toujours pas... (désolé) comment faire la mêm hose sur toutes les cellules qui suivent.
Pour ceux qui n'ont pas suivi ci dessus, j'ai besoin en double cliquant sur c5, d'avoir en d5 un résultat compris entre C5 et 100.
En c6 , c9, c10, c13, c14 ... c165, c166 d'avoir un résultat compris entre c6 , c9, c10, c13, c14 ... c165, c166 et 100.
Bonsoir le forum ,
Ne le prends pas mal, mais, je serais toi, j'arrêterais de fumer la moquette, ça ne te vaux rien !
D'après mes tests, ton nouveau fichier fonctionne tel que tu l'avais demandé, c'est-à-dire que le double-clic en C5 (C6, C9,C10, C13,C14,...,F5, F6, F9, F10,...) donne dans la cellule immédiatement à droite un aléatoire entre 1 et la valeur de la cellule de ton double-clic, seule la valeur extrème de ligne est à passer en 52 ...
Maintenant, vu la taille de ton tableau, il me paraitrait plus avisé d'utiliser l'évènement Change plutôt que Double_Click
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column > 16 Or Target.Row > [B][COLOR=red]52[/COLOR][/B] Then Exit Sub
Dim Li As Byte, Col As Byte
Randomize
Li = Target.Row
If Li Mod 4 = 1 Or Li Mod 4 = 2 Then
Col = Target.Column
If Col Mod 3 = 0 Then
If Target <> "" Then Cells(Li, Col + 1) = Int(Cells(Li, Col) * Rnd + 1)
End If
End If
End Sub
Enfin, si finalement, c'est une valeur entre C5 et 100 et non 1 et C5 qui t'intéresse, il va falloir revoir la génération de l'aléatoire.
Bonne nuit
Excuse moi mais je viens de réessayer, ca marche jusqu'à C37 et C38 mais après à partir de C41 jusqu'à C166 , ça ne marche pas. Quand je duble cique, il ne m'apparaît rien en D41.
Et pardon, je me suis mal exprimé, ce n'est pas une valeur entre C5 et 100 mais bien 1 et C5 pour limite !
Ah mais si, je suis trop nul... oh la la !
En fait, ce n'était pas 52 mais 168... la fin de mon tableau, ca y est j'ai pigé !
Merci beaucoup, une dernière faveur...?
Est ce que cela est possible en appuyant sur un bouton que je créerai d'effacer d'un seul coup certaines cellules ?
Cela m'éviterai de sortir sans enregistrer et réouvrir le fichier...
Merci.