XL 2013 Créer une boucle excel

  • Initiateur de la discussion Initiateur de la discussion Benoît75
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Benoît75

XLDnaute Nouveau
Bonjour,

J'ai un problème avec excel. Je souhaite rechercher un taux façon Rercherche V mais pour plusieurs données. Les données étant aléatoire il peux y en avoir 5 comme 200 et je souhaiterais mettre en place une boucle VBA activable par un bouton afin qu'il puisse rechercher l'information que je souhaite.

J'ai 2 fichiers :

fichier 1 : là où se trouve la donnée que je recherche
fichier 2 : il s'agit d'une extraction des données dont j'ai besoin.

En gros je dois recherche le taux associé au numéro de contrat. Je ne sais pas si on peux faire cette recherche sur 2 fichiers distinct auquel cas il faudra rapatrier les données du fichier 2 dans le fichier 1 et non l'inverse.

Dans le fichier 1 le numéro de contrat se trouve à la colonne D et le taux que je recherche se trouve à la colonne Y (d'ailleurs dans ce fichier le nombre de contrat est également aléatoire il peut il y en avoir 1000 comme 10 000.
Dans le fichier 2 le numéro de contrat se trouve à la colonne F

Donc dans l'Ideal il faudrait que la macro crée une colonne taux dans le fichier 2 à la colonne N ou O en ayant comme intitulé "Taux Tese" et si cela n'est pas possible entre 2 fichier de tout rapatrier sur le fichier 1 dans un nouvel onglet en gardant les mêmes colonnes.
PS: j'ai dû enlever les infos inutiles du fichier 1 car le fichier est trop volumineux pour ici.

Merci par avance pour votre aide.

Cordialement.
Benoit.
 

Pièces jointes

Hello

un essai par macro à mettre dans un module standard

VB:
Sub Macro1()
Dim WbSource As Workbook
Dim WbDest As Workbook
Dim TabSource() As Variant
Dim TabDest() As Variant

Set WbDest = ActiveWorkbook
Nomfichier = Application.GetOpenFilename(, , "Fichier Source") 'demande le fichier source qui contient les infos à importer
If Nomfichier <> "" Then
    Workbooks.Open (Nomfichier) 'ouvre le fichier
    Set WbSource = ActiveWorkbook
End If
'
With WbSource.Sheets("Feuil1")
    TabSource = .UsedRange.Value 'récupère toutes les infos dans un tablo vba
End With

With WbDest 'on repasse sur le fichier de traitement
    .Activate
    With .Sheets("Feuil1")
        .Range("M1").Value = "Taux Tese" 'on ajoute l'intitulé de colonne
        TabDest = .UsedRange.Value 'on met toute la feuille dans un tablo vba
        For i = LBound(TabDest, 1) To UBound(TabDest, 1) 'pour chaque ligne
            For j = LBound(TabSource, 1) To UBound(TabSource, 1) 'on cherche le numéro de contrat dans le tablo source
                If TabDest(i, 6) = TabSource(j, 4) Then
                    TabDest(i, 13) = TabSource(j, 25) 'on copie le taux (colonne Y ==>colonne M)
                    Exit For
                End If
            Next j
        Next i
        .Range("A1").Resize(UBound(TabDest, 1), UBound(TabDest, 2)) = TabDest 'on colle le résultat dans la feuille
    End With
End With
WbSource.Close False 'on ferme le fichier source sans modif
End Sub
 
Bonjour Vgendron,

Je viens de tester ta macro et j'aurais quelques questions:
Est-ce que je dois modifier des choses dans la macro tel que "fichier source" ou "nomfichier"?
Dans le fichier 1 j'ai oublié d'ajouter qu'il y a plusieurs onglets et l'onglet qui m'intéresse c'est l'onglet "base" dois-je changer quelques chose pour que la macro fonctionne ?

Merci par avance pour ton aide.

Cordialement.
 
NomFichier, c'est juste une variable interne pour le VBA:
lorsque tu vas selectionner ton fichier sur le PC: la valeur de Nomfichier sera le chemin complet dudit fichier
==> pas besoin de modifier

pour l'onglet base
la. il faut modifier

With WbSource.Sheets("Feuil1")
par
With WbSource.Sheets("Base")
 
Fais un essai avec ce code

VB:
Sub Macro1()
Dim WbSource As Workbook
Dim WbDest As Workbook
Dim TabSource() As Variant
Dim TabDest() As Variant

Set WbDest = ActiveWorkbook
Nomfichier = Application.GetOpenFilename(, , "Fichier Source") 'demande le fichier source qui contient les infos à importer
If Nomfichier <> "" Then
    Workbooks.Open (Nomfichier) 'ouvre le fichier
    Set WbSource = ActiveWorkbook
End If
'
With WbSource.Sheets("Feuil1")
    fin = .Range("D" & .Rows.Count).End(xlUp).Row
    TabSource = .Range("A2:Z" & fin).Value 'récupère toutes les infos dans un tablo vba
End With

With WbDest 'on repasse sur le fichier de traitement
    .Activate
    With .Sheets("Feuil1")
        .Range("M1").Value = "Taux Tese" 'on ajoute l'intitulé de colonne
        TabDest = .UsedRange.Value 'on met toute la feuille dans un tablo vba
        For i = LBound(TabDest, 1) To UBound(TabDest, 1) 'pour chaque ligne
            For j = LBound(TabSource, 1) To UBound(TabSource, 1) 'on cherche le numéro de contrat dans le tablo source
                If TabDest(i, 6) = TabSource(j, 4) Then
                    TabDest(i, 13) = TabSource(j, 25) 'on copie le taux (colonne Y ==>colonne M)
                    Exit For
                End If
            Next j
        Next i
        .Range("A1").Resize(UBound(TabDest, 1), UBound(TabDest, 2)) = TabDest 'on colle le résultat dans la feuille
    End With
End With
WbSource.Close False 'on ferme le fichier source sans modif
End Sub
 
j'ai changé la partie "mise dans un tablo" de la feuille base
.usedrange==> prend TOUTE la zone utilisée dans la feuille
utilisée= contient des données OU une mise en forme est appliquée

c'est le cas des gens qui sélectionnent une colonne complète et applique un quadrillage.. par exemple
==> ca se voit tout de suite avec le curseur (ascenceur) de droite
si tu te places en bas du tablo qui contient des données==> ce curseur n'est pas tout en bas
lorsque tu places ce curseur tout en bas.. tu te retrouves avec la ligne 1048576 affichée

du coup, au lieu du usedrange (qui doit provoquer un dépassement de la taille autorisée du tablo vba?? si il y en a une) je detecte la dernière ligne de la colonne D qui contient des données (hors mise en forme)
et je limite le tablo à cette ligne
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
8
Affichages
391
Réponses
21
Affichages
852
Réponses
7
Affichages
308
Réponses
10
Affichages
369
Réponses
5
Affichages
338
Retour