Récuperer informations sur plusieurs lignes

Bonjour à tous,

j'aurais besoin de vos conseils svp. Voici le probleme :

J'ai une liste de véhicule pour lesquel je dois vérifier s'il y a des bulletins ou recalls. Pour cela j'ai trois onglets : 1 onglet avec la liste des véhicules qui ont un bulletin, 1 onglet pour les recalls et enfin un troisieme onglet qui sera mis à jour toute les semaines qui représente la liste de véhicule de la semaine. Pour ces véhicules je dois vérifier s'il y a des bulletins ou recalls.

Pour ce faire, j'ai d'abord vérifier combien de bulletin et recall avaient le véhicule et ensuite je vais chercher le numero du bulletin ou recall.

Cela fonctionne parfaitement pour les véhicules qui ont un seul bulletin ou recalls.

Mais lorsqu'il y en a plusieurs je ne suis pas capable de récupérer toute l'information.

Est ce que quelqu'un aurait une idéé pour récuperer toute la liste de bulletin ou recall pour les véhicules qui ont en plus qu'un ??

Merci à vous.

ci-joint le fichier.

35aide.xlsx (240.45 Ko)

J'avais pensé à une solution qui pourrait fonctionner mais je ne suis pas capable de faire ca dites moi ce que vous en pensez

un code VBA :

1-on parcours la liste des véhicules (onglet TCD colonne A)

2- POur chaque véhicule on parcours la liste de véhicules dans l'onglet bulletin et à chaque fois que le numero de véhicule est égal au numero de véhicule dans la liste de bulletin, on enregistre le numero du bulletin (onglet bulletin colonne A)

3-Une fois la liste de bulletin parcouru en entier on copie les numero de bulletin enregistrer dans l'onglet TCD sur la ligne du vehicule

Exemple :

on lit le premier vehicule dans TCD en A298 = 1517711

il a 2 bulletins le programme devrait les enregistrer et les copier en B298 et C298

Pensez-vous que ca serait un gros code à faire ?

Merci

Bonjour,

voici un debut de code :

Option Explicit
Option Base 1

Public Sub ajout_bulletin_recall()

Dim valeur_lue As String
Dim ligne As Long

For ligne = 4 To Sheet4.UsedRange.Rows.Count

valeur_lue = Sheet4.Cells(ligne, 1).Value

    'enregistrer les bulletins
    Dim ligne2 As Long
    Dim vehicle_bulletin As String

    For ligne2 = 2 To Sheet2.UsedRange.Rows.Count

    vehicle_bulletin = Sheet2.Cells(ligne2, 2)

    If valeur_lue = vehicle_bulletin Then

        Dim liste_bulletin() As String
        Dim i As Long

        i = 1
        liste_bulletin(i) = Sheet2.Cells(ligne2, 1).Value
        i = i + 1

    End If

    Next ligne2

Next ligne

End Sub

L'idée était d'enregistrer le numero du bulletin dans le tableau liste_bulletin puis une fois la liste de bulletin parcouru, on irait ecrire la ligne liste_bulletin(i) dans la feuille TCD pour le vehicule correspondant.

mais la ligne liste_bulletin(i) = Sheet2.Cells(ligne2, 1).Value me dit "out of range".

Quelqu'un aurait une idée pour corriger le probleme ?

Merci à vous.

Bonjour,

avant d'ajouter des élément dans un tableau il faut définir sa dimension :

exemple :

dim tableau() as String

redim tableau(10) ' le tableau a donc maintenant 11 case ou mettre des éléments

merci

malheuresement je ne sais pas d'avance la taille du tableau

existe-t-il une facon de Redim de maniere variable ?

pour ma part je ne connait pas de fonction qui permet de faire cela mais vous pouvez quand même crée votre propre fonction pour augmenter sa taille.

if tableau(Ubound(tableau)) <>"" then

redim tableau(Ubound(tableau) + 10) 'augmenter la taille du tableau de 10

end if

Ubound te donne la taille du tableau actuelle

Je sais que le tableau aura maximum 5 colonnes j'ai donc redim 5 et le programme ira ecrire dans les 5 colonnes de la feuilles TCD (colonne B à F) au pire les cases seront vides

voici le code que jai corrigé :

   If valeur_lue = vehicle_bulletin Then

        Dim liste_bulletin() As String
        Dim i As Long

        ReDim liste_bulletin(5) As String

        i = 1
        liste_bulletin(i) = Sheet2.Cells(ligne2, 1).Value
        i = i + 1

    End If

    Next ligne2

    Dim j As Long

    If ligne2 - 1 = Sheet2.UsedRange.Rows.Count Then

    For j = 1 To UBound(liste_bulletin)
    Sheet4.Cells(ligne, j + 1).Value = liste_bulletin(j)
    Next j

    End If

malheureusement la ligne Sheet4.Cells(ligne, j + 1).Value = liste_bulletin(j) me donne encore le message d'erreur out of range.

comment doit-on faire pour ecrire le tableau liste_bulletin dans la feuille TCD svp ?

merci

Je joins le fichier si ca peut aider.

14aide2.xlsm (208.11 Ko)

FInalement j'ai trouver une solution à mon probleme si ca peut aider d'autres personnes :

creer une fonction avec VBA voici le lien qui propose la solution

https://www.youtube.com/watch?v=klJXtxbivIQ

Merci pour votre aide.

Rechercher des sujets similaires à "recuperer informations lignes"