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

XL 2010 comment réaliser une macro pour faire appel à des données en automatiques

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 !

SANDRA2012

XLDnaute Junior
Bonjour,
En colonne A et B se trouve des données ( la ligne 4 de A correspond à la ligne 4 de B)
et je souhaiterais que lorsque je rentre une donnée de B en colonne D la ligne correspondante en colonne A se copie en colonne E.
Je joins un fichier ressemblant car mon fichier actuel est trop lourd.
Merci d'avance à toute les personnes qui pourront m'aider.
Bonne journée à tous
 

Pièces jointes

Bonjour SANDRA2012, salut les autres,

Les solutions par formule conviennent très bien, 500 données c'est pinuts.

Mais puisque vous voulez du VBA voyez le fichier joint et cette macro :
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim i As Variant
Set Target = Intersect(Target, Range("D4:D" & Rows.Count), Me.UsedRange)
If Target Is Nothing Then Exit Sub
For Each Target In Target 'si entrées/effacements multiples
  i = Application.Match(Target, Range("B4:B" & Rows.Count), 0)
  If IsError(i) Then
    Target(1, 2) = ""
  Else
    Target(1, 2) = Cells(i + 3, 1)
  End If
Next
End Sub
Voyez aussi la MFC pour appliquer les bordures en colonnes D:E.

A+
 

Pièces jointes

Re,

Si l'on veut que les modifications des colonnes A:B se répercutent en colonne E compléter ainsi :
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim i As Variant
If Not Intersect(Target, Range("A4:B" & Rows.Count)) Is Nothing _
  Then Worksheet_Change [D:D]: Exit Sub 'relance la macro
i = [D:E].Find("*", , xlValues, , xlByRows, xlPrevious).Row
If i < 4 Then Exit Sub
Set Target = Intersect(Target, Range("D4:D" & i))
If Target Is Nothing Then Exit Sub
Application.ScreenUpdating = False
Application.EnableEvents = False
For Each Target In Target 'si entrées/effacements multiples
  i = Application.Match(Target, Range("B4:B" & Rows.Count), 0)
  If IsNumeric(i) Then
    If Target(1, 2) <> Cells(i + 3, 1) Then Target(1, 2) = Cells(i + 3, 1)
  ElseIf Target(1, 2) <> "" Then
    Target(1, 2) = ""
  End If
Next
Application.EnableEvents = True
End Sub
Fichier (2).

Edit : j'ai ajouté Application.ScreenUpdating et les Application.EnableEvents pour gagner du temps.

A+
 

Pièces jointes

Dernière édition:
Bonjour à tous,
Merci pour vos réponses les formules et la macro fonctionnent parfaitement avec les lettres (a, b, c, ...) et les chiffres, mais lorsque je met mes vraies valeurs ça ne fonctionnent plus🙁.
en colonne A j'ai des chiffre du type : 25-65-0
en B des suites de chiffres commençant par 0 mais sans virgule : 080030
Quelqu'un peut il me dire pourquoi ça ne fonctionne

Merci d'avance
Bonne journée
 
- 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
40
Affichages
1 K
Réponses
5
Affichages
468
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…