VBA - Remplissage automatique de champ, type formulaire

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

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 !
 
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é.
 
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 😕
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 😛
 
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
 
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

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

  • Question Question
Microsoft 365 Probléme VBA
Réponses
8
Affichages
213
Réponses
1
Affichages
301
Réponses
4
Affichages
332
  • Question Question
XL 2021 VBA excel
Réponses
4
Affichages
45
Retour