Bonjour,
Je galère pour trouver une façon de vérifier que le contenu d'une plage de cellule soit une donnée prévue.
Dans le code que je vais mettre ci-dessous, je compare une liste de nombres dans une plage avec les noms d'une liste de feuilles.
Si le code de la plage de la feuille "Accueil" correspond au nom d'une des feuilles dans sh alors on copie les 4 données à droite dans la feuille qui porte le nom "sh"
Le code que je vous montre fonctionne bien, les blancs sont ignorés et tout va bien SAUF que si j'entre un code qui n'est pas sensé être bon (un numéro de feuille qui n'existe pas), et bien il ne se passe rien et donc l'erreur passerait inaperçu.
J'ai essayé de dire que si la comparaison est différente affiche un message mais vu que ce sont des for each, chaque feuilles sauf la bonne renvois une erreur.
j'ai essayé un while mais du coup ça me fait des boucles infinies.
Après je m'y suis peut être mal pris et dans ce cas je suis preneur de vos idées.
Ha oui, pour info, je me suis mis à la programmation php en poo et j'ai essayé de transposer ici, ce que j'apprends de en php. Ceci dit, si j'assimile la théorie je reste encore à la rue lorsqu'il s'agit d'imaginer les algorithmes
voici :
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 Sub Transactions() Application.ScreenUpdating = False Dim sh As Worksheet Dim varDate As Date Dim varIn As single Dim varOut As single Dim varDesc As String Dim codes As Range Dim Cell As Range Set codes = Sheets("accueil").Range("G5:G33") Sheets("accueil").Select For Each Cell In codes For Each sh In ThisWorkbook.Sheets If Cell.Value = sh.Name Then Cell.Select ActiveCell.Offset(0, 1).Select varDate = ActiveCell.Value ActiveCell.Offset(0, 1).Select varIn = ActiveCell.Value ActiveCell.Offset(0, 1).Select varOut = ActiveCell.Value ActiveCell.Offset(0, 1).Select varDesc = ActiveCell.Value sh.Select ActiveSheet.Cells(Rows.Count, "C").End(xlUp)(2).Select ActiveCell.Value = varDate ActiveCell.Offset(0, 1).Select ActiveCell.Value = varIn ActiveCell.Offset(0, 1).Select ActiveCell.Value = varOut ActiveCell.Offset(0, 1).Select ActiveCell.Value = varDesc Sheets("accueil").Select Else End If Next sh Next Cell End Sub
Partager