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)