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 :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
x = Columns(15).Find("*", , xlValues, , 1, 2, 0).Row
Une fois que cette ligne est passée, la macro 2 ne donne plus le résultat voulu.

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
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 1 agit sur l'onglet 1.
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 :

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
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
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
(Je ne peux pas diffuser le fichier car très lourd et confidentiel)
Merci.

Bob 182