Fonction si multiple en vba
Résolu
Akatsucki
Messages postés
90
Date d'inscription
Statut
Membre
Dernière intervention
-
yg_be Messages postés 23541 Date d'inscription Statut Contributeur Dernière intervention -
yg_be Messages postés 23541 Date d'inscription Statut Contributeur Dernière intervention -
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
É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:
- Si.multiple ne fonctionne pas
- Fonction si et - Guide
- Ecran multiple pc - Guide
- Excel cellule choix multiple - Guide
- Copier coller multiple - Guide
- Fonction miroir - Guide
4 réponses
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
.
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
.
yg_be
Messages postés
23541
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 584
bonjour,
peut-être:
peut-être:
dim classeur as workbook, chemin as string chemin = "" '... set classeur=workbooks.open(chemin) '... classeur.close
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
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
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
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
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 :)
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 :)
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 ????????♂️
Je reçois un déboggage a la ligne 11 : classeurouvert = dejaouvert (chemin)
Si tu vois le soucis ????????♂️
tu n'expliques pas ce que tu as enlevé.
ceci devrait mieux fonctionner:
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
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 !