Mateo.... Je t'ai déjà montré l'erreur. Dans deux messages précédents.
Version imprimable
Mateo.... Je t'ai déjà montré l'erreur. Dans deux messages précédents.
Merde !!! Autant pour moi, j'étais encore dessus moi^^ !!! Bon je go tester tout ça sur le VRAI fichier maintenant et je vous tiens au courant !
Dès que ça fonctionne, j'ajoute les petits pouces verts et je clôture !!
Je vous tiens au courant !!
Mouhaha j'ai trouvé :
Il faut que tu adapte la ligne For i = 2 To x + 2 en fonction de où tu commence le x = Sheets(2).Range("A3:A" & Sheets(2).Range("B:B").End(xlDown).Row).Count ici c'est + 2 :mrgreen:Code:
1
2
3
4
5
6
7
8
9
10
11 Sub try1() x = Sheets(2).Range("A3:A" & Sheets(2).Range("B:B").End(xlDown).Row).Count r1 = Sheets(2).Range("B2").Value: r2 = Sheets(2).Range("C2").Value For i = 2 To x + 2 If Sheets(2).Range("B" & i).Value > r1 And Sheets(2).Range("C" & i).Value > r2 Then Sheets(2).Range("H2").Value = IIf(Sheets(2).Range("H2").Value <> "", Sheets(2).Range("H2").Value & Chr(10) & Sheets(2).Range("A" & i).Value, Sheets(2).Range("A" & i).Value) End If: Next End Sub
Bon bah génial si ça marche !! Je sais pas encore quelle solution je vais prendre !!
J'ai pas compris le x+2 ^^'
Le + 2 correspond au nombre de ligne avant que commence les valeurs dont tu as besoins :)
A quoi correspond le i = 2 alors? ^^ j'suis chiant ouai !
J'ai réussis à mettre le code de Kiouane sur mon vrai fichier :p
C'est la ligne de départ de tes valeurs
C'est bien ce que je pensais oui, ok bah j'te remercie pour ton temps, pour ton aide et pour les explications !
De même pour tous les autres, merci beaucoup pour toutes ces aides que vous m'avez apporté ! Je vous en suis très reconnaissant :)
Pas de soucis à ton service
Bonne soirée
J'utilise toujours un tableau quand je traite des valeurs de cellules.
La raison est simple, une cellule contient beaucoup de méthodes et de propriétés (implicitement si tu ne précises pas de propriété c'est .Value qui va être utilisée). Un objet Range est donc beaucoup plus "gros" qu'un élément d'un simple tableau. Le temps de traitement va donc être beaucoup plus rapide.
Pour ce qui est d'adapter la plage a chacun de tes cas, je pense que tu as déjà trouvé une solution grâce aux autres intervenant de cette discutions.
Finalement dans mon code, il n'y a que cette ligne à changer :Tu dois déterminer les bornes de ta plage.Code:Set rg = ActiveSheet.Range("A3:C6")
Ok ça marche, j'te remercie pour ta réponse.
Peut-on écrire quelque chose comme ça pour ton code ?
Code:
1
2
3
4 dim n as long 'pour la dernière ligne renseignée n = Sheets("Telephonie").Range("C" & Rows.Count).End(xlUp).Row Set rg = Sheets("Telephonie").Range("C4:C" & n, ) and Sheets("Telephonie").Range("H4:H" & n, ) and Sheets("Telephonie").Range("K4:K" & n, ) : t = rg
Après vérification, je constate que pour :Code:
1
2
3
4
5
6
7
8
9
10
11
12
13 Dim n, ref1, ref2 As Integer Dim cell As Range ref1 = Sheets("Telephonie").Range("H3").Value ref2 = Sheets("Telephonie").Range("K3").Value n = Sheets("Telephonie").Range("C" & Rows.Count).End(xlUp).Row For Each cell In Sheets("Telephonie").Range("H4:H" & n) If cell > ref1 And cell.Offset(0, 3) > ref2 Then .Range("D8").Value = .Range("D8").Value + cell.Offset(0, -5).Value & Chr(10) End If If cell < 0.6 And cell.Offset(0, 3) < 0.35 Then .Range("C8").Value = .Range("C8").Value + cell.Offset(0, -5).Value & Chr(10) End If Next
En fin de compte ça ne prend pas en compte la ref 2, il me met dans la cellule tous ceux > ref1 mais ne prend pas en compte le >ref1 ET >ref2Code:
1
2
3
4 For Each cell In Sheets("Telephonie").Range("H4:H" & n) If cell > ref1 And cell.Offset(0, 3) > ref2 Then .Range("D8").Value = .Range("D8").Value + cell.Offset(0, -5).Value & Chr(10) End If
Par contre pour ma deuxième condition ça fonctionne bien.
Code:
1
2
3 If cell < 0.6 And cell.Offset(0, 3) < 0.35 Then .Range("C8").Value = .Range("C8").Value + cell.Offset(0, -5).Value & Chr(10) End If
Absolument pas !
Le AND comme le OR, le IS, le LIKE ... sont des opérateurs logiques qui vont renvoyer un booléen qui prendra la valeur VRAI ou FAUX.
VRAI AND VRAI va te répondre VRAI mais plage1 AND plage2 n'a pas de sens pour Excel. Je ne pense pas qu'il y est d'erreur de logique ou de syntaxe (pas testé)
mais il n'y a aucune de chance d'obtenir le résultat souhaité.
Je crois comprendre que tu veux prendre la réunion des différentes plages.
C'est possible en VB a l'aide de la méthode Union de l'objet Application :Exemple :Code:Application.Union()
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 Sub Test_Union() Dim rg1 As Range, rg2 As Range, rg3 As Range, Rg_Union As Range Set rg1 = Range("C4:C10") Set rg2 = Range("K4:K10") Set rg3 = Range("H4:H10") Set Rg_Union = Application.Union(rg1, rg2, rg3) MsgBox "rg1 := " & rg1.Address & vbCr & _ "rg2 := " & rg2.Address & vbCr & _ "rg3 := " & rg3.Address & vbCr & _ "Réunion de rg1, rg2 et rg3 := " & Rg_Union.Address fin: Set rg1 = Nothing Set rg2 = Nothing Set rg3 = Nothing Set Rg_Union = Nothing End Sub
Ok je vois, merci !! :)
Sur le code des autres participants, j'ai résolu le problème en supprimant les deux variables ref1 et ref2 et en mettant directement :
Code:
1
2 If cell > Sheets("Telephonie").Range("H3").Value And cell.Offset(0, 3) > Sheets("Telephonie").Range("K3").Value Then 'action
Bonjour !
Cas d'école d'un filtre avancé utilisant un critère calculé via une formule de niveau débutant !
Donc réalisable sans code … Et si vraiment besoin d'un code :
soit via la fin du tutoriel soit via l'aide de l'Enregistreur de macros ou encore rien qu'en lisant l'aide VBA interne !
C'est souvent le plus simple pour un débutant et peut aussi s'avérer plus rapide qu'un code bouclant sur des cellules …
_________________________________________________________________________________________________________
Je suis Paris, Charlie, Bruxelles, …
Re bonjour à tous !
Je rencontre un problème que je n'arrive pas à surmonter !
Je suis toujours sur le même travail depuis maintenant quelques semaines.
Maintenant, je dois mettre, pareil qu'avant, des noms dans une cellule, cependant, je dois les mettre selon un calcul : pour i = 5 to dernière ligne -> Si Hi/Ki<3 alors mettre le nom dans la cellule.
Je suis donc partis du code fourni par Kiouane :
Cependant, je n'arrive pas à m'y retrouver avec les cell, d'ailleurs, dans ce code, il y a une variable cell et d'autres cell qui se baladent, je n'arrive pas à différencier le cell[variable] des autres cell.Code:
1
2
3
4
5
6
7
8 Dim n As Integer Dim cell As Range n = Sheets("Telephonie").Range("C" & Rows.Count).End(xlUp).Row For Each cell In Sheets("Telephonie").Range("H4:H" & n) If cell > Sheets("Telephonie").Range("H3").Value And cell.Offset(0, 3) > Sheets("Telephonie").Range("K3").Value Then .Range("D8").Value = .Range("D8").Value + cell.Offset(0, -5).Value & Chr(10) End If Next
Avez-vous une idée de comment je peux faire pour lui dire de faire Hi/K1 < 3 avec ce bout de code ci-dessus ?
Un deuxième soucis rencontré : je vais placer ce genre de code au moins 4 fois dans mon bouton, j'ai donc écris le code ci-dessus, puis un autre dans le même bouton :
Cependant, il aime pas, il me met une erreur "incompatibilité de type", avez-vous une idée de comment je peux remédier au problème ? :xCode:
1
2
3
4
5
6
7
8
9
10 Dim postit postit = Sheets("Post_it").Range("C" & Rows.Count).End(xlUp).Row For Each cell In Sheets("Post_it").Range("K4:K" & postit) If cell > Sheets("Post_it").Range("K3").Value And cell.Offset(0, 9) > Sheets("Post_it").Range("T3").Value Then .Range("D24").Value = .Range("D24").Value + cell.Offset(0, -8).Value & Chr(10) End If If cell < 5 And cell.Offset(0, -6) > 2 Then .Range("C24").Value = .Range("C24").Value + cell.Offset(0, -8).Value = Chr(10) End If Next
Je ne sais pas si c'est que tu veux mais voilà un code qui prends les Hi/Ki à partir de la ligne 5 jusqu'à la dernière ligne et vérifie si supérieur à 3 puis retourne le nom dans la case D8.
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13 Dim n As Integer Dim cell As Range n = Sheets("Telephonie").Range("C" & Rows.Count).End(xlUp).Row For Each cell In Sheets("Telephonie").Range("H5:H" & n) if cell.Offset(0,3).value <> 0 then If cell.value/cell.Offset(0, 3).value > 3 Then .Range("D8").Value = .Range("D8").Value + cell.Offset(0, -5).Value & Chr(10) End If End if Next
Je te remercie ! Cependant, le truc c'est que je sais pas si ça va fonctionner car comme je mets dans un programme où j'ai déjà fais un dim cell as range, et que là, c'est un "for each cell in sheets(autre feuille).range(autre plage)"
A la limite remplace cell par un autre nom de variable dans son code, ca n'a pas vraiment d'importance du moment que tu utilises le même nom dans ce for each
Mais si à la place dej'écrisCode:dim cell as Range
Il faudra mettreCode:dim bidule as Range
ouCode:
1
2 For each bidule in .. if bidule.value = ... and bidule.offset ...
Code:
1
2 For each cell in ... if cell.Value = .... and cell.offset ..
For each bidule
Dans le code de kiouane ca donnera :
Code:
1
2
3
4
5
6
7
8
9
10 Dim n As Integer Dim bidule As Range n = Sheets("Telephonie").Range("C" & Rows.Count).End(xlUp).Row For Each bidule In Sheets("Telephonie").Range("H5:H" & n) if bidule.Offset(0,3).value <> 0 then If bidule.value/bidule.Offset(0, 3).value > 3 Then .Range("D8").Value = .Range("D8").Value + bidule.Offset(0, -5).Value & Chr(10) End If End if
Ok je vois, bon bah je vais essayer, je vous remercie tous les deux !!!! ^^
Je vous tiens au courant ! Je sens l'erreur "incompatibilité de type" que j'avais eu, mais peut être que j'avais pas TOUT modifier, donc j'vais tester !
Tu peux utiliser le même Cell dans un autre for each. On a déclaré Cell comme range et il fera référence à chaque cellule dans la plage que tu lui attribueras.
ceci fonctionne :
ceci ne fonctionne pas :Code:
1
2
3
4
5
6
7
8
9
10
11 'PDV EN BONNES PRATIQUES ET DECALES Dim n As Integer, cell As Range n = Sheets("Telephonie").Range("C" & Rows.Count).End(xlUp).Row For Each cell In Sheets("Telephonie").Range("H4:H" & n) If cell > Sheets("Telephonie").Range("H3").Value And cell.Offset(0, 3) > Sheets("Telephonie").Range("K3").Value Then .Range("D8").Value = .Range("D8").Value + cell.Offset(0, -5).Value & Chr(10) End If If cell < 0.6 And cell.Offset(0, 3) < 0.35 Then .Range("C8").Value = .Range("C8").Value + cell.Offset(0, -5).Value & Chr(10) End If Next
Erreur : incompatibilité de typeCode:
1
2
3
4
5
6
7
8 'PDV EN BONNES PRATIQUES ET DECALES Dim m As Integer m = Sheets("Post_it").Range("C" & Rows.Count).End(xlUp).Row For Each cell In Sheets("Post_it").Range("K4:K" & m) If cell > Sheets("Post_it").Range("K3").Value And cell.Offset(0, 9) > Sheets("Post_it").Range("T3").Value Then .Range("D24").Value = .Range("D24").Value + cell.Offset(0, -8).Value & Chr(10) End If Next
EDIT : l'erreur est peut être dû au fait que la colonne K c'est du nombre et la colonne T c'est du pourcentage ? :xCode:If cell > Sheets("Post_it").Range("K3").Value And cell.Offset(0, 9) > Sheets("Post_it").Range("T3").Value Then
Si tu regardes bien Ligne 6 t'as utilisé un .Range sans With. Soit tu enlèves le . ou tu utilises ton With. Cela dépend de la provenance des données.Code:
1
2
3
4
5
6
7
8 'PDV EN BONNES PRATIQUES ET DECALES Dim m As Integer m = Sheets("Post_it").Range("C" & Rows.Count).End(xlUp).Row For Each cell In Sheets("Post_it").Range("K4:K" & m) If cell > Sheets("Post_it").Range("K3").Value And cell.Offset(0, 9) > Sheets("Post_it").Range("T3").Value Then .Range("D24").Value = .Range("D24").Value + cell.Offset(0, -8).Value & Chr(10) End If Next
j'ai un with sheets("Synthese") bien plus haut dans le code (20 lignes plus haut) , le End With est à la toute fin
Erreur : "incompatibilité de type"Code:If cell > Sheets("Post_it").Range("K3").Value And cell.Offset(0, 9) > Sheets("Post_it").Range("T3").Value Then
Dance ce cas, pourrais-tu mettre le code en entier?
C'est un énorme pavé ^^
Code:
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
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144 ' |------------------------------------------------------------------| ' | REMPLISSAGE DES TABLEAUX SYNTHESES | ' |------------------------------------------------------------------| Private Sub CommandButton11_Click() Dim i As Integer 'compteur pour ouvrir les fichier groupes Dim nbsi1 As String, nbsi2 As String 'variables qui prennent le résultat des NB.SI pour les AM Dim dern As Long 'variable pour obtenir la dernière ligne renseignée Dim rg As Range, t(), j&, res$ dern = Worksheets("Telephonie").Range("B" & Rows.Count).End(xlUp).Row For i = 1 To 2 Workbooks.Open ("E:\Tableau de bord\FICHIER SOURCE\fichiers par groupes\Groupe 1" & Format(i, "00")) 'ouverture des fichiers groupes ' --------------------------------------- TABLEAU TELEPHONIE ----------------------------------------- With Sheets("Synthese") 'LIGNE COMMERCIALE .Range("F2") = Sheets("Telephonie").Range("H3") .Range("G2").NumberFormat = "0""pts""" 'format de la cellule .Range("G2").Formula = "=(Telephonie!H3-Telephonie!G3)*100" .Range("F3") = Sheets("Telephonie").Range("H2") .Range("G3").NumberFormat = "0""pts""" .Range("G3").Formula = "=(Telephonie!H2-Telephonie!G2)*100" .Range("E4").NumberFormat = "0"" PDV en progression""" .Range("E4") = Application.WorksheetFunction.CountIf(Sheets("Telephonie").Range("I4:I" & Sheets("Telephonie").Range("I4").End(xlDown).Row), ">2") 'LIGNE DIRECTE .Range("F6") = Sheets("Telephonie").Range("K3") .Range("G6").NumberFormat = "0""pts""" .Range("G6").Formula = "=(Telephonie!K3-Telephonie!J3)*100" .Range("F7") = Sheets("Telephonie").Range("K2") .Range("G7").NumberFormat = "0""pts""" .Range("G7").Formula = "=(Telephonie!K2-Telephonie!J2)*100" .Range("E8").NumberFormat = "0"" PDV en progression""" .Range("E8") = Application.WorksheetFunction.CountIf(Sheets("Telephonie").Range("L4:L" & Sheets("Telephonie").Range("L4").End(xlDown).Row), ">2") 'APPELS MYSTERES .Range("F10") = Sheets("Telephonie").Range("P3") .Range("G10").NumberFormat = "0""pts""" .Range("G10").Formula = "=(Telephonie!P3-Telephonie!N3)*100" .Range("F11") = Sheets("Telephonie").Range("P2") .Range("G11").NumberFormat = "0""pts""" .Range("G11").Formula = "=(Telephonie!P2-Telephonie!N2)*100" .Range("E12").NumberFormat = "0%"" des PDV avec demandes de rappel respectent l'engagement""" nbsi1 = Application.WorksheetFunction.CountIf(Sheets("Telephonie").Range("P4:P" & dern), "=100%") nbsi2 = Application.WorksheetFunction.CountIf(Sheets("Telephonie").Range("O4:O" & dern), ">0") If nbsi2 <> 0 Then .Range("E12").Value = nbsi1 / nbsi2 Else .Range("E12").Value = 0 'PDV EN BONNES PRATIQUES ET DECALES Dim n As Integer, cell As Range n = Sheets("Telephonie").Range("C" & Rows.Count).End(xlUp).Row For Each cell In Sheets("Telephonie").Range("H4:H" & n) If cell > Sheets("Telephonie").Range("H3").Value And cell.Offset(0, 3) > Sheets("Telephonie").Range("K3").Value Then .Range("D8").Value = .Range("D8").Value + cell.Offset(0, -5).Value & Chr(10) End If If cell < 0.6 And cell.Offset(0, 3) < 0.35 Then .Range("C8").Value = .Range("C8").Value + cell.Offset(0, -5).Value & Chr(10) End If Next ' --------------------------------------- TABLEAU RECLA ET POST IT -------------------------------------- 'total des recla .Range("E16") = Sheets("Reclamations").Range("H2") .Range("G16").NumberFormat = """(poids =""0%"")""" 'format de la cellule (poids = x%) .Range("G16").Formula = "=(Reclamations!H2/Reclamations!H3)" If .Range("G16").Value > (Sheets("Reclamations").Range("G2").Value / Sheets("Reclamations").Range("G3").Value) Then .Range("H16").Value = "ì" End If If .Range("G16").Value < (Sheets("Reclamations").Range("G2").Value / Sheets("Reclamations").Range("G3").Value) Then .Range("H16").Value = "î" End If .Range("H16").Font.Name = "Wingdings" 'nb de recla remontees .Range("E18") = Sheets("Reclamations").Range("K2") .Range("G18").NumberFormat = """(poids =""0%"")""" 'format de la cellule (poids = x%) .Range("G18").Formula = "=(Reclamations!K2/Reclamations!K3)" If .Range("G18").Value > (Sheets("Reclamations").Range("J2").Value / Sheets("Reclamations").Range("J3").Value) Then .Range("H18").Value = "ì" End If If .Range("G18").Value < (Sheets("Reclamations").Range("J2").Value / Sheets("Reclamations").Range("J3").Value) Then .Range("H18").Value = "î" End If .Range("H18").Font.Name = "Wingdings" 'nb recla traitees par grp .Range("E20") = Sheets("Reclamations").Range("N2") .Range("G20").NumberFormat = """(poids =""0%"")""" 'format de la cellule (poids = x%) .Range("G20").Formula = "=(Reclamations!N2/Reclamations!N3)" If .Range("G20").Value > (Sheets("Reclamations").Range("M2").Value / Sheets("Reclamations").Range("M3").Value) Then .Range("H20").Value = "ì" End If If .Range("G20").Value < (Sheets("Reclamations").Range("M2").Value / Sheets("Reclamations").Range("M3").Value) Then .Range("H20").Value = "î" End If .Range("H20").Font.Name = "Wingdings" 'nb de saisies post it .Range("E22") = Sheets("Post_it").Range("H2") .Range("G22").NumberFormat = """(poids =""0%"")""" 'format de la cellule (poids = x%) .Range("G22").Formula = "=(Post_it!H2/Post_it!H3)" If .Range("G22").Value > (Sheets("Post_it").Range("G2").Value / Sheets("Post_it").Range("G3").Value) Then .Range("H22").Value = "ì" End If If .Range("G22").Value < (Sheets("Post_it").Range("G2").Value / Sheets("Post_it").Range("G3").Value) Then .Range("H22").Value = "î" End If .Range("H22").Font.Name = "Wingdings" 'post it en progression .Range("E24").NumberFormat = "0"" PDV en progression""" .Range("E24") = Application.WorksheetFunction.CountIf(Sheets("Post_it").Range("L4:L" & Sheets("Post_it").Range("L4").End(xlDown).Row), ">2") 'PDV EN BONNES PRATIQUES ET DECALES Dim m As Integer m = Sheets("Post_it").Range("C" & Rows.Count).End(xlUp).Row For Each cell In Sheets("Post_it").Range("K4:K" & m) If cell > Sheets("Post_it").Range("K3").Value And cell.Offset(0, 9) > Sheets("Post_it").Range("T3").Value Then Sheets("Synthese").Range("D24").Value = Sheets("Synthese").Range("D24").Value + cell.Offset(0, -8).Value & Chr(10) End If Next End With Application.DisplayAlerts = False 'annule la demande de sauvegarde ActiveWorkbook.SaveAs "E:\Tableau de bord\FICHIER SOURCE\fichiers par groupes\Groupe 1" & Format(i, "00") 'on sauvegarde et on remplace les fichiers ActiveWorkbook.Close Application.DisplayAlerts = True 'réactive la demande de sauvegarde Next i End Sub
J'ai testé le code en mettant en colonne T des Pourcentages et en colonnes K des nombres. Il marche pour moi.
Hum bah c'est bizarre !!!! ça ne fonctionne pas pour moi..
Est-ce que ça peut être dû au fait qu'il y a des #N/A ?
C'est bien ça j'ai remplacé les #N/A par des valeurs et ça fonctionne, faut que je fasse en sorte de les gérer..
Franchement j'ai testé avec tes données et ça marche parfaitement. Mets ton fichier en pièce jointe où un fichier exemple qui se rapproche du tien (En cas de données confidentielles).
PS : Test sur ton fichier exemple si tu as la même erreur d'abord.
C'est bien les #N/A le problème !
Tu les as sur quelle colonne? Et les données de cette colonne proviennent d'où?
Sur les deux, il y a des #N/A qui se baladent ! J'ai constitué la base de données à partir d'autres fichiers, dans pas mal de cas, j'ai utilisé RECHERCHEV, mais des fois il n'y avait pas de données associées au nom c'est pour ça qu'il y a des #N/A..
Les données ne sont pas liées à d'autres fichiers, après avoir fais des recherchev, j'ai copié collé en nombre (ou en pourcentage) pour éviter les erreurs de type "donnée source introuvable"
Sinon il y a une fonction ISERROR qui peut se charger de ça automatiquement.
Code:
1
2
3 If IsError(Données) Then 'do something End If
Je vais essayer de creuser de ce côté là, je te tiens au courant, merci pour ton aide, encore ^^
Utilises là avant d’entamer ta procédure. De ce fait tu pourras passer ton if sans contrainte.
PS : Des petits pouces verts seraient les bienvenus :p.
Ceci ne fonctionne pas =pCode:
1
2
3
4
5
6
7
8
9 Dim m As Integer, cell as range m = Sheets("Post_it").Range("C" & Rows.Count).End(xlUp).Row For Each cell In Sheets("Post_it").Range("K4:K" & m) If Not IsError(Sheets("Post_it").Range("K4" & m).Value) And Not IsError(Sheets("Post_it").Range("T4" & m).Value) Then If cell > Sheets("Post_it").Range("K3").Value And cell.Offset(0, 9) > Sheets("Post_it").Range("T3").Value Then Sheets("Synthese").Range("D22").Value = Sheets("Synthese").Range("D22").Value + cell.Offset(0, -8).Value & Chr(10) End If End If Next
PS : Adapte les offset et les sheets, j'ai mis le code utilisé sur ma feuille de calcul.Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 Dim m As Integer m = Sheets("Feuil1").Range("C" & Rows.Count).End(xlUp).Row For Each cell In Sheets("Feuil1").Range("K4:K" & m) If IsError(cell) Then cell.Value = "" End If If IsError(cell.Offset(0, 1)) Then cell.Offset(0, 1) = "" End If If cell > Sheets("Feuil1").Range("K3").Value And cell.Offset(0, 1) > Sheets("Feuil1").Range("L3").Value Then Range("D24").Value = Range("D24").Value + cell.Offset(0, -8).Value & Chr(10) End If Next