Bonjour tous le monde,
J'ai un gros problème que je n'arrive pas à résoudre! j'ai sur une sheet une base de donné qui contient dans la colonne C le nom de l'affaire!! Dans une autre sheet "Budget" j'ai dans la colonne D tous les nom d'affaire que le contrôleur de gestion à taper manuellement!!!
Je voudrais tous simplement avec une macro comparer ces deux colonnes et ensuite que le programme m'envoie un msgbox lorqu'il ne trouve pas le nom de l'affaire dans l'onglet budget!
J'ai éssayé toute la journée hier mais vu que je suis un novice en vba, je pense que j'ai fait une erreur dans ma programmation!!
j'ai surement un probléme avec mes boucles
J'espére que j'ai bien expliquer mon probléme!! Au pire voila mon programme
je vous remercie d'avance pour votre aide car moi cette macro m'a donné des maux de tête
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 Sheets("DonnéBudget").Activate Cells(1).Select Selection.CurrentRegion.Select Set basebudget = Selection Sheets("BudgetCoûts").Activate range("a5").Select Selection.CurrentRegion.Select Set recueilbudget = Selection 'Recherche les derniéres cellules non vide sur la colonne 1 lignemax2 = Sheets("BudgetCoûts").Cells(65527, 1).End(xlUp).Row lignemax = Sheets("DonnéBudget").Cells(65527, 1).End(xlUp).Row 'boucle de recherche des noms d'affaire sur l'onglet budgetCoûts For a = 2 To lignemax chercheerreur = basebudget.Columns(3).Cells(a) 'si le nom d'affaire est vide alors message d'erreur If chercheerreur = "" Then MsgBox "Attention, il manque des données sur la colonne C de l'onglet DonnéBudget, allez voir à la ligne " & a, vbExclamation + vbOKOnly, "Message d'avertissement" End If Next a 'réinitialisation des variables i = 0 r = 0 a = 0 'message pour prévenir que le nom de l'affaire n'est pas encore créer!! For i = 1 To basebudget.Columns(1).Cells.Count monaffairebudget = basebudget.Columns(3).Cells(i + 1).Value For r = r To recueilbudget.Columns(1).Cells.Count chercheerreur = recueilbudget.Columns(4).Cells(r + 1) Do i = i r = r + 1 'MsgBox "nombase" & monaffairebudget 'MsgBox "nombrecueil" & chercheerreur If chercheerreur = monaffairebudget Then 'MsgBox "GREAT" GoTo suite2 ElseIf chercheerreur = Mid(monaffairebudget, 2) Then 'MsgBox "GREAT" GoTo suite2 ElseIf chercheerreur = "" Then 'MsgBox "GREAT" GoTo suite2 Else MsgBox "Le nom de l'affaire est inconnu, veuillez la créer! Cette erreur dans l'onglet budgetdonné fait référence à la ligne " & i, vbExclamation, "Message d'avertissement" End If Loop While chercheerreur = monaffairebudget Next r suite2: Next i
oui je suis obligé de faire en vba car c'est une base de donné que l'on actualise tous les mois!!! C'est ça le probléme!! Le dossier de donné fait pour l'instand 300 lignes mais je n'ai que les données de janvier![]()
Partager