La Macro s'effectue dès que la touche entrée est touchée

zbig

XLDnaute Occasionnel
Bonjour

Dans ma feuille1 j'ai un tableau 4 colonne et X lignes
num nom prenom age
1 a e 12
2 b f 13
3 c g 14
4 d h 15


dans ma feuille2
j'ai une cellule
a1= numero
a2=nom
a3=prénom
a4= age

si je mets un n° dans en b1
je souhaite que les infos concernant le n° s'inscrivent automatiquement dès que je passe à une autre cellule , ou touche entrée

merci
zbig
 
Dernière édition:

zbig

XLDnaute Occasionnel
Re : La Macro s'effectue dès que la touche entrée est touchée

Bonsoir
en fouillant sur le forum, j'ai trouvé la concatenation :)

Cependant, j'ai un problème pour la recherche amtch.

Si dans le listing je cherche le n° 1500 et que le listing s'arrête à 1400
alors j'ai les infos de 1400 au lieu de vide!

quel paramètre ajouter?

merci

Zbig



voici la procedure
Private Sub Worksheet_Change(ByVal Target As Range)
If Left$(Target.Address, 3) = "$E$" Then
'recherche dans la feuille listing les infos correspondantes au n° de dossard pour création de série
Range("F" & Target.Row).Value = Evaluate("INDEX(OFFSET(listing!$b$1,0,0,COUNTA(listing!$A:$A),1),MATCH($E$" & Target.Row & ",OFFSET(listing!$A$1,0,0,COUNTA(listing!$A:$A)),1))")
Range("G" & Target.Row).Value = Evaluate("INDEX(OFFSET(listing!$c$1,0,0,COUNTA(listing!$A:$A),1),MATCH($E$" & Target.Row & ",OFFSET(listing!$A$1,0,0,COUNTA(listing!$A:$A)),1))")
Range("H" & Target.Row).Value = Evaluate("INDEX(OFFSET(listing!$e$1,0,0,COUNTA(listing!$A:$A),1),MATCH($E$" & Target.Row & ",OFFSET(listing!$A$1,0,0,COUNTA(listing!$A:$A)),1))")
Range("I" & Target.Row).Value = Evaluate("INDEX(OFFSET(listing!$F$1,0,0,COUNTA(listing!$A:$A),1),MATCH($E$" & Target.Row & ",OFFSET(listing!$A$1,0,0,COUNTA(listing!$A:$A)),1))")
Range("J" & Target.Row).Value = Evaluate("INDEX(OFFSET(listing!$G$1,0,0,COUNTA(listing!$A:$A),1),MATCH($E$" & Target.Row & ",OFFSET(listing!$A$1,0,0,COUNTA(listing!$A:$A)),1))") & "-" & Evaluate("INDEX(OFFSET(listing!$H$1,0,0,COUNTA(listing!$A:$A),1),MATCH($E$" & Target.Row & ",OFFSET(listing!$A$1,0,0,COUNTA(listing!$A:$A)),1))")
Range("K" & Target.Row).Value = Evaluate("INDEX(OFFSET(listing!$K$1,0,0,COUNTA(listing!$A:$A),1),MATCH($E$" & Target.Row & ",OFFSET(listing!$A$1,0,0,COUNTA(listing!$A:$A)),1))")
Range("L" & Target.Row).Value = Evaluate("INDEX(OFFSET(listing!$J$1,0,0,COUNTA(listing!$A:$A),1),MATCH($E$" & Target.Row & ",OFFSET(listing!$A$1,0,0,COUNTA(listing!$A:$A)),1))")


End If
End Sub
 

Softmama

XLDnaute Accro
Re : La Macro s'effectue dès que la touche entrée est touchée

Bonsoir,

Ca devient chargé ta formule...

Je dirais que tu peux de rajouter un truc du style :

Code:
[COLOR="Red"]If Application.Max(Sheets("Listing").Range("$A:$A)) < Range("$E$" & Target.Row).Value Then 
Range("F" & Target.Row).Value = "" Else[/COLOR]
 Range("F" & Target.Row).Value = Evaluate("INDEX(OFFSET(listing!$b$1,0,0,COUNTA(lis ting!$A:$A),1),MATCH($E$" & Target.Row & ",OFFSET(listing!$A$1,0,0,COUNTA(listing!$A:$A)),1 ))")

à mettre à chaque formule...
Mais bon, avec un petit fichier d'exemple, ça irait sûrement mieux.
 

zbig

XLDnaute Occasionnel
Re : La Macro s'effectue dès que la touche entrée est touchée

Bonsoir

voici mon classeur-match
en feuille affichage le champ coloré représente le n°
et en feuille listing le n° est en 1ere colonne

Cela fonctionne mais sauf si le n° n'existe pas dans listing.
merci
zb
 

Pièces jointes

  • Classeur1-match.xls
    30.5 KB · Affichages: 85

Softmama

XLDnaute Accro
Re : La Macro s'effectue dès que la touche entrée est touchée

Re,

Comme ceci (Attention, mal aux yeux!):
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
If Left$(Target.Address, 3) = "$E$" Then
If Target = "" Then Exit Sub
    If Application.WorksheetFunction.Max(Sheets("Listing").Range("$A:$A")) < Target Then
        Target.EntireRow.ClearContents
        Exit Sub
    End If
    'recherche dans la feuille listing les infos correspondantes au n° de dossard pour création de série
    Range("F" & Target.Row).Value = Evaluate("INDEX(OFFSET(listing!$b$1,0,0,COUNTA(listing!$A:$A),1),MATCH($E$" & Target.Row & ",OFFSET(listing!$A$1,0,0,COUNTA(listing!$A:$A)),1))")
    Range("G" & Target.Row).Value = Evaluate("INDEX(OFFSET(listing!$c$1,0,0,COUNTA(listing!$A:$A),1),MATCH($E$" & Target.Row & ",OFFSET(listing!$A$1,0,0,COUNTA(listing!$A:$A)),1))")
    Range("H" & Target.Row).Value = Evaluate("INDEX(OFFSET(listing!$e$1,0,0,COUNTA(listing!$A:$A),1),MATCH($E$" & Target.Row & ",OFFSET(listing!$A$1,0,0,COUNTA(listing!$A:$A)),1))")
    Range("I" & Target.Row).Value = Evaluate("INDEX(OFFSET(listing!$F$1,0,0,COUNTA(listing!$A:$A),1),MATCH($E$" & Target.Row & ",OFFSET(listing!$A$1,0,0,COUNTA(listing!$A:$A)),1))")
    Range("J" & Target.Row).Value = Evaluate("INDEX(OFFSET(listing!$G$1,0,0,COUNTA(listing!$A:$A),1),MATCH($E$" & Target.Row & ",OFFSET(listing!$A$1,0,0,COUNTA(listing!$A:$A)),1))") & "-" & Evaluate("INDEX(OFFSET(listing!$H$1,0,0,COUNTA(listing!$A:$A),1),MATCH($E$" & Target.Row & ",OFFSET(listing!$A$1,0,0,COUNTA(listing!$A:$A)),1))")
    Range("K" & Target.Row).Value = Evaluate("INDEX(OFFSET(listing!$K$1,0,0,COUNTA(listing!$A:$A),1),MATCH($E$" & Target.Row & ",OFFSET(listing!$A$1,0,0,COUNTA(listing!$A:$A)),1))")
    Range("L" & Target.Row).Value = Evaluate("INDEX(OFFSET(listing!$J$1,0,0,COUNTA(listing!$A:$A),1),MATCH($E$" & Target.Row & ",OFFSET(listing!$A$1,0,0,COUNTA(listing!$A:$A)),1))")
End If
End Sub

[Edit] une tite erreur
 
Dernière édition:

zbig

XLDnaute Occasionnel
Re : La Macro s'effectue dès que la touche entrée est touchée

Ok merci

mais il y a encore une petite erreur
ça supprime toute la ligne et pas à partir de la colonne F

est ce que le curseur peut ne pas descendre d'une cellule si il ya erreur afin de pouvoir de suite mettre un autre n°?

Cdl
Zbig
 
Dernière édition:

Softmama

XLDnaute Accro
Re : La Macro s'effectue dès que la touche entrée est touchée

Ben ouai

Remplace en ce cas :
Code:
        Target.EntireRow.ClearContents

par :
Code:
        Target.[COLOR="Red"]resize(,5)[/COLOR].ClearContents
                  Target(2,1).select

et:
Code:
If Target = "" Then Exit Sub
par:
Code:
If Target.[COLOR="Red"]cells(1)[/COLOR] = "" Then Exit Sub
 
Dernière édition:

zbig

XLDnaute Occasionnel
Re : La Macro s'effectue dès que la touche entrée est touchée

J'ai mis en début de procédure :

Private Sub Worksheet_Change(ByVal Target As Range)
If Left$(Target.Address, 3) = "$E$" Then
If Target.Cells(1) = "" Then Exit Sub
If Application.WorksheetFunction.Max(Sheets("Listing").Range("$A:$A")) < Target Then
Target.Resize(, 5).ClearContents
Target(2, 1).Select
Exit Sub
End If
'recherche

mais cela ne fonctionne pas, le curseur descend d'une case qd le n° n'est pas trouvé

merci
Zbig
 

zbig

XLDnaute Occasionnel
Re : La Macro s'effectue dès que la touche entrée est touchée

Je l'ai mis mais yjs la même erreur


zbig



Private Sub Worksheet_Change(ByVal Target As Range)
If Left$(Target.Address, 3) = "$E$" Then
If Target.Cells(1) = "" Then Exit Sub
If Application.WorksheetFunction.Max(Sheets("Listing").Range("$A:$A")) < Target Then
Target.Resize(, 10).ClearContents
Target(2, 1).Select
Exit Sub
End If
'recherche dans la feuille listing les infos correspondantes au n° de dossard pour création de série
Range("F" & Target.Row).Value = Evaluate("INDEX(OFFSET(listing!$b$1,0,0,COUNTA(listing!$A:$A),1),MATCH($E$" & Target.Row & ",OFFSET(listing!$A$1,0,0,COUNTA(listing!$A:$A)),1))")
Range("G" & Target.Row).Value = Evaluate("INDEX(OFFSET(listing!$c$1,0,0,COUNTA(listing!$A:$A),1),MATCH($E$" & Target.Row & ",OFFSET(listing!$A$1,0,0,COUNTA(listing!$A:$A)),1))")
Range("H" & Target.Row).Value = Evaluate("INDEX(OFFSET(listing!$e$1,0,0,COUNTA(listing!$A:$A),1),MATCH($E$" & Target.Row & ",OFFSET(listing!$A$1,0,0,COUNTA(listing!$A:$A)),1))")
Range("I" & Target.Row).Value = Evaluate("INDEX(OFFSET(listing!$F$1,0,0,COUNTA(listing!$A:$A),1),MATCH($E$" & Target.Row & ",OFFSET(listing!$A$1,0,0,COUNTA(listing!$A:$A)),1))")
Range("J" & Target.Row).Value = Evaluate("INDEX(OFFSET(listing!$G$1,0,0,COUNTA(listing!$A:$A),1),MATCH($E$" & Target.Row & ",OFFSET(listing!$A$1,0,0,COUNTA(listing!$A:$A)),1))") & "-" & Evaluate("INDEX(OFFSET(listing!$H$1,0,0,COUNTA(listing!$A:$A),1),MATCH($E$" & Target.Row & ",OFFSET(listing!$A$1,0,0,COUNTA(listing!$A:$A)),1))")
Range("K" & Target.Row).Value = Evaluate("INDEX(OFFSET(listing!$K$1,0,0,COUNTA(listing!$A:$A),1),MATCH($E$" & Target.Row & ",OFFSET(listing!$A$1,0,0,COUNTA(listing!$A:$A)),1))")
Range("L" & Target.Row).Value = Evaluate("INDEX(OFFSET(listing!$J$1,0,0,COUNTA(listing!$A:$A),1),MATCH($E$" & Target.Row & ",OFFSET(listing!$A$1,0,0,COUNTA(listing!$A:$A)),1))")
End If
Target(2, 1).Select
End Sub
 

zbig

XLDnaute Occasionnel
Re : La Macro s'effectue dès que la touche entrée est touchée

J'ai mis
Target(1, 1).Select
à la place de
Target(2, 1).Select

et ça marche :)
Zbig

Private Sub Worksheet_Change(ByVal Target As Range)
If Left$(Target.Address, 3) = "$E$" Then
If Target.Cells(1) = "" Then Exit Sub
If Application.WorksheetFunction.Max(Sheets("Listing").Range("$A:$A")) < Target Then
Target.Resize(, 10).ClearContents
Target(1, 1).Select
 

Statistiques des forums

Discussions
312 389
Messages
2 087 903
Membres
103 676
dernier inscrit
Haiti