Fermeture ou fichier excel en arrière plan

Résolu/Fermé
Shana00 Messages postés 87 Date d'inscription lundi 21 juillet 2014 Statut Membre Dernière intervention 14 octobre 2015 - Modifié par Shana00 le 22/07/2014 à 15:03
Shana00 Messages postés 87 Date d'inscription lundi 21 juillet 2014 Statut Membre Dernière intervention 14 octobre 2015 - 23 juil. 2014 à 16:24
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
A voir également:

1 réponse

Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 779
22 juil. 2014 à 23:25
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, ... )
0
Shana00 Messages postés 87 Date d'inscription lundi 21 juillet 2014 Statut Membre Dernière intervention 14 octobre 2015
23 juil. 2014 à 11:00
Même avec
Thisworkbook.Activate
, il reste sur le classeur ouvert avec
Set wb = Workbooks.Open(cheminComplet)
, du coup la macro s'arrête a cette ligne et ne va pas jusqu'à Thisworkbook.Activate
0
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 779
23 juil. 2014 à 15:20
« du coup la macro s'arrête » C'est à dire ?????
Il y a une erreur ???, Elle se bloque ????, Elle rend la main ????
0
Shana00 Messages postés 87 Date d'inscription lundi 21 juillet 2014 Statut Membre Dernière intervention 14 octobre 2015
23 juil. 2014 à 15:28
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
0
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 779
23 juil. 2014 à 15:58
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
0
Shana00 Messages postés 87 Date d'inscription lundi 21 juillet 2014 Statut Membre Dernière intervention 14 octobre 2015
23 juil. 2014 à 16:09
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
0