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