VBA Fonction sur une colonne entière d'une variable tab

Bonjour,

Je vais essayer d'être claire, mais n'hésitez pas à me demander des précisions si j'échoue

J'ai créé une variable TG() à deux dimensions et l'ai alimenté avec des données provenant de deux onglets différents (PANNES et APPAREIL) en référence aux données d'un troisème onglet (TB). PS: Toutes les données sont référencées à la base dans des listobjects.

voici le code:

Dim TG(), TB_IS As Integer, der As Integer

der = Worksheets("tb").ListObjects("recap").ListRows.Count

For TB_ID = 2 To der

taille = 0

'défini la taille du tableau

With Worksheets("pannes").ListObjects("PANNES")

'compte la taille de TG()

For i = 2 To .ListRows.Count + 1

'si l 'ID dans panne correspond à l'ID dans Recap, il alimente la taille de 1

If Worksheets("tb").ListObjects("recap").Range(TB_ID, 3) = .Range(i, 1) Then taille = taille + 1

Next

ReDim TG(taille - 1, 5)

'alimente le tableau

x = 0

For i = 2 To .ListRows.Count + 1

'si l 'ID dans panne correspond à l'ID dans Recap, il alimente le TG des données de panne

If Worksheets("tb").ListObjects("recap").Range(TB_ID, 3) = .Range(i, 1) Then

TG(x, 0) = .Range(i, 1) 'alimente l'ID

TG(x, 1) = .Range(i, 4) 'alimente la date de panne

TG(x, 2) = .Range(i, 5) 'alimente la date retour

TG(x, 3) = .Range(i, 6) 'alimente la garantie réparateur

x = x + 1

End If

Next

End With

With Worksheets("Appareil").ListObjects("appareil")

xa = 0

For i = 2 To .ListRows.Count + 1

'si l 'ID dans Appareil correspond à l'ID dans Recap, il alimente le TG des données de appareil

If Worksheets("tb").ListObjects("recap").Range(TB_ID, 3) = .Range(i, 4) Then

TG(x, 4) = .Range(i, 5) 'alimente la date d'achat

TG(x, 5) = .Range(i, 6) 'alimente la garantie constructeur

x = x + 1

End If

Next

End With

Next

suite à cela je voudrai faire quelque chose du genre:

if taille=0 then 'soit la première dimension n'a qu'une entrée

if TG(x,4) '=date d'achat + TG(x,5) 'durée garantie constructeur >= TG(x,2) 'date de la panne then

celluledéfiniedans("tb").value = "Garantie constructeur en cours"

else celluledéfiniedans("tb").value = "pas de garantie en cours"

end if

else if worksheetfunction.Max(TG(x,2)) 'soit la date max de la dimension date retour + TG(x,3) 'garantie Réparateur >= TG(x,2) 'date de la panne then

celluledéfiniedans("tb").value= "garantie réparateur en cours"

else celluledéfiniedans("tb").value= "pas de garantie en cours"

end if

Le problème c'est que je cherche à agir sur l'ensemble de la colonne 3 de la seconde dimension de la variable TG(), et c'est la que je pêche, je n'arrive vraiment pas à trouver comment m'y prendre.

Pourriez vous m'aider?

bonjour

joins un peeetit fichier de 2 onglets de 3 colonnes et 5 lignes et le résultat attendu

je pense que des RECHERCHEV et/ou des TCD peuvent suffire

avec quelques SI pour les tests de validité des garanties.

sans forcément faire appel à VBA

je gère au moins 5 fichiers de type GMAO de la sorte.

amitiés

Ok voici le fichier.

Je voulais éviter d'utiliser des formules, d'autant que je pense que je serais obligé de faire appel à des formules matricielles, ce que je ne maitrise vraiment pas bien.

Voici le fichier.

La complexité du TCD ou des formules, est du à l'onglet PANNES, car les identifiants se répètent et bref avec les tcd j'ai pas réussi à avoir le résultat voulu.

re

ajout de la colonne DateFinGarantie

ajout d'une MFC pour mettre en évidence les garanties terminées et en cours

un TCD liste les appareils en réparation

note : dans la colonne objet de la panne, mettre la panne (afficheur, alim, etc) et non si c'est pris en garantie

au besoin crée une colonne "pris en garantie" dans laquelle tu mets OUI ou NON

note 2 : attention à saisir un nombre de mois et non un nombre suivi du mot Mois

Merci pour ces précisions, mais je reste sur mon pb

Je te renvoi le fichier avec deux lignes en orange.

C'est un apprareil qui est renvoyé en réparation alors qu'il encore sous garantie réparateur.

Comment je fais pour que cela apparaisse dans le TCD?, le fait qu'il soit encore sous garantie j'entends.

De plus comment je fais pour voir si un appareil qui est envoyé en reparation pour la première fois, bénéficie d'une garantie constructeur ou pas (garantie constructeur dans l'onglet appareil)?

C'est sur ces points que je n'ai pas réussi à me débrouiller avec les TCD et que j'ai décidé de passer par une macro.

Mais j'avoue que si tu as une piste, je reste preneuse

ps,

note 1: oui dans la colonne objet de la panne, j'ai écrit les garanties, mais c'est juste pour m'y retrouver dans les différentes simulations que j'ai faites, c'est en fait le résultat que je cherche à obtenir via formule, TCD ou Macro.

Note 2: oui tu as raison, en fait, les données sont saisies via des userforms qui formatent les données en nombre, comme derrière dans le listobjects le format est aussi personnalisé, normalement même si l'utilisateur écrit "6 Mois" au lieu de "6", Excel reconnait et transorme au bon format (je vais revérifier quand même).

Note 3: en fait, tu n'as dans le doc que je t'envoie, qu'une partie du classeur Excel, je cherche à obtenir un résultat précis, qui s'inscrit dans un ensemble. tu remarqueras par exemple que dans l'onglet "TB", il y a une comparaison entre le cumul des coût de réparation et le coût d'achat avec une MFC qui va bien.

re

avec une colonne "fingarantieconstructeur" dans appareils

et une REchercheV dans pannes

et ajout de cette info dans le TCD

note : encore pb saisie du mot "mois" dans les appareils

amitiés

bonne idée les TCD d'analyse des coûts

mais ne pas le mélanger avec la notion d'appareils en cours de réparation (je pense)

Rechercher des sujets similaires à "vba fonction colonne entiere variable tab"