Bonjour à tous,
Dans le cadre de mon stage, je dois "pimper" un fichier excel avec tout un tas de macro. Là j'en ai fait une pour sélectionner des lignes qui correspondent à un ou deux critères. Le problème que je ne comprends pas se situe à la ligne ou je sélectionne les données. Le programme bloque dessus et me met une erreur de variable incompatible!
J'ai fait une macro plus simple qui fait presque la même chose (mais tous les critères doivent être renseignés) et la sélection fonctionne quand une seule ligne correspond mais quand il y en a plusieurs cela bloque...
J'ai besoin donc de l'aide d'un gentils exceliste pour me sortir de ce pétrin!
Merci d'avance
Ci-dessus c'est la macro qui ne fonctionne pas...du moins dès qu'il y a plusieurs entités qui correspondent aux critères. Je pense donc que l'écriture de la variable MesLignes comporte une erreur!
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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81 Sub Recherche_Critères() Dim i As Integer, j As Byte, DerLig As Integer Dim Contrôle_Dossier As Boolean, Contrôle_Langue As Boolean, Contrôle_Société As Boolean Dim Drapeau As Boolean Dim MesLignes DerLig = Sheets("RCEL").Range("A" & Rows.Count).End(xlUp).Row For i = 20 To DerLig ' Lignes de la feuille 'RCEL' 'Dossier N° ------------ Début If Sheets("Filtre").Range("A25") = "" Then Contrôle_Dossier = True GoTo Etiquette_Langue End If 'Colonnes A If Sheets("Filtre").Range("A25") = Sheets("RCEL").Cells(i, 1) Then Contrôle_Dossier = True GoTo Etiquette_Langue End If 'LOCALITES ------------ Fin 'Langue ------------ Début Etiquette_Langue: If Sheets("Filtre").Range("B25") = "" Then Contrôle_Langue = True End If 'Colonnes B If Sheets("Filtre").Range("B25") = Sheets("RCEL").Cells(i, 2) Then Contrôle_Langue = True End If 'Langue ------------ Fin 'FACADE ------------ Début 'Etiquette_FACADE: 'If .Cells(i, 7) >= Range("R" & ActiveCell.Row) Then Contrôle_Façade = True 'FACADE ------------ Fin 'DIMENSION ------------ Début ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''Etiquette_DIMENSION: 'DIMENSION ------------ Fin 'Résultat If Contrôle_Dossier = True And Contrôle_Langue = True Then 'MsgBox ("Le dossier " & Sheets("RCEL").Cells(i, 1) & " conviendrait à ce(s) critères") MesLignes = MesLignes & i & ":" & i & "," 'Stockage des lignes qui répondent au critère Drapeau = True End If Contrôle_Dossier = False Contrôle_Langue = False 'Contrôle_Façade = False Next i If Drapeau = False Then MsgBox "Aucun dossier correspondant aux critères (vérifier les critères)" If MesLignes <> "" Then Worksheets("RCEL").Activate MesLignes = Left(MesLignes, Len(MesLignes) - 1) MsgBox ("Mes lignes " & MesLignes) MesLignes = CStr(MesLignes) Sheets("RCEL").Rows(MesLignes).Select End If End Sub
Cependant quand je l'affiche dans la messagebox, elle semble correcte:
Voilà merci de votre aide je suis toute désespérée12:12,15:15,67:67
Partager