Macro VBA recopie de donnée

Bonjour,

J'ai besoin d'aide ^^.
Voila la souci, j'ai créer la userforme suivante, elle est lancé via un bouton présent dans mon feuillet.

image

Grace à elle, je sélectionne un N° de commande et un référence article fournisseur.
Je souhaite que lorsque je clique sur OK.
Un code VBA se lance et aille chercher dans le tableau ATP de la feuille AIDES les info présentent dans les colonnes : REF. ETR, DESIGNATION, DIAMETRE, DIM 1, DIM 2 et EPAISSEUR
et que cela les recopies dans les colonnes portant le même nom dans la feuille ATP.

J'ai commencer à rédiger un code en m'aidant de ChatGPT (je préfère ne pas vous le cacher hein ^^)

Le souci, c'est que Chat GPT est un peux couillon et ne comprend pas tout (heureusement pour nous !).
Dans la feuille AIDES, pour chercher les colonnes, il agit ainsi :
Set colDesignation = ws.Rows(1).Find("DESIGNATION")

Il n'a pas du tout pris en compte le fait de chercher dans le tableau ATP de la feuille AIDES.
En effet, il y aura plusieurs fois le mots DESIGNATION dans la feuille.
Je ne sais pas comment le forcer à chercher dans le tableau nommé ATP.

Par la suite, il écrit :
ws.Cells(lastRow, colDesignation.Column).Value = Worksheets("AIDES").Cells(refRow, colDesignationAIDES.Column).Value
Sauf que le numéro des colonnes n'est pas le même dans les feuilles AIDES et ATP.
Comment résoudre ça ?

Ci-après le code complet :

Private Sub ATPOk_Click()

Dim ws As Worksheet
Set ws = Worksheets("ATP")
Set wsAIDES = Worksheets("AIDES")

Dim colNumCom As Range
Set colNumCom = ws.Rows(1).Find("Num_COM")

Dim colRefArtFourn As Range
Set colRefArtFourn = ws.Rows(1).Find("REF. ART. FOURN")

Dim colDesignation As Range
Set colDesignation = ws.Rows(1).Find("DESIGNATION")

Dim colDiametre As Range
Set colDiametre = ws.Rows(1).Find("DIAMETRE")

Dim colDim1 As Range
Set colDim1 = ws.Rows(1).Find("DIM 1")

Dim colDim2 As Range
Set colDim2 = ws.Rows(1).Find("DIM 2")

Dim colEpaisseur As Range
Set colEpaisseur = ws.Rows(1).Find("EPAISSEUR")

Dim lastRow As Long
lastRow = ws.Cells(ws.Rows.Count, colNumCom.Column).End(xlUp).Row + 1

If Not colNumCom Is Nothing Then
ws.Cells(lastRow, colNumCom.Column).Value = ListNumCmd.Value
End If

If Not colRefArtFourn Is Nothing Then
ws.Cells(lastRow, colRefArtFourn.Column).Value = ListRefArtFourn.Value
End If

If Not colDesignation Is Nothing And Not colDiametre Is Nothing And Not colDim1 Is Nothing And Not colDim2 Is Nothing And Not colEpaisseur Is Nothing Then

'Find the row of the selected reference in the ATP sheet
Dim refRow As Long

Dim colRefArtFournATP As Range
Set colRefArtFournATP = Worksheets("AIDES").Rows(2).Find("REF. ART. FOURN")

If Not colRefArtFournATP Is Nothing Then
refRow = Worksheets("AIDES").Columns(colRefArtFournATP.Column).Find(ListRefArtFourn.Value).Row
End If

ws.Cells(lastRow, colDesignation.Column).Value = Worksheets("AIDES").Cells(refRow, colDesignationAIDES.Column).Value
ws.Cells(lastRow, colDiametre.Column).Value = Worksheets("AIDES").Cells(refRow, colDiametre.Column).Value
ws.Cells(lastRow, colDim1.Column).Value = Worksheets("AIDES").Cells(refRow, colDim1.Column).Value
ws.Cells(lastRow, colDim2.Column).Value = Worksheets("AIDES").Cells(refRow, colDim2.Column).Value
ws.Cells(lastRow, colEpaisseur.Column).Value = Worksheets("AIDES").Cells(refRow, colEpaisseur.Column).Value

End If

End Sub

Merci de m'avoir lu !
j'espère que vous pourrez m'aider.

Bonsoir Rémi616,

Ce n'est pas en postant le code, fait à coups de griffes, du matou GPT que l'on peut apporter une aide.

Mais en postant le fichier (avec données anonymes) qu'il est possible de répondre. Même un fichier plus petit mais avec l'userform.

Et les feuilles nécessaires, comportant les bonnes colonnes. Relire la charte du site.

Bonjour, oui en effet je comprend.
Travaillant sur un fichier temporaire, je n'ai aucune données sensible, je ne sais même pas pourquoi je n'ai pas songé à partager le fichier excel que voici :

J'ai résolue ça différemment ^^
J'ai utilisé la fonction rechercheV dans mon tableau directement.
j'ai écris une 1ère ligne vide avec les formules renseigné au bon endroit, ainsi, quand via VBA je renseigne mes colonne cela trouve mes info car la formule est recopié automatiquement (merci l’insertion de tableau au passage ^^)

Rechercher des sujets similaires à "macro vba recopie donnee"