Bonsoir à tous,

A chaque jour sa difficulté.
Chaque "bout de mon programme" écrit (avec parfois votre aide), m'amène vers d'autres lignes de codes et ... leurs lots de difficultés.
Alors ... Mon problème du jour. Il me semblait pourtant banal d'écrire ces quelques lignes ... hélas "ça passe pas" et je ne comprends pas pourquoi.
Voici le problème.

J'ai un programme principal qui contient mes macros.
L'une d'elle me permet d'ouvrir des fichiers déjà enregistrés sur le disque dur. A l'ouverture de ces fichiers, je crée deux boutons sur ces fichier qui s'ouvrent, l'un pour Imprimer, l'autre pour Enregistrer. Avec votre aide, tout cela fonctionne très bien.
Donc je me trouve avec mon "FichierOuvert" au premier plan par rapport à mon "ClasseurPrincipal". Après l'enregistrement de mon "FichierOuvert" et avant de le refermer, je souhaiterais agir sur l'une des feuilles de mon "ClasseurPrincipal".

C'est là que se situe mon problème. Il me faut "repasser" mon "ClasseurPrincipal" au plemier plan (ce que j'ai fait (il me semble) avec "Minimized", ensuite, je sélectionne bien la feuille concernée, mais je ne parviens pas à me positionner dessus (je dois, au départ, me placer en A4, puis sélectionner, dans cette colonne, la plage de cellule qui contient des données).
Une fois la feuille sélectionnée, sur mes commandes : Range ("A4").Select,, par exemple, je reçois le message : Erreur 1004, La méthode Select de la classe range a échoué.

Voici le "bout de code concerné" :

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
 
'En fonction de la variable FacDev, le fichier sera enregistré dans un répertoire ou un autre
 
If FacDev = "Facture" Then
    CheminFichier = ThisWorkbook.Path & "\"
    NomFichier = ActiveWorkbook.Name
    LongNomFichier = Len(NomFichier)
    NomFichier = Mid(NomFichier, 1, LongNomFichier - 4)
'
'Je sauvegarde le fichier ouvert
 
        With ActiveWorkbook
        .SaveAs Filename:=CheminFichier & NomFichier
'
'Je minimise le classeur que je viens de sauvegarder
'pour retrouver le ClasseurPrincipal
 
Application.WindowState = xlMinimized
 
            NomProgramme = ActiveWorkbook.Name
'
            If Préparateur = "Toto" Then
 
'Les deux ligne suivantes "passe bien"
 
                Workbooks(NomProgramme).Activate
                Sheets("Factures Toto").Activate
 
'C'est ici que le problème se pose. Il se produit sur les deux lignes               
 
                Range("A4").Select
                Range("A4", [A4].End(xlDown)).Select
 
'Je récupère le nombre de lignes "utilisées" dans la colonne
'puis je teste chaque cellule pour trouver celle qui porte
'le nom du fichier que j'ai rouvert et re-sauvegardé
 
                NombreLignes3 = Selection.Rows.Count
                Range("A4").Select
'
                    For i = 1 To NombreLignes3
                        If ActiveCell.Value <> NomFichier Then
                            ActiveCell.Offset(1, 0).Select
 
'Lorsque j'ai trouvé le nom du fichier, je supprime la ligne de celui-ci
 
                        Else: Selection.EntireRow.Delete
                        End If
                    Next
Voilà, j'espère avoir été assez clair.

Encore une fois, merci de votre aide pour ce problème qui, je le pense doit être d'une grande évidence pour beaucoup ...

Danad38