Recherche valeurs en vis à vis par VBA

  • Initiateur de la discussion Initiateur de la discussion Amilo
  • 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 !

Amilo

XLDnaute Accro
Bonsoir le forum,

J'ai un problème un peu compliqué pour moi et je vous suis d'avance reconnaissant pour votre aide.

Dans mon fichier ci-joint, je souhaiterais remplir automatiquement ma ligne 2 de l'onglet "Recherche" en fonction de la cellule B7 (validation de données).

Les données proviennent de la plage E2:F???? (qui sera dynamique sur 2 colonnes) de l'onglet "Base".

Par ex : AAAAA de la cellule B7 aura pour valeurs en ligne 2 : 1A, 2A, 3A, 4A,..... etc émanant des vis à vis respectifs de AAAAA dans les colonnes E>F>E....etc ou F>E>F....etc

Merci

Cordialement
 

Pièces jointes

Dernière édition:
Re : Recherche valeurs en vis à vis par VBA

Salut Amilo,
voici une façon de faire.

Tout d'abord, ajoutez ce code dans le module de la feuille "Recherche"
VB:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)

Dim Adresse_Verif As String

Application.ScreenUpdating = False
Adresse_Verif = "$B$7"
If Target.Address = Adresse_Verif Then
    Call Mise_a_jour_recherche
End If

End Sub

Ensuite, ajoutez ceci dans un module traditionnel.
VB:
Option Explicit
Sub Mise_a_jour_recherche()

Dim DC As Integer, DL As Integer, i As Integer, j As Integer
Dim Resultat_Recherche(1 To 10000) As Variant
Dim Compteur As Integer

Sheets("Recherche").Select
DC = Cells(2, 256).End(xlToLeft).Column
If DC > 2 Then
    With Range(Cells(2, 3), Cells(2, DC))
        .ClearContents
        .ClearFormats
    End With
End If

Sheets("Base").Select
DL = Cells(65536, 5).End(xlUp).Row
Compteur = 0
Cells(1, 1).Select
For i = 2 To DL
    For j = 1 To 2
        If Cells(i, j + 4).Value = Application.Workbooks(ThisWorkbook.Name).Sheets("Recherche").Cells(7, 2).Value Then
            Compteur = Compteur + 1
            If j = 1 Then
                Resultat_Recherche(Compteur) = Cells(i, j + 5).Value
            Else
                Resultat_Recherche(Compteur) = Cells(i, j + 3).Value
            End If
        End If
    Next j
Next i
    
Sheets("Recherche").Select
For i = 1 To Compteur
    Cells(2, i + 2).Value = Resultat_Recherche(i)
Next i
Application.Goto Range("A1"), True
    
End Sub

Cordialement,

Étienne
 
Dernière édition:
Re : Recherche valeurs en vis à vis par VBA

Bonsoir Etienne2323,

c'est impeccable, c'est excatement ça,

J'ai eu un doute lors de la sélection de CCCCC mais l'erreur vient de moi...dans ma base je l'ai écrit une fois en 5 lettres et une fois en 6 lettres,

Tout marche sans problème....et bravo pour ce code,

Mille mercis à vous

Cordialement
 
Re : Recherche valeurs en vis à vis par VBA

Bonjour le Forum,

Je tente de comprendre le code à Etienne2323 qui répond trés bien à mon cas,
J'ai repris le code en indiquant en dessous de chaque ligne ma traduction personnelle en rouge...!!

Mais j'ai décroché à mi-parcours et comme vous pouvez le remarquer, j'ai encore du chemin pour progresser en VBA.

Quelqu'un aurait des explications plus justes et plus claires sur ce code car j'aimerais pouvoir l'adapter à d'autres valeurs de ce même fichier ??

Merci d'avance

Cordialement

Désolé pour la présentation, elle n'est plus de la même forme que celle présentée par Etienne2323..

Option Explicit
Sub Mise_a_jour_recherche()

Dim DC As Integer, DL As Integer, i As Integer, j As Integer
Dim Resultat_Recherche(1 To 10000) As Variant
Dim Compteur As Integer

Sheets("Recherche").Select
Séléction de la feuille "Recherche"
DC = Cells(2, 256).End(xlToLeft).Column
DC= la colonne de gauche de la plage ligne 2 jusqu'à colonne 256
If DC > 2 Then
Si DC est supérieur à 2 alors
With Range(Cells(2, 3), Cells(2, DC))
plage de données de la plage(ligne 2 et colonne 3) + plage(ligne 2, colonne de DC)
.ClearContents
.Effacer contenu
.ClearFormats
.Effacer formats

End With
Fin
End If
Fin If

Sheets("Base").Select
Sélection de la feuille "Base"
DL = Cells(65536, 5).End(xlUp).Row
DL = plage entre la ligne 65536 et la colonne 5
Compteur = 0
Cells(1, 1).Select
Sélection de la cellule A1
For i = 2 To DL
Pour i = 2 à DL
For j = 1 To 2
If Cells(i, j + 4).Value = Application.Workbooks(ThisWorkbook.Name).Sheets("Recherche").Cells(7, 2).Value Then
Compteur = Compteur + 1
If j = 1 Then
Resultat_Recherche(Compteur) = Cells(i, j + 5).Value
Else
Resultat_Recherche(Compteur) = Cells(i, j + 3).Value
End If
End If
Next j
Next i

Sheets("Recherche").Select
Sélection de la feuille "Recherche"
For i = 1 To Compteur
Cells(2, i + 2).Value = Resultat_Recherche(i)
Next i
 
Dernière édition:
Re : Recherche valeurs en vis à vis par VBA

Re bonjour,

A défaut d'avoir compris et de pouvoir adapter ce code à une nouvelle demande, j'ai tenté d'avancer avec une formule Excel,

Pouvez-vous svp m'aider dans ma formule indiquée en ligne 3 de l'onglet "Recherche",

je souhaite y transposer les valeurs de la colonne N de l'onglet "Base" selon les variables de la cellule B7 et des données de la ligne 2 de la feuille "Recherche"

Une solution VBA serait également la bienvenue.

Merci d'avance

Cordialement
 

Pièces jointes

- 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
1
Affichages
333
Réponses
12
Affichages
802
Réponses
6
Affichages
662
Retour