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:

Softmama

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

Bonsoir,

Pas besoin de macro pour ceci.

Tu peux procéder comme ceci :
En A2 de la feuil2 :
Code:
=INDEX(DECALER(Feuil1![COLOR="Red"]B[/COLOR]$1;0;0;NBVAL(Feuil1!$A:$A);1);EQUIV($A$1;DECALER(Feuil1!$A$1;0;0;NBVAL(Feuil1!$A:$A));1))

en A3 :
Code:
=INDEX(DECALER(Feuil1![COLOR="Red"]C[/COLOR]$1;0;0;NBVAL(Feuil1!$A:$A);1);EQUIV($A$1;DECALER(Feuil1!$A$1;0;0;NBVAL(Feuil1!$A:$A));1))

en A4 :
Code:
=INDEX(DECALER(Feuil1![COLOR="Red"]D[/COLOR]$1;0;0;NBVAL(Feuil1!$A:$A);1);EQUIV($A$1;DECALER(Feuil1!$A$1;0;0;NBVAL(Feuil1!$A:$A));1))
 

zbig

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

Bonsoir
j'utilisais jusqu'à présent la combinaison index/equiv
mais nous sommes plusieurs à utiliser le fichier et je ne veux pas que l'on modifie les cellules et je ne mets pas de protection

alors je souhaiterais tout simplement
que dès que je quitte la cellule n° de la feuille 2 , toutes les infos soient automatique
via une macro, fonction,...

merci
Zbig
 

Softmama

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

Re,

J'avoue ne pas comprendre :confused:

Une macro peut faire l'équivalent, mais il reste tjs possible à quiconque de l'effacer ou de la désactiver.

Enfin, si c'est vraiment ce que tu souhaites, tu peux mettre dans le module Feuil2 :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$A$1" Then
    Range("A2").Value = Evaluate("INDEX(OFFSET(Feuil1!$B$1,0,0,COUNTA(Feuil1!$A:$A),1),MATCH($A$1,OFFSET(Feuil1!$A$1,0,0,COUNTA(Feuil1!$A:$A)),1))")
    Range("A3").Value = Evaluate("INDEX(OFFSET(Feuil1!$C$1,0,0,COUNTA(Feuil1!$A:$A),1),MATCH($A$1,OFFSET(Feuil1!$A$1,0,0,COUNTA(Feuil1!$A:$A)),1))")
    Range("A4").Value = Evaluate("INDEX(OFFSET(Feuil1!$D$1,0,0,COUNTA(Feuil1!$A:$A),1),MATCH($A$1,OFFSET(Feuil1!$A$1,0,0,COUNTA(Feuil1!$A:$A)),1))")
End If
End Sub
 

zbig

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

Bonsoir softmama

en fait j'avais déjà vu ça dans un classeur sur le net.
C'est plus sympa car rien n'apparait sur la feuille
et quand on met le N° toute les infos s'inscrivent automatiquement

je vous mets le classeur de mon exemple de cet apres-midi

merci
Zbig
 

Pièces jointes

  • Classeur1_numero.xls
    21.5 KB · Affichages: 54
Dernière édition:

kjin

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

Bonsoir,
A priori, il n'y a plus que moi...
A mettre dans le module de la feuil2
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
If Target.Column = 1 And Target.Row > 1 Then
    If Target = "" Then
        Range("A" & Target.Row & ":D" & Target.Row).ClearContents
    Else
        Set c = Sheets(1).Columns(1).Find(Target)
        If Not c Is Nothing Then
            For i = 1 To 3
                Target.Offset(, i) = c.Offset(, i)
            Next
        End If
    End If
End If
End Sub
A+
kjin
 

zbig

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

Bonsoir kjin

Excellent, c'est cela que je cherchais

Maintenant , si dans la feuille 2, les champs ne sont pas dans le même ordre que dans le listing.
Comment faire?
c'est à dire
Feuille 1
numero nom prenom age

et feuille2
numero age nom prenom

les réponse age, nom et prenom, sont tjs automatique par rapport au n°.


merci
Zbig
 
Dernière édition:

Softmama

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

Bonsoir,

Comme ceci en adaptant mon code précédent : (suffit de remplacer les valeurs en rouge si l'ordre change)
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Left$(Target.Address, 3) = "$A$" Then
Range("B" & Target.Row).Value = Evaluate("INDEX(OFFSET(Feuil1!$[COLOR="Red"]B[/COLOR]$1,0,0,COUNTA(Feuil1!$A:$A),1),MATCH($A$" & Target.Row & ",OFFSET(Feuil1!$A$1,0,0,COUNTA(Feuil1!$A:$A)),1))")
Range("C" & Target.Row).Value = Evaluate("INDEX(OFFSET(Feuil1!$[COLOR="Red"]C[/COLOR]$1,0,0,COUNTA(Feuil1!$A:$A),1),MATCH($A$" & Target.Row & ",OFFSET(Feuil1!$A$1,0,0,COUNTA(Feuil1!$A:$A)),1))")
Range("D" & Target.Row).Value = Evaluate("INDEX(OFFSET(Feuil1!$[COLOR="Red"]D[/COLOR]$1,0,0,COUNTA(Feuil1!$A:$A),1),MATCH($A$" & Target.Row & ",OFFSET(Feuil1!$A$1,0,0,COUNTA(Feuil1!$A:$A)),1))")
End If
End Sub

cf. fichier joint
 
Dernière édition:

zbig

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

Bonsoir softmama

merci cette version me convient.
je vais essayer d'adapter sur d'autres fichiers

PAr exemple si le n° est en colonne E (la 5e) et que j'attends les résultats en colonne f à L

je change dans
' If Left$(Target.Address, 3) = "$A$" Then
par $E$ ?


Zbig
 
Dernière édition:

zbig

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

Bonsoir softmama

dans Range("B" & Target.Row).Value = ...

peut on concatener plusieurs réponses venant du tableau de la feuille 1 :
par exemple nom-prenom dans iune colonne au lieu de 2?
merci
Zbig
 

Softmama

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

re,

Oui !
Et ne pas oublier de remplacer les B, C, D, correspondant par les bonnes valeurs F, G, H...
Pour concaténer oui, ça fait une grosse formule mais c'est possible :
Range("B" & Target.Row).Value = Evaluate(... "F"...) & " " & Evaluate(... "G" ...)
 
Dernière édition:

zbig

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

Bonsoir

merci bcp, j'ai réussi le concatener

Je voudrais dans une autre feuille "liste_etab"
où il y a un tableau de A1 à E?, mettre un bouton/macro qui permettrait en colonne F,
uniquement dans les lignes non vides, de concatener colonnes B et C
et je voudrais qu'à chaque fois que je vais sur la feuille , que la macro s'active

Zbig
bon dodo
 
Dernière édition:

Statistiques des forums

Discussions
312 380
Messages
2 087 782
Membres
103 663
dernier inscrit
b4ri5.c