Bonjour le Forum, Bonjour à tous,
Je suis en train de m'arracher les cheveux !!!
Dans un fichier, je dois lancer 2 macros.
Les 2 macros fonctionnent indépendamment l'une de l'autre.
La macro 2 seule fonctionne.
La macro 1 seule fonctionne.
Le problème est que lorsque la macro 1 à tournée, la macro 2 ensuite ne donne plus le résultat voulu.
Après analyse, cela vient de cette ligne dans la macro 1 :
Une fois que cette ligne est passée, la macro 2 ne donne plus le résultat voulu.
Code : Sélectionner tout - Visualiser dans une fenêtre à part x = Columns(15).Find("*", , xlValues, , 1, 2, 0).Row
Macro 2 :
La macro 1 agit sur l'onglet 1.
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 Sub Historisation() Dim Trouve As Range, PlageDeRecherche As Range Dim Valeur_Cherchee As Date, AdresseTrouvee As String Dim Rep As Integer Valeur_Cherchee = Range("H2") Set PlageDeRecherche = Sheets("TDB").Range("D2:BR2") Set Trouve = PlageDeRecherche.Cells.Find(what:=Valeur_Cherchee, LookAt:=xlWhole) If Trouve Is Nothing Then AdresseTrouvee = Valeur_Cherchee & " n'est pas présent dans " & PlageDeRecherche.Address Else Rep = MsgBox("Vous allez historiser les données de " & Format(Valeur_Cherchee, "mmmm-yy") & ". Voulez-vous continuer ?", vbYesNo + vbQuestion, "Mon message") If Rep = vbYes Then => Action
La macro 2 agit sur l'onglet 2 et 3
Si je lance la macro 2 avant la macro 1, Trouve = La date correspondente et j'ai ma box qui s'ouvre.
Si je lance la macro 2 après la macro 1, Trouve = Nothing et End.
H2 est une date
D2:BR2 = plage comprenant des dates
Lorsque la date en H2 est trouvée dans D2:BR2, alors action.
Sinon, end.
Après la macro 1, la macro 2 dit ne pas trouver la date dans D2:BR2 (alors qu'elle y est bien...)
Si je ferme tous les excel et que je re-ouvre mon fichier, la macro 2 me redonne Trouve = La date correspondente et j'ai ma box qui s'ouvre...
J'ai testé la macro 1 pas à pas et c'est bien a partir de x = Columns(15).Find("*", , xlValues, , 1, 2, 0).Row que le bat blesse.
Y a t-il une ligne à changer pour que cela fonctionne ?
Macro 1 :
Macro 2 :
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 Sub MiseEnFormerelevé() ' ' MiseEnFormerelevé Macro ' Dim x As Range Dim DernLigne As Integer Cells.Select Range("AA1").Activate Selection.EntireColumn.Hidden = False Set x = Columns(18).Find("*", , xlValues, , 1, 2, 0) If Not x Is Nothing Then DernLigne = x.Row MaPlage = "(M2:W" & DernLigne & ")" Range(MaPlage).Select End If Selection.Copy Range("Tableau1[Ordre]").Select ActiveSheet.Paste Columns("M:BB").Select Selection.EntireColumn.Hidden = True Range("Tableau1[[#Headers],[Ordre]]").Select Application.CutCopyMode = False End Sub
(Je ne peux pas diffuser le fichier car très lourd et confidentiel)
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 Sub Historisation() Dim Trouve As Range, PlageDeRecherche As Range Dim Valeur_Cherchee As Date, AdresseTrouvee As String Dim Rep As Integer Valeur_Cherchee = Range("H2") Set PlageDeRecherche = Sheets("TDB").Range("D2:BR2") Set Trouve = PlageDeRecherche.Cells.Find(what:=Valeur_Cherchee, LookAt:=xlWhole) If Trouve Is Nothing Then AdresseTrouvee = Valeur_Cherchee & " n'est pas présent dans " & PlageDeRecherche.Address Else Rep = MsgBox("Vous allez historiser les données de " & Format(Valeur_Cherchee, "mmmm-yy") & ". Voulez-vous continuer ?", vbYesNo + vbQuestion, "Les 100 DERNIERS METRES") If Rep = vbYes Then AdresseTrouvee = Trouve.Address Sheets("Formules").Visible = True Sheets("Formules").Select Range("D4:E18").Select Application.CutCopyMode = False Selection.Copy Sheets("TDB").Select Range(AdresseTrouvee).Select ActiveCell.Offset(2, 0).Select ActiveSheet.Paste Sheets("Formules").Select Range("D22:E62").Select Application.CutCopyMode = False Selection.Copy Sheets("TDB").Select Range(AdresseTrouvee).Select ActiveCell.Offset(20, 0).Select ActiveSheet.Paste Range("A1").Select Sheets("Formules").Visible = False Sheets("TDB").Select Else End If End If End Sub
Merci.
Bob 182
Partager