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

Defi N° 1... aide pour un jeu

3 réponses
Avatar
Abileor
Bonjour j'ai besoin de votre aide...

Je veux via une macro aller remplir une zone nommée

Ex : flotte de voitures...

Elles circulent et j'aimerai que sur une destination la case nommée Rouen
s'alimente automatiquement avec le passage des voiture et en fonction des
périodes ou elles sont passées....

Cf tableau ci joint

http://www.cijoint.fr/cjlink.php?file=cj200911/cijsjMVtbc.xls

J'aurai un deuxième défi....

A suivre...

3 réponses

Avatar
FdeCourt
Salut,

Avec une formule VBA ?

Function mesVoitures(tablo1 As Range, tablo2 As Range, maValeur As
Range)
Application.Volatile
tmpTablo1 = tablo1.Value
tmpTablo2 = tablo2.Value
tmpMaValeur = maValeur.Value

'Controles
If UBound(tmpTablo1, 2) > 1 Then mesVoitures = "Erreur"
If UBound(tmpTablo1, 1) <> UBound(tmpTablo2, 1) Then mesVoitures "Erreur"
If IsArray(tmpMaValeur) Then mesVoitures = "Erreur"

If mesVoitures <> "Erreur" Then
x = UBound(tmpTablo1, 1)
For x = 1 To UBound(tmpTablo2, 1)
For y = 1 To UBound(tmpTablo2, 2)
If tmpTablo2(x, y) = tmpMaValeur Then
mesVoitures = mesVoitures & tmpTablo1(x, 1) & " / " &
tmpTablo2(1, y) & Chr(10)
End If
Next
Next
End If
End Function

et elle s'utilise ainsi :
=mesvoitures(A3:A6;B3:E6;G3)

Cordialement,

F.
Avatar
Abileor
excellent merci nickel
mais si j'osais... pensez vous que l'on puisse trier le résultat par période


"FdeCourt" a écrit dans le message de groupe de
discussion :

Salut,

Avec une formule VBA ?

Function mesVoitures(tablo1 As Range, tablo2 As Range, maValeur As
Range)
Application.Volatile
tmpTablo1 = tablo1.Value
tmpTablo2 = tablo2.Value
tmpMaValeur = maValeur.Value

'Controles
If UBound(tmpTablo1, 2) > 1 Then mesVoitures = "Erreur"
If UBound(tmpTablo1, 1) <> UBound(tmpTablo2, 1) Then mesVoitures > "Erreur"
If IsArray(tmpMaValeur) Then mesVoitures = "Erreur"

If mesVoitures <> "Erreur" Then
x = UBound(tmpTablo1, 1)
For x = 1 To UBound(tmpTablo2, 1)
For y = 1 To UBound(tmpTablo2, 2)
If tmpTablo2(x, y) = tmpMaValeur Then
mesVoitures = mesVoitures & tmpTablo1(x, 1) & " / " &
tmpTablo2(1, y) & Chr(10)
End If
Next
Next
End If
End Function

et elle s'utilise ainsi :
=mesvoitures(A3:A6;B3:E6;G3)

Cordialement,

F.


Avatar
FdeCourt
Bonsoir,

Il suffit juste d'inverser les deux lignes "for" (en supposant que les
mois sont déjà dans le bon ordre dans le tableau) :

Function mesVoitures(tablo1 As Range, tablo2 As Range, maValeur As
Range)
Application.Volatile
tmpTablo1 = tablo1.Value
tmpTablo2 = tablo2.Value
tmpMaValeur = maValeur.Value
'Controles
If UBound(tmpTablo1, 2) > 1 Then mesVoitures = "Erreur"
If UBound(tmpTablo1, 1) <> UBound(tmpTablo2, 1) Then mesVoitures =
"Erreur"
If IsArray(tmpMaValeur) Then mesVoitures = "Erreur"
If mesVoitures <> "Erreur" Then
x = UBound(tmpTablo1, 1)
For y = 2 To UBound(tmpTablo2, 2)
For x = 1 To UBound(tmpTablo2, 1)
If tmpTablo2(x, y) = tmpMaValeur Then
mesVoitures = mesVoitures & tmpTablo1(x, 1) & " / " &
tmpTablo2(1, y) & Chr(10)
End If
Next
Next
End If
End Function

Cordialement,

F.