MAcro derrière la touche entrée

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

zbig

XLDnaute Occasionnel
Bonsoir
je voudrais que lorsque j'appuie sur la touche entrée d'une cellule a1; il y a des infos qui se mettent (récupérées dans une autre feuille) dans la cell a2 et a3.
cordialement
zbig
 
Re : MAcro derrière la touche entrée

bonsoir
En fait
si je rentre une info dans la case a1 (ex 75000);
automatiquement la réponse en a2 = Paris.
MAis je ne veux pas de formule dans le cellule a2
Il faut que la réponse s'affiche dès que la touche entrée est appuyée; une sorte de macro cachée
cordialement
zbig
 
Re : MAcro derrière la touche entrée

Bonsoir

C'est faisable sans formule mais avec une macro événementielle
Pour la réaliser il manque des billes
Il faut vérifier quoi ? (7500)
Ecrire quoi ? (Paris) et ou ? (en A2)
Tien ne serait -ce des CP ?

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Range("A1"), Target) Is Nothing Then
  If Target.Value = 75000 Then
    Application.EnableEvents = False
    Target.Offset(1, 0) = "Paris"
    Application.EnableEvents = True
  End If
End If

A coller dans le code de la feuille
Click droit sur l'onglet ---> Visualiser le code
 
Re : MAcro derrière la touche entrée

Bonsoir Banzai64, zbig

Effectivement sans les billes c'est pas simple et on travaille dans le vide, mais bon.

Test ceci :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim C As Range
If Not Application.Intersect(Target, Range("A1")) Is Nothing Then
  Target.Offset(0, 1) = ""
  Target.Offset(0, 2) = ""
  Target.Offset(0, 3) = ""
   If Target <> "" Then
     With Sheets("Feuil2")
       Set C = .Range("A1:A" & .Range("A65536").End(xlUp).Row).Find(Target.Value, LookAt:=xlWhole)
        If Not C Is Nothing Then
           Target.Offset(0, 1) = C.Offset(0, 1)
           Target.Offset(0, 2) = C.Offset(0, 2)
           Target.Offset(0, 3) = C.Offset(0, 3) 
           Exit Sub
        End If
     End With
    End If
End If
End Sub

Sur la feuille 2, tes données sur 4 colonnes, A,B,C,D en commencant sur la ligne 1. La recherche se fera sur la colonne A.
Sur la feuille 1, tape en A1 ce que tu veux rechercher. Le résultat se mettra en B1 et C1 et D1.
Code à placer dans le module de code de la feuille 1.

A+
 
Dernière édition:
Re : MAcro derrière la touche entrée

Re,

Voici le code adapté à ton fichier.

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim C As Range
If Not Application.Intersect(Target, Range("C1")) Is Nothing Then
  Target.Offset(2, -1) = ""
  Target.Offset(3, -1) = ""
  Target.Offset(4, -1) = ""
   If Target <> "" Then
     With Sheets("Listing")
       Set C = .Range("A2:A" & .Range("A65536").End(xlUp).Row).Find(Target.Value, LookAt:=xlWhole)
        If Not C Is Nothing Then
           Target.Offset(2, -1) = C.Offset(0, 1)
           Target.Offset(3, -1) = C.Offset(0, 2)
           Target.Offset(4, -1) = C.Offset(0, 3)
           Exit Sub
        End If
     End With
   End If
End If
End Sub

A mettre dans le module de code de la feuille saisie.

A+
 
Re : MAcro derrière la touche entrée

re,

Modifie la fin du code comme ceci :

Code:
End If
     End With
   End If
   If Target.Offset(2, -1) = "" And Target <> "" Then MsgBox "N° de CP " & Target & " non trouvé", vbInformation, "Erreur:"
End If
End Sub

A+
 
Re : MAcro derrière la touche entrée

Re,

Je m'en doutais un peu 🙂

Un exemple en PJ

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Cell As Range, x As Long
If Not Application.Intersect(Target, Range("B1")) Is Nothing Then
  Range("A4:C" & Range("A65536").End(xlUp).Row + 1) = ""
  Range("E1") = ""
  x = Range("A65536").End(xlUp).Row
   If Target <> "" Then
     With Sheets("Listing (2)")
        For Each Cell In .Range("A2:A" & .Range("A65536").End(xlUp).Row)
          If Cell = Target Then
            Range("E1") = Cell.Offset(0, 1)
            Range("A" & x + 1) = Cell
            Range("B" & x + 1) = Cell.Offset(0, 2)
            Range("C" & x + 1) = Cell.Offset(0, 3)
            x = x + 1
          End If
        Next
     End With
   End If
 If Target.Offset(3, -1) = "" And Target <> "" Then MsgBox "N° de CP " & Target & " non trouvé", vbInformation, "Erreur:"
End If
End Sub

A+
 

Pièces jointes

Dernière édition:
- 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
7
Affichages
433
Retour