Menu

Fermeture ou fichier excel en arrière plan [Résolu/Fermé]

Messages postés
87
Date d'inscription
lundi 21 juillet 2014
Statut
Membre
Dernière intervention
14 octobre 2015
-
Bonjour,
Je dois aller piocher des valeurs d'un excel pour les mettre dans un autre sauf que pour aller piocher les valeurs je dois ouvrir le excel , j'aurai voulu que le excel s'ouvre et se faire ou alors qu'il se mette en arrière plan , avec mon code ça ouvre le excel directement sur mon écran

Apres j'aurai une question par rapport a mon travail et qui a rien avoir avec le sujet , en faite les cases que je vais récupérer sont toujours au même endroit mais admettons la personne insert une ligne ou une colonne sans faire exprès du coup la valeur serai decaller et sa ne serai pu la bonne valeur qui est reporté sur le tableau global , il y a une solution pour régler ce problème ?
Je suis désolé je débute en VBA excel et merci pour ceux qui vont répondre



Dim a As Integer
Dim Feuille As String
Dim fin As String
Dim i As Integer
Dim NomFic As String
Dim cheminComplet As String
Dim wb As Workbook



cheminComplet = Application.GetOpenFilename

Set wb = Workbooks.Open(cheminComplet)

NomFic = Split(cheminComplet, "\")(UBound(Split(cheminComplet, "\")))




a = 43
fin = Workbooks(NomFic).Sheets.Count

For i = 1 To fin




Feuille = Workbooks(NomFic).Sheets(i).Name



Cells(a, 18).FormulaR1C1 = "='[" & NomFic & "]" & Feuille & "'!R29C17"
Cells(a, 19).FormulaR1C1 = "='[" & NomFic & "]" & Feuille & "'!R38C11"
Cells(a, 20).FormulaR1C1 = "='[" & NomFic & "]" & Feuille & "'!R67C14"
Cells(a, 21).FormulaR1C1 = "='[" & NomFic & "]" & Feuille & "'!R67C15"
Cells(a, 23).FormulaR1C1 = "='[" & NomFic & "]" & Feuille & "'!R17C17"
Cells(a, 24).FormulaR1C1 = "='[" & NomFic & "]" & Feuille & "'!R18C17"
Cells(a, 36).FormulaR1C1 = "='[" & NomFic & "]" & Feuille & "'!R26C17"
Cells(a, 37).FormulaR1C1 = "='[" & NomFic & "]" & Feuille & "'!R21C17"
Cells(a, 40).FormulaR1C1 = "='[" & NomFic & "]" & Feuille & "'!R100C9"

a = a + 1

Next i



End Sub
Afficher la suite 

1 réponse

Messages postés
7722
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
23 avril 2019
1158
0
Merci
Bonjour,

1.1 - pour réactiver le fichier contenant la macro (et donc passer le fichier ouvert en arrière plan) :
après la ligne :
Set wb = Workbooks.Open(cheminComplet)
.
écrire :
Thisworkbook.Activate
.

1.2 - pour fermer le fichier ouvert (sans le modifier) :
wb.Saved = True
wb.Close


2 - il existe peut-être un solution, mais il faudrait savoir comment tu peux identifier la position de la donnée à copier lorsque des lignes et/ou des colonnes sont insérées (libellé de donnée, titre de colonne, ... )
Patrice33740
Messages postés
7722
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
23 avril 2019
1158 -
« du coup la macro s'arrête » C'est à dire ?????
Il y a une erreur ???, Elle se bloque ????, Elle rend la main ????
Shana00
Messages postés
87
Date d'inscription
lundi 21 juillet 2014
Statut
Membre
Dernière intervention
14 octobre 2015
-
En gros dès que la fenêtre s'ouvre avec le set wb , je n'ai pas de message d'erreur rien du tout mais la macro ne continue pas j'ai l'impression
Patrice33740
Messages postés
7722
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
23 avril 2019
1158 -
Ton code n'est pas limpide !

En programmation, plus on est rigoureux, moins on a de problème !

Quand tu écris :
Cells(a, 18).FormulaR1C1 = ...;
Excel ne sait pas forcement où se situe la cellule dans laquelle tu veux écrire !
Quelque chose comme :
Thisworkbook.Worksheets(1).Cells(a, 18).FormulaR1C1 = ...;
serait moins incertain.

D'autre part, tu emploies sheet à la place de worksheet, sheet représente une feuille du classeur qui n'est pas forcément une feuille de calcul, c'est à dire qu'elle ne contient pas forcément des Cells !!!

Aussi, tu définis wb mais tu ne t'en sert pas, il serait plus simple d'écrire :
NomFic = wb.Name
ou encore
Feuille = wb.Sheets(i).Name

Patrice
Shana00
Messages postés
87
Date d'inscription
lundi 21 juillet 2014
Statut
Membre
Dernière intervention
14 octobre 2015
-
J'ai changé comme tu l'as dit mais apparemment quand il met en 1er plan le classeur le reste de la macro continue pas du coup on peut changé tout le code pu rien ne s'exécute même si il y a un problème , c'est vraiment bizarre , on peut pas ouvrir la macro en mettant le classeur qui s'ouvre en arrière plan peut être ça réglerai le problème ?

Je commence a peine le VBE du coup les workbook , worksheet et sheet defois j'ai du mal
Shana00
Messages postés
87
Date d'inscription
lundi 21 juillet 2014
Statut
Membre
Dernière intervention
14 octobre 2015
-
Si je lance a partir du module ça fonctionne , mais si je lance a partir du ctrl + g ( touche que j'ai défini ) ça fonctionne pas , j'ai mis un bouton et ça fonctionne , bizarre mais bon ça fonctionne surement grâce a tes code , merci a toi !