OVH Cloud OVH Cloud

Copie de liste

3 réponses
Avatar
aife1
Bonjour !

Je sais que cette question a déjà été posée mais je n'y arrive pas.

Dans un classeur, j'ai deux feuilles ("BdD" et "Résultats"). Dans BdD, il y
a une liste :

exemple :
colonne A : nom du film
colonne B : genre
colonne C : durée
colonne D : année
Colonne E : acteurs

Si dans la feuille Résultats, je tape le nom d'un film qui se trouve dans la
colonne A de la feuille BdD, je voudrais que les cellules de B à E se
remplissent automatiquement.

J'arrive à le faire à l'aide d'une formule, mais je voudrais l'effectuer à
l'aide d'une macro automatique (pas de liste déroulante, de userform ...,
seulement lorsque le contenu de la cellule change).

Pouvez-vous m'aider ?

Merci d'avance

3 réponses

Avatar
papou
Bonjour
Voici un exemple à adapter, code à placer dans la feuille Résultats
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column <> 1 Then Exit Sub 'action sur colonne 1 uniquement
With Worksheets("BDD").Range("LesDonnees") 'plage nommée
Dim Atrouver
Set Atrouver = .Find(Target)
If Not Atrouver Is Nothing Then
For i = 1 To 3 'ici trois renseignements à récupérer
Target.Offset(0, i).Value = Atrouver.Offset(0, i).Value
Next i
Else: MsgBox "pas de correspondance"
End If
End With
Set Atrouver = Nothing
End Sub

Cordialement
Pascal

"aife1" a écrit dans le message de
news:
Bonjour !

Je sais que cette question a déjà été posée mais je n'y arrive pas.

Dans un classeur, j'ai deux feuilles ("BdD" et "Résultats"). Dans BdD, il
y

a une liste :

exemple :
colonne A : nom du film
colonne B : genre
colonne C : durée
colonne D : année
Colonne E : acteurs

Si dans la feuille Résultats, je tape le nom d'un film qui se trouve dans
la

colonne A de la feuille BdD, je voudrais que les cellules de B à E se
remplissent automatiquement.

J'arrive à le faire à l'aide d'une formule, mais je voudrais l'effectuer à
l'aide d'une macro automatique (pas de liste déroulante, de userform ...,
seulement lorsque le contenu de la cellule change).

Pouvez-vous m'aider ?

Merci d'avance




Avatar
papou
En complément, modifie comme ceci pour le cas de non correspondance si tu
veux effacer le contenu saisi :
If Target.Column <> 1 Then Exit Sub
With Worksheets("BDD").Range("LesDonnees")
Dim Atrouver
Set Atrouver = .Find(Target)
If Not Atrouver Is Nothing Then
For i = 1 To 3
Target.Offset(0, i).Value = Atrouver.Offset(0, i).Value
Next i
Else
MsgBox "pas de correspondance"
Application.EnableEvents = False
Target.ClearContents
Application.EnableEvents = True
End If
End With
Set Atrouver = Nothing

Cordialement
Pascal

"papou" <cestpasbonprobin@çanonpluscg44.fr> a écrit dans le message de
news:
Bonjour
Voici un exemple à adapter, code à placer dans la feuille Résultats
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column <> 1 Then Exit Sub 'action sur colonne 1 uniquement
With Worksheets("BDD").Range("LesDonnees") 'plage nommée
Dim Atrouver
Set Atrouver = .Find(Target)
If Not Atrouver Is Nothing Then
For i = 1 To 3 'ici trois renseignements à récupérer
Target.Offset(0, i).Value = Atrouver.Offset(0, i).Value
Next i
Else: MsgBox "pas de correspondance"
End If
End With
Set Atrouver = Nothing
End Sub

Cordialement
Pascal

"aife1" a écrit dans le message de
news:
Bonjour !

Je sais que cette question a déjà été posée mais je n'y arrive pas.

Dans un classeur, j'ai deux feuilles ("BdD" et "Résultats"). Dans BdD,
il


y
a une liste :

exemple :
colonne A : nom du film
colonne B : genre
colonne C : durée
colonne D : année
Colonne E : acteurs

Si dans la feuille Résultats, je tape le nom d'un film qui se trouve
dans


la
colonne A de la feuille BdD, je voudrais que les cellules de B à E se
remplissent automatiquement.

J'arrive à le faire à l'aide d'une formule, mais je voudrais l'effectuer
à


l'aide d'une macro automatique (pas de liste déroulante, de userform
...,


seulement lorsque le contenu de la cellule change).

Pouvez-vous m'aider ?

Merci d'avance








Avatar
aife1
Salut Papou !

Tout d'abord, je tiens à te remercier pour tes précieux conseils.

Encore une petite question, comment je fais afin que le texte ait le même
format que dans la base de données (bordure, gras, soulignement, etc. )
étant donné que dans la base de données, dans une cellule, il peut y avoir
du texte en gras, du texte souligné et du texte sans mise en forme
particulière.

Merci d'avance ...


"papou" <cestpasbonprobin@çanonpluscg44_fr> a écrit dans le message de
news:%
En complément, modifie comme ceci pour le cas de non correspondance si tu
veux effacer le contenu saisi :
If Target.Column <> 1 Then Exit Sub
With Worksheets("BDD").Range("LesDonnees")
Dim Atrouver
Set Atrouver = .Find(Target)
If Not Atrouver Is Nothing Then
For i = 1 To 3
Target.Offset(0, i).Value = Atrouver.Offset(0, i).Value
Next i
Else
MsgBox "pas de correspondance"
Application.EnableEvents = False
Target.ClearContents
Application.EnableEvents = True
End If
End With
Set Atrouver = Nothing

Cordialement
Pascal

"papou" <cestpasbonprobin@çanonpluscg44.fr> a écrit dans le message de
news:
Bonjour
Voici un exemple à adapter, code à placer dans la feuille Résultats
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column <> 1 Then Exit Sub 'action sur colonne 1 uniquement
With Worksheets("BDD").Range("LesDonnees") 'plage nommée
Dim Atrouver
Set Atrouver = .Find(Target)
If Not Atrouver Is Nothing Then
For i = 1 To 3 'ici trois renseignements à récupérer
Target.Offset(0, i).Value = Atrouver.Offset(0, i).Value
Next i
Else: MsgBox "pas de correspondance"
End If
End With
Set Atrouver = Nothing
End Sub

Cordialement
Pascal

"aife1" a écrit dans le message de
news:
Bonjour !

Je sais que cette question a déjà été posée mais je n'y arrive pas.

Dans un classeur, j'ai deux feuilles ("BdD" et "Résultats"). Dans BdD,
il


y
a une liste :

exemple :
colonne A : nom du film
colonne B : genre
colonne C : durée
colonne D : année
Colonne E : acteurs

Si dans la feuille Résultats, je tape le nom d'un film qui se trouve
dans


la
colonne A de la feuille BdD, je voudrais que les cellules de B à E se
remplissent automatiquement.

J'arrive à le faire à l'aide d'une formule, mais je voudrais
l'effectuer



à
l'aide d'une macro automatique (pas de liste déroulante, de userform
...,


seulement lorsque le contenu de la cellule change).

Pouvez-vous m'aider ?

Merci d'avance