1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
| Sub Base()
Dim m As String
'Moi, je mettrais Dim M as Integer : les valeurs que tu vas comparer à M sont des nombres de 1 à 100
Sheets("R1").Select
'Sélectionne la feuille "R1"
m = Cells(1, 5).Value
'Sélectionne la colonne la cellule "E1" de la feuille "R1" => faux
'défini la valeur de la variable m comme étant le texte de la cellule E1
'On peut l'ecrire plus simplement comme ceci
'm = Sheets("R1").Cells(1, 5)
'm est égal au texte de la cellule E1 de la feuille "B1".
'Comme normalement c'est un nombre, perso, je définirais m en integer
Sheets("B1").Select
'Sélectionne la feuille "B1"
Rows("1:1").Select
Selection.Find(what:=m, After:=ActiveCell, LookIn:=xlFormulas, LookAt _
:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
False, SearchFormat:=False).Activate
'Recherche la variable m dans la feuille "B1" => faux
'recherche de la valeur de m n'importe où dans les cellules de la ligne 1 de la feuille "B1"
'=> tu recherches du texte (m défini en string) et la ligne 1 ne contient que des nombres :
'c'est comme si pour m égal 2 tu recherchais "2" => il n'y aura jamais égalité pour excel.
'Tu dois définir m comme étant un chiffre (integer ou long) ou définir les cellules de la ligne comme
'étant de format de cellule Texte.
Sheets("R1").Select
'Sélectionne la feuille "R1"
Range("E2:E75").Select
'Sélectionne les éléments à copier dans la feuille "B1" correspondant au meme N° d'identification
'de la personne interviewé. Par exemple si la personne interviewé on lui affecte le N°10 je souhaite
'à la fin que le résultat d'enquête soit copier dans la feuille "B1" précisément dans la colonne '
'de la cellule où on a le N°10. (pas dans la 10ième colonne).
Selection.Copy
'=> copie de la plage E2:E75 de la feuille R1 dans la mémoire
Sheets("B1").Select
Rows("1:1").Select
Selection.Find(what:=m, After:=ActiveCell, LookIn:=xlFormulas, LookAt _
:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
False, SearchFormat:=False).Activate
'tu refais la même sélection qu'au début de la macro, alors que la sélection n'a pas changé sur B1
ActiveCell(m).Select
'c 'est la où le code ne fonctionne pas. Le but est d'identifier le N° clé dans la feuille "B1",
'de sélectionner la colonne ayant comme enquéte le même N° puis de copier les données.
'=> code erroné
ActiveCell.Offset(0, 0).Select
'Identification de la colonne
'Faux : on active la cellule active
ActiveCell.Offset(1, 0).Select
'Puis décaler d'une ligne afin d'éviter de copier sur l'entête du tableau
'comportant les N° d'identification
Selection.PasteSpecial
'Copier collage spéciale valeur => faux
'PasteSpecial sans argument, prend les arguments par défaut (copie tout)
Application.CutCopyMode = False
End Sub |
Partager