Salut à tous, je viens de pondre quelques lignes qui sont sencées me simplifier la vie...cela fonction jusqu'à un certain point et apres ça plante, j'ai lancé la macro en mode pas à pas, et je ne voie pas ou est le probleme.
j'ai un tableau contenant une liste complete de nature d'intervention
dans une autre partie de ma feuille, j'ai un autre listing issu d'un requeteur,
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 111 Feu E.R.P. sans local à sommeil 112 Feu E.R.P. avec local à sommeil 116 Feu Locaux d´habitations ou bureaux 121 Feu Locaux industriels 122 Feu Locaux agricoles etc...
il contient le meme type listing + 3 colonnes
je souhaite prendre chaque ligne de mon tableau n°2 et la placée sur la meme ligne que celle portant le même nom dans mon tableau n°1
voici mon code.
à l'éxécution des premieres lignes, tout va bien mais arrivé à la ligne n° 20 de ma feuille excel j'ai un arret de la macro et le message suivant:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 Sub tri_par_nature() ' I) copier "manuellement" / collage_spécial le résultat du tableau croisé "nature par groupement" dans la ' cellule rouge (sans les titres en haut ni les sommes à droite) ' II) définir le nombre de ligne du tableau collé en 1) Dim nbligne As Integer nbligne = Range("bk12").CurrentRegion.Rows.Count ' III) pour chaque ligne du tableau collé: Dim numero_ligne_destination As Integer Dim valeur_test As String Dim plage_origine As Range Dim ligne_origine As Integer Dim plage_destination As Range With Worksheets("TC GLOBAL inter par grp") Dim i As Integer For i = 0 To nbligne ' a) definir la valeur de la "cellule_source" de la colonne BK valeur_test = Range("bk" & 12 + i).Value ' b) rechercher dans la plage (A12,A300), la ligne qui contient la même valeur numero_ligne_destination = Range(.Cells(12, 1), .Cells(300, 1)).Find(valeur_test).Row ' c) définir la plage de cellule à copier qui correspond à "cellule_source" + les 3 cellules de droite ligne_origine = Range("bk" & 12 + i).Row Set plage_origine = Range(.Cells(ligne_origine, 63), .Cells(ligne_origine, 66)) ' d) Copier ce range dans la cellule AZ sur la même ligne plage_origine.Select Selection.Copy Range("AZ" & numero_ligne_destination).Select ActiveSheet.Paste Next End With End Sub
"variable objet ou variable de bloc with non definie"
j'ai l'impression que le blocage se fait dans mon code à la ligne:
je vois pas pourquoi, car les premieres lignes sont bien analysées et copier au bon endroit...merci de vos réponses...a+
Code : Sélectionner tout - Visualiser dans une fenêtre à part numero_ligne_destination = Range(.Cells(12, 1), .Cells(300, 1)).Find(valeur_test).Row
Partager