Fonction si multiple en vba

Résolu/Fermé
Akatsucki Messages postés 90 Date d'inscription jeudi 1 octobre 2020 Statut Membre Dernière intervention 16 décembre 2021 - Modifié le 12 oct. 2020 à 06:12
yg_be Messages postés 22724 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 25 avril 2024 - 19 oct. 2020 à 21:23
Bonjour,

Étant novice en programmation je recherche de l’aide pour mon code vba ...
Je souhaiterais lors du lancement de ma macro ouvrir un fichier selon une cellule référence A1 qui varie, puis le refermer.. mais il ce peut aussi que ce fichier soit déjà ouvert sur mon bureau donc j’aimerais le réouvrir et le laisser ouvert

Bref j’espère avoir était assez clair

Pour le moment j’ai un début de code mais pas vraiment optimal


Merci d’avance
A voir également:

4 réponses

jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
12 oct. 2020 à 06:59
Bonjour
Merci de partager ton code correctement en utilisant les balises de code
Explications à lire entièrement disponibles ici :

https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code

.
0
Akatsucki Messages postés 90 Date d'inscription jeudi 1 octobre 2020 Statut Membre Dernière intervention 16 décembre 2021
12 oct. 2020 à 08:19
J’aimerais bien pouvoir pouvoir partager mon code mais je suis au travail et je n’est pas l’autorisation d’utiliser internet sur le PC
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650 > Akatsucki Messages postés 90 Date d'inscription jeudi 1 octobre 2020 Statut Membre Dernière intervention 16 décembre 2021
12 oct. 2020 à 11:50
Tu arrives bien à nous envoyer des messages non ? (depuis ton smartphone je suppose... )
Donc, tu réécris le code depuis ton tel... ou alors tu te l'envois par mail puis tu nous le copie/colle depuis ton tel...
bref...
Le code, il se partage en "text" et non en image.... sinon c'est inexploitable pour nous !
0
yg_be Messages postés 22724 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 25 avril 2024 1 476
12 oct. 2020 à 07:22
bonjour,
peut-être:
dim classeur as workbook, chemin as string
chemin = "" '...
set classeur=workbooks.open(chemin)
'...
classeur.close
0
Akatsucki Messages postés 90 Date d'inscription jeudi 1 octobre 2020 Statut Membre Dernière intervention 16 décembre 2021
Modifié le 12 oct. 2020 à 08:28
Cela sert à ouvrir et fermer uniquement ??
0
yg_be Messages postés 22724 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 25 avril 2024 1 476 > Akatsucki Messages postés 90 Date d'inscription jeudi 1 octobre 2020 Statut Membre Dernière intervention 16 décembre 2021
12 oct. 2020 à 09:57
l'exemple, en effet, ne fait qu'ouvrir et fermer.
0
Akatsucki Messages postés 90 Date d'inscription jeudi 1 octobre 2020 Statut Membre Dernière intervention 16 décembre 2021
12 oct. 2020 à 17:32
J'ai taper le plus important :)

Sub actualisé()

With thisworkbook

If sheets("stock cein ”).range("s1") ="poste 1” then
Workbooks.open filename:="Q:\deprog\.fichier1..xlsm”, readonly:=1, updatelinks:=0

If sheets("stock cein ”).range("s1") ="poste 2” then
Workbooks.open filename:="Q:\deprog\.fichier2..xlsm”, readonly:=1, updatelinks:=0

If sheets("stock cein ”).range("s1") ="poste 3” then
Workbooks.open filename:="Q:\deprog\.fichier3..xlsm”, readonly:=1, updatelinks:=0

.refreshAll

Windows("fichiers1.xlms").close savechanges:= false
Windows("fichiers2.xlms").close savechanges:= false
Windows("fichiers3.xlms").close savechanges:= false

End if
End With

End sub 
0
yg_be Messages postés 22724 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 25 avril 2024 1 476
12 oct. 2020 à 19:46
alors peut-être ainsi:
Sub actualisé()
Dim classeur As Workbook, chemin As String
Select Case ThisWorkbook.Sheets("stock cein ").Range("s1")
    Case "poste 1"
        chemin = "Q:\deprog\.fichier1.xlsm"
    Case "poste 2"
        chemin = "Q:\deprog\.fichier2.xlsm"
    Case "poste 3"
        chemin = "Q:\deprog\.fichier3.xlsm"
End Select

Set classeur = Workbooks.Open(Filename:=chemin, ReadOnly:=1, UpdateLinks:=0)
ThisWorkbook.RefreshAll
classeur.Close

End Sub
0
Akatsucki Messages postés 90 Date d'inscription jeudi 1 octobre 2020 Statut Membre Dernière intervention 16 décembre 2021 > yg_be Messages postés 22724 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 25 avril 2024
12 oct. 2020 à 20:06
Merci je vais tester ce code et je reviens vers vous pour vous confirmer si ça fonctionne

Par curiosité vous seriez aussi comment coder si le fichier voulu et déjà ouvert je reçois un message d’erreur( fichier déjà ouvert voulez vous le réouvrir), je voudrais donc le réouvrir dans le fermer merci d’avance si vous prenez du temps pour trouver la solution
0
yg_be Messages postés 22724 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 25 avril 2024 1 476 > Akatsucki Messages postés 90 Date d'inscription jeudi 1 octobre 2020 Statut Membre Dernière intervention 16 décembre 2021
12 oct. 2020 à 21:47
quand tu écris "je voudrais donc le réouvrir dans le fermer", que signifie "dans"?
quel est l'utililité de rouvrir un fichier déjà ouvert?
0
Akatsucki Messages postés 90 Date d'inscription jeudi 1 octobre 2020 Statut Membre Dernière intervention 16 décembre 2021 > yg_be Messages postés 22724 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 25 avril 2024
Modifié le 13 oct. 2020 à 05:05
Autant pour moi c’est une erreur de frappe le « dans » signifie SANS le refermer

Enfaite j’ai des formules dans un fichier principal qui récupère des données dans ces fichiers secondaire. Seulement j’ai un collègue qui travail avec ce fichier et change des valeurs pour faire une programmation pour le poste suivant...donc je dois ouvrir constamment ce fichier pour que mes données ce mettent a jour sinon ils ce mettent en défaut par #VALEUR!

J’espère avoir était assez clair :)
0
Akatsucki Messages postés 90 Date d'inscription jeudi 1 octobre 2020 Statut Membre Dernière intervention 16 décembre 2021 > Akatsucki Messages postés 90 Date d'inscription jeudi 1 octobre 2020 Statut Membre Dernière intervention 16 décembre 2021
13 oct. 2020 à 07:57
J’ai réussi à faire fonctionner ton code mais il me reste le cas ou le fichier et déjà ouvert ... il me demande de le réouvrir
0
Akatsucki Messages postés 90 Date d'inscription jeudi 1 octobre 2020 Statut Membre Dernière intervention 16 décembre 2021
13 oct. 2020 à 13:39
Salut merci d’avoir pris du temps pour ma macro

Je reçois un déboggage a la ligne 11 : classeurouvert = dejaouvert (chemin)

Si tu vois le soucis ????????‍♂️
0
yg_be Messages postés 22724 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 25 avril 2024 1 476
13 oct. 2020 à 14:17
quel message d'erreur?
0
Akatsucki Messages postés 90 Date d'inscription jeudi 1 octobre 2020 Statut Membre Dernière intervention 16 décembre 2021 > yg_be Messages postés 22724 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 25 avril 2024
13 oct. 2020 à 15:31
Je ne suis plus au travail je vous tiens informé demain
0
Akatsucki Messages postés 90 Date d'inscription jeudi 1 octobre 2020 Statut Membre Dernière intervention 16 décembre 2021 > yg_be Messages postés 22724 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 25 avril 2024
14 oct. 2020 à 07:27
On faite ta macro fonctionne si je n’est pas de fichier ouvert, mais si j’ai déjà un fichier ouvert il me met ce message

Alors le message d’erreur est :

Erreur d’exécution ´438´:
Propriété ou méthode non gérée par cet objet

Et donc debogage

0
Akatsucki Messages postés 90 Date d'inscription jeudi 1 octobre 2020 Statut Membre Dernière intervention 16 décembre 2021 > yg_be Messages postés 22724 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 25 avril 2024
14 oct. 2020 à 09:45
J’ai enlevé ce code et ça marche

Maintenant mon soucis c’est que je reçois la demande si je veux réouvrir le fichier quand je l’ai déjà ouvert sur le bureau

Et l’autre chose c’est qu’il ce place sur le fichier qu’on rouvre alors que je voudrais rester sur ma page ou j’ai le bouton de ma macro
0
yg_be Messages postés 22724 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 25 avril 2024 1 476 > Akatsucki Messages postés 90 Date d'inscription jeudi 1 octobre 2020 Statut Membre Dernière intervention 16 décembre 2021
14 oct. 2020 à 11:31
tu n'expliques pas ce que tu as enlevé.
ceci devrait mieux fonctionner:
Sub actualisé()
Dim classeur As Workbook, chemin As String, garderouvert As Boolean
Select Case ThisWorkbook.Sheets("stock cein ").Range("s1")
    Case "poste 1"
        chemin = "Q:\deprog\.fichier1.xlsm"
    Case "poste 2"
        chemin = "Q:\deprog\.fichier2.xlsm"
    Case "poste 3"
        chemin = "Q:\deprog\.fichier3.xlsm"
End Select
If dejaouvert(chemin) Then
    Workbooks(chemin).Close
    garderouvert = True
Else
    garderouvert = False
End If
Set classeur = Workbooks.Open(Filename:=chemin, ReadOnly:=1, UpdateLinks:=0)
ThisWorkbook.RefreshAll
If Not garderouvert Then
    classeur.Close
Else
    ThisWorkbook.Activate
End If
End Sub
Private Function dejaouvert(chemin) As Boolean
Dim wb As Workbook
For Each wb In Workbooks
    If wb.FullName = chemin Then
        dejaouvert = True
        Exit Function
    End If
Next wb
dejaouvert = False
End Function
0