VBA - Remplissage automatique de champ, type formulaire

Vinmaz

XLDnaute Nouveau
Bonjour tout le monde,

Voici ma feuille 2,

A B C
1 Code Couleur Désignation
2 87650 Bleu Crayon
3 45370 Rouge Stylo

Ensuite dans la feuille 1,

A B C
1 Code Couleur Désignation
2 ......... ........... ...........

Mon souhait est de réaliser une macro afin que quand j'écrive 87650 par exemple, en A2 feuille 1, Excel me remplisse automatiquement les autres champs de la ligne (c'est-à-dire Bleu et Crayon).

Grâce à un autre site, j'ai trouvé une première macro qui marche sans problème:

Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Column = 1 Then

With Worksheets(2).Range("a:a")
Set c = .Find(Target, LookIn:=xlValues)
If Not c Is Nothing Then
monr = "a" & c.Row
Application.EnableEvents = False
Worksheets(2).Range(monr).EntireRow.Copy Destination:=Target
Application.EnableEvents = True
Else
MsgBox "inconnu"
End If
End With
End If
End Sub


J'aimerai maintenant pouvoir faire la même chose mais "en transposé".

C'est-à-dire feuille 2,

1 2 3
A Code 87650 45370
B Couleur Bleu Rouge
C Désignation Crayon Stylo


et donc feuille 1,
1 2
A Code ......
B Couleur ......
C Désignation .......

De manière à ce que si j'écrive 87650 ou bien 45370, les autres données se remplissent automatiquement.

Voici ce que j'ai fait, mais ça ne fonctionne pas.

Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Row = 1 Then

With Worksheets(2).Range("A1:Z1")
Set M = .Find(Target, LookIn:=xlValues)
If Not M Is Nothing Then
variable = M.Column & "1"
Application.EnableEvents = False
Worksheets(2).Range(variable).EntireColumn.Copy Destination:=Target
Application.EnableEvents = True
Else
MsgBox "inconnu"
End If
End With
End If
End Sub


Je me suis forcément trompé quelque part mais impossible de trouver. Cela fait 4h que je suis dessus ...


Quelqu'un peut-il m'aider ?

Merci pour votre aide !
 

Victor21

XLDnaute Barbatruc
Re : VBA - Remplissage automatique de champ, type formulaire

Bonjour, Vinmaz, et bienvenue sur XLD :)

Quelqu'un peut-il m'aider ?
Pour parodier JFK :
ne vous demandez pas ce que votre pays peut faire pour vous, mais demandez-vous ce que vous pouvez faire pour votre pays
Aidez-nous à vous aider en déposant un extrait représentatif de votre fichier (Quelques lignes de données, le résultat attendu), ainsi que le suggère Lien supprimé.
 

phlaurent55

Nous a quittés en 2020
Repose en paix
Re : VBA - Remplissage automatique de champ, type formulaire

Bonjour à tous,

@ Victor, sois sympa avec le petit nouveau :D:D:D

voir fichier joint

à+
Philippe
 

Pièces jointes

  • 111.xls
    42.5 KB · Affichages: 246
  • 111.xls
    42.5 KB · Affichages: 265
  • 111.xls
    42.5 KB · Affichages: 259

Victor21

XLDnaute Barbatruc
Re : VBA - Remplissage automatique de champ, type formulaire

Bonsoir, Philippe :)

@ Victor, sois sympa avec le petit nouveau
Je n'ai pas le sentiment d'avoir été désagréable avec Vinmaz :confused:
Bien au contraire : le conseil était -est- bien intentionné, puisque nous savons tous qu'à chaque fois qu'il reviendra ici avec un fichier en exemple, les propositions seront plus nombreuses :)
Bon, le trait d'humour Kennedien est peut-être mal passé, et dans ce cas, je m'en excuse :p
 

JCGL

XLDnaute Barbatruc
Re : VBA - Remplissage automatique de champ, type formulaire

Bonjour à tous,
Salut Patrick,
Salut Philippe,

Philippe : Puis-je permettre... Pour effacer les valeurs en B et C si rien en A :

VB:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("A2:A65535")) Is Nothing Then
        For i = 2 To Feuil2.Range("A65535").End(xlUp).Row
            If Feuil1.Cells(i, 1) = Target Then
                Target.Offset(0, 1) = ""
                Target.Offset(0, 2) = ""
            End If
            If Feuil2.Cells(i, 1) = Target Then
                Target.Offset(0, 1) = Feuil2.Cells(i, 2)
                Target.Offset(0, 2) = Feuil2.Cells(i, 3)
            End If
        Next i
    End If
End Sub

A++ les amis
A + à tous
 

Vinmaz

XLDnaute Nouveau
Re : VBA - Remplissage automatique de champ, type formulaire

Je suis agréablement surpris par vos rapidités de réponse ! Et oui, j'aurais du envoyer un fichier, j'avoue ne pas y avoir pensé. Mea Culpa ! Voici donc ci-joint mon fichier.

Par contre JCGL, je ne souhaite pas effacer les valeurs en B et en C.

Pour ma part, j'ai un doute sur cette ligne
variable = M.Column & "1"

Je ne suis pas sûr que la variable soit bien définie.
J'attire votre attention sur le fait que la première macro, dans mon premeir post, fonctionne parfaitement. Je ne dois donc pas être loin de la solution.

Merci d'avance !
 

Pièces jointes

  • Macro Transposée.xlsm
    13.1 KB · Affichages: 112

JCGL

XLDnaute Barbatruc
Re : VBA - Remplissage automatique de champ, type formulaire

Bonjour à tous,

Mon message en #5 n'était que pour le fichier et le code déposé pour l'ami Philippe.

Si ta procédure fonctionne comme tu l'écris en #6 où est la question et le problème ?

A + à tous
 

Discussions similaires

Statistiques des forums

Discussions
312 493
Messages
2 088 956
Membres
103 990
dernier inscrit
lamiadebz