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

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

  • forum.xls
    24 KB · Affichages: 43

job75

XLDnaute Barbatruc
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

  • forum(1).xls
    70 KB · Affichages: 31

job75

XLDnaute Barbatruc
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

  • forum(2).xls
    80.5 KB · Affichages: 36
Dernière édition:

SANDRA2012

XLDnaute Junior
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
 

Discussions similaires

Réponses
22
Affichages
742

Statistiques des forums

Discussions
312 088
Messages
2 085 203
Membres
102 818
dernier inscrit
NeoMaint