VBA - Copier Coller vers tableau selon différents critères

Bonjour à tous !

Je vous contact car j'ai besoin d'aide pour la conception d'une macro que je ne pense pas très compliquée mais qui dépasse mes compétences

En gros, une note que je veux sauvegarder dans un tableau situé sur une autre feuille.

Je n'arrive pas à trouver le code pour "trouver" la cellule correspondante aux critères de Date et de nom. Il n'est pas possible qu'il y ait de doublon.

Je ne dispose que des info encadrées (Date, Etudiant, Matière, Note). Je peux possiblement créer une cellule avec la formule CONCATENER si cela facilite la recherche et donc la macro.

Il est très possible que ce sujet ait déjà été traité, mais je n'ai pas su retranscrire les cas vus au mien.

Merci beaucoup par avance,

Arthur

PS : je vous ai mis un exemple que j'espère assez clair.

16exempleforum.xlsx (17.65 Ko)

Bonjour,

Sub tranfert()
Dim sh1, sh2, LaDate As Double
Dim Etudiant As String, Matière As String, t As String
Set sh1 = Sheets("Feuil1")
Set sh2 = Sheets("Feuil2")
LaDate = DateSerial(Year(sh1.Cells(6, 9)), Month(sh1.Cells(6, 9)), 1)
Etudiant = sh1.Cells(8, 9)
Matière = sh1.Cells(10, 9)
t = "Match(""" & Etudiant & """&""" & Matière & """," & sh2.Name & "!" & Range("B:B").Address & "&" & Range("C:C").Address & ", 0)"
lign = Evaluate(t)
col = Application.Match(LaDate, sh2.Range("11:11"), 0)
sh2.Cells(lign, col).Value = sh1.Cells(12, 9).Value
End Sub

Bonjour SabV,

tout d'abord merci pour ta réponse !

Je viens de tenter le code pour lequel tu m'as aidé et j'ai une erreur d'exécution '13'

Lorsque j'active le débogage cela me surligne la ligne ci dessous :

sh2.Cells(lign, col).Value = sh1.Cells(12, 9).Value

avec lign = Erreur 2042 et si je mets remplace par lig, cela me fait Lig = Vide avec une erreur d'exécution 1004

Merci

Bonjour,

oui, je vois que la méthode "Evaluate" ne fonctionne pas dans tous les cas.

j'ai refais un essai avec les nom et matière CONCATENER (colonne D)

Sub tranfert()
Dim sh1, sh2, LaDate As Double
Dim EtudiantMatière As String, lign As Long, col As Integer
Set sh1 = Sheets("Feuil1")
Set sh2 = Sheets("Feuil2")
LaDate = DateSerial(Year(sh1.Cells(6, 9)), Month(sh1.Cells(6, 9)), 1)
EtudiantMatière = sh1.Cells(8, 9) & sh1.Cells(10, 9)
lign = Application.Match(EtudiantMatière, sh2.Range("D:D"), 0)
col = Application.Match(LaDate, sh2.Range("11:11"), 0)
sh2.Cells(lign, col).Value = sh1.Cells(12, 9).Value
End Sub

SabV mon héros !

C'est exactement ca. J'ai réussi à le retranscrire pour mon cas et ca marche parfaitement.

Merci mille fois et très bonne continuation à toi !

Rechercher des sujets similaires à "vba copier coller tableau differents criteres"