Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2016 VBA recherchev

vinz602

XLDnaute Junior
Bonjour,

j'ai essayé de modifier un code, mais mes connaissances en VBA sont très limitées

je souhaite remplir 3 tableaux dans la Feuil1 en allant chercher dans la Feuil2 mes données (Nom de la zone définie: tableau) juste en mettant ma référence dans la colonne A dans les différentes lignes du tableau.
je demande qu'à chaque changement de valeur dans mes tableaux je lance la macro remplir

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("A3:A12,A16:A25,A29:A38")) Is Nothing Then
Call remplir
End If
End Sub


j'ai donc modifié la macro ci dessous en localisant les 3 tableaux que je souhaite remplir

Sub remplir()
For Each cel In Sheets("Feuil1").Range("A3:A12,A16:A25,A29:A38")
If cel.Offset(0, 1).Value = "" And cel.Value <> "" Then
cel.Offset(0, 1).FormulaLocal = "=RECHERCHEV(A3;tableau;2;FAUX)"
End If
Next cel
For Each cel In Sheets("Feuil1").Range("A3:A12,A16:A25,A29:A38")
If cel.Offset(0, 2).Value = "" And cel.Value <> "" Then
cel.Offset(0, 2).FormulaLocal = "=RECHERCHEV(A3;tableau;3;FAUX)"
End If
Next cel
End Sub


je n'arrive pas à adapter la macro pour prendre uniquement dans la formule recherchev la cellule que je travaille (A3) pour ma première ligne du tableau
j'ai essaye avec une formule =RECHERCHEV(cell.value;tableau;3;FAUX) mais ça plante
avez vous une idée pour m'aider me permettant d'adapter soit la macro ou la formule à chaque ligne?
et au passage quand je réinitialise le tableau en supprimant tous le contenu des cellules des tableaux tout plante aussi .

en espérant que vous puissiez m'aider


 

Pièces jointes

  • testvba.xlsm
    18 KB · Affichages: 16

sousou

XLDnaute Barbatruc
bonjour
si j'ai compris essaie comme ceci:
la recherhcev est une chaine de caractères à exploitée comme tel
cel.Offset(0, 1).FormulaLocal = "=RECHERCHEV(" & cel.Value & ";tableau;2;FAUX)"
 

vinz602

XLDnaute Junior
Bonjour

Merci de ta réponse sousou alors pour qu'il accepte il faut le mettre entre "& &".

je viens de résoudre mon problème avec cette macro:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim der_lig As Long
Dim code_art As String
Dim ch_art As String
On Error Resume Next
If Not Intersect(Target, Range("A3:A31,A35:A63,A67:A95")) Is Nothing Then
T = Target.Row

code_art = Range("A" & T)
With Worksheets("Tarif2020")
der_lig = (.Cells(100000, 1).End(xlUp).Row) + 1


For i = 2 To der_lig
ch_art = .Cells(i, 1)

If ch_art = Range("A" & T) Then
Sheets("PDV").Range("B" & T) = .Cells(i, 2)
Sheets("PDV").Range("C" & T) = .Cells(i, 3)
Exit Sub
End If
Next

MsgBox "Code Article non trouvé ou pas dans le tarif"
End With
End If
End Sub


Merci tout de même pour ton aide
 

Discussions similaires

Réponses
2
Affichages
321
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…