Besoin de votre aide svp mes amis

comme je vous est dit précédemment je suis débutante et je galère avec mes macro vba et j'ai vraiment besoin de votre aide svp

merci d'ouvrire le ficher et l'essayer pour voir de quoi je parle SVP SVP

voila le fichier pour que vous puissiez voir ce que je veux faire :

pour l'instant ma macro que j'ai mis dans le modul tunel elle fonctionne pour la parti Tunel , méme si j'ai encore quelque soucie dessus j'ai les plat qui se déplace dans la ligne 8 mais une fois que la R8 veux ce remplire mon programme commence a me faire n'importe quoi , de plus la partis que j'ai réussi a faire c'est les partis tonnage calandre et approvisionnement c'est deux partis fonctionne trés bien .

et maintenant ce que je veux faire stp si tu peux m'aidez c'est la suite de ce que j'ai fait :

dans un premier temps je veux que lorsque la première cellule de ma colonne AE se rempli que juste après je pointe de façon aléatoire sur la chaine de caractère qui est remplis dans la colonne AE la qui se trouve dans la colonne AN et je fait un calcule de soustraction (AQ=AH-AJ) une fois que j'ai fait se calcule et que j'ai coller le résultat dans la colonne AQ je passe a la colonne AU .

dans un deuxiéme temps je veux que lorsque ma boucle pointe sur la colonne AN et que on a pointer sur une chaine de caractère donnée , je veux que a se niveau la on va regarder la colonne AL et voir le numéro de séchoir qui lui correspond et lui affecter la valeur de 53 placer dans AE .

merci beaucoup

22simul.xlsm (82.48 Ko)

Regardez svp j'ai essayer ce code pour remplire les cellules de la colonne AQ mais malheureusement il m'affiche rien

Sub Choix_Aleatoire()
Dim f As Worksheet: Set f = Sheets("Interface")
Dim r, a, c
Dim d As Object: Set d = CreateObject("scripting.dictionary")
Dim i As Integer, j As Integer, n As Integer

'On enregistre chaque ligne ayant la même clé
r = f.[AG2:AP40]
For i = LBound(r) To UBound(r)
d(r(i, 8)) = d(r(i, 8)) & i + 1 & ":"
Next i

'On boucle la colonne C
j = 1
Do While f.Cells(j, 31).Value <> "" And f.Cells(j, 31).Offset(1, 0).Value <> ""
Recommence_la_boucle:
'On vérifie que la valeur existe dans le dictionnaire sinon on quitte la procédure
If Not d.exists(f.Cells(j, 31).Value) Then MsgBox f.Cells(j, 31).Value & " non trouvé dans la colonne AN ", 16: f.Cells(j, 31).Activate: Exit Sub
'On remet les items dans un tableau
a = Split(d(f.Cells(j, 31).Value), ":")
'On choisit une ligne au hasard dans le tableau
n = a(Int(((UBound(a) - 1) * Rnd)))
'Revenir au début si la ligne ne peut pas rester positive
If f.Cells(n, "ah").Value - f.Cells(n, "aj").Value < 0 Then GoTo Recommence_la_boucle
'On calcule la valeur en colonne R et on remplace également en colonne I
f.Cells(n, "aq").Value = f.Cells(n, "ah").Value - f.Cells(n, "aj").Value
f.Cells(n, "ah").Value = f.Cells(n, "aq").Value
'On note le poste choisi en colonne F pour exemple
f.Cells(j, "af").Value = "Ligne " & n
'On incrémente et on boucle
j = j + 1

i = f.[AE65000].End(xlUp).Row
Set d = CreateObject("scripting.dictionary")
'On boucle la colonne C
For j = 1 To i
'On incrémente chaque Plat pour déterminer le nombre de chaque
d(f.Cells(j, 31).Value) = d(f.Cells(j, 31).Value) + 1
Next j
For Each c In d.keys: d(c) = d(c) * 53: Next c

Loop

End Sub
Rechercher des sujets similaires à "besoin aide svp mes amis"