lire le contenu ds une cellule d un autre classeur

D

dom

Guest
Bonjour sacré forum

J´espère que tu vas bien....

J ai un tout petit pb d´écriture de code...

J´ai 1 classeur et une macro qui établit des liaisons avec d autres.

Je voudrai que ces liaisons s´établissent seulement si une des cases de l autre classeur m´indique 'Terminé'

En gros ca donne ca mon code:

If X:\\projets\\[' & Tableau(X) & ']Etat'!g50' = 'Terminé' Then

Rep. du fichier = Projets
Nom du fichier = Tableau (x) (c´est une variable pcq en fait y en a plusieurs: format 'nomfichier.xls')
Feuille = 'Etat'
Cellule = G 50


MON PB C EST QU´IL NE VALIDE PAS MON CHEMIN, JE NE SAIS PAS COMMENT L ECRIRE

j´ai bo cherché 'lien' ds les archives.. pas moyen de trouver un exemple semblable

Merci de tout aide ou conseil...+


DOM
 

JJM

XLDnaute Occasionnel
Bonjour sacré Dom, :)

Si tu nous joignais un exemplaire de ton application, ce serait sans doute mieux.
C'est quoi une variable pcq ?
Sinon il est simple de joindre des cellules appartenant à d'autres classeurs, à condition de les ouvrir avant (avec visualisation ou non).
 
D

DOM

Guest
mERCI DE TA RAPIDE REPONSE JJM

Il s agit d un pb tout simple.. JE ne souhaitais pas afficher tout mon code au risque d effrayer

voila mon code....

pcq = PARCEQUE

CONTEXTE:
- X classeurs ds le répertoire X:\\Projets\\BOUTEILLE
Ces classeurs passent entre les mains de plusieurs utilisateurs en suivant toujours le meme parcours.
Après chaque passage le fichier change d´etat. L´etat est revélé dans la cellule G50 dans la feuille ETAT de chque classeur

Le classeur contenant cette macro (CI DESSOUS) est en quelque sorte un fichier resumé de l etat de tous les classeurs se situant dans X:\\Projets\\BOUTEILLE.

J´ai juste un pb pour lire ce qu il y a dans la cellule G50

Dim X As Integer, NoFichierBouteille As Integer,
Dim Tableau() As String
Dim Direction As String
Dim Valeur As Double
Dim I As Integer
Application.ScreenUpdating = False
Direction = Dir('X:\\Projets\\BOUTEILLE\\*.xls')
Do While Len(Direction) > 0 'liste tous les classeurs du repertoire
NoFichierBouteille = NoFichierBouteille + 1
ReDim Preserve Tableau(1 To NoFichierBouteille)
Tabla(NoFichierBouteille) = Direction
Direction = Dir()
Loop

If NoFichierBouteille > 0 Then
For X = 1 To NoFichierBouteille 'boucles sur les classeurs
(synthese)

'si la cellule g50 de classeur en question contient terminé, sauter le if
If X:\\Projets\\BOUTEILLE\\[' & Tableau(X) & ']Etat'!g50' = 'Terminé' Then GoTo ici
I = I + 1
ActiveSheet.Cells(I + 4, 2).Value = '='X:\\Projets\\BOUTEILLE\\[' & Tableau(X) & ']PM'!I6'
ActiveSheet.Cells(I + 4, 3).Value = '='X:\\Projets\\BOUTEILLE\\[' & Tableau(X) & ']PM'!C41'
ActiveSheet.Cells(I + 4, 4).Value = 'BOUTEILLE'
ActiveSheet.Cells(I + 4, 5).Value = '=X:\\Projets\\BOUTEILLE\\[' & Tableau(X) & ']PM'!av104'
ActiveSheet.Cells(I + 4, 6).Value = '='X:\\Projets\\BOUTEILLE\\[' & Tableau(X) & ']Etat'!E12'
ActiveSheet.Cells(I + 4, 7).Value = '='X:\\Projets\\BOUTEILLE\\[' & Tableau(X) & ']Etat'!E14'
ActiveSheet.Cells(I + 4, 8).Value = '='X:\\Projets\\BOUTEILLE\\[' & Tableau(X) & ']Etat'!g50'
ActiveSheet.Cells(I + 4, 9).Value = '='X:\\Projets\\BOUTEILLE\\[' & Tableau(X) & ']Etat'!H50'
ActiveSheet.Cells(I + 4, 10).Value = '='X:\\Projets\\BOUTEILLE\\[' & Tableau(X) & ']Etat'!I50'
ActiveSheet.Cells(I + 4, 11).Value = '='X:\\Projets\\BOUTEILLE\\[' & Tableau(X) & ']Etat'!J50'
ActiveSheet.Cells(I + 4, 12).Value = '='X:\\Projets\\BOUTEILLE\\[' & Tableau(X) & ']Etat'!G52'

ActiveSheet.Hyperlinks.Add Anchor:=Range('m' & (I + 4)), Address:='X:\\Projets\\BOUTEILLE\\&Tableau(X),TextToDisplay:='ver fichero'


Next X
ici:
End If

End Sub


Merci encore
 

MichelXld

XLDnaute Barbatruc
bonjour Dom , bonjour JJM


la macro que tu utilises sert à insérer une formule de liaison dans une cellule


si tu souhaites vérifier que la cellule G50 est égal à 'terminé' tu dois passer par une cellule intermédiaire

....
Code:
Range('A1').Formula = '='X:\\Projets\\BOUTEILLE\\[' & Tableau(X) & ']Etat'!G50'
'...et ensuite...
If Range('A1') = 'Terminé' Then



sinon , une autre possiblité sans cellule intermédiaire

Code:
If ExecuteExcel4Macro(''X:\\Projets\\BOUTEILLE\\[' & Tableau(X) & ']Etat'!g50') = 'Terminé' Then



bonne soirée
MichelXld

Message édité par: MichelXld, à: 15/07/2005 17:08
 

JJM

XLDnaute Occasionnel
Bonsoir Dom, MichelXld,

C'est vraiment sympa, MichelXld, d'avoir répondu de façon aussi exhaustive. Je ne connaissais pas la possibilité 'ExecuteExcel4Macro' pour résoudre ce problème et je m'en servirai à l'avenir.

Bon W.E. à tous.
 
D

DOM

Guest
Bonsoir Michel, JJM

En effet comme dit JJM t as été très rapide michel.
Avec un we de repos de retard je vous remercie pour votre aide...
J´ai opté pour la 1ère solution vu que l instruction If ExecuteExcel4Macro ne passe pas...


merci sacré forum
DOM
 
D

DOM

Guest
Rebonjour Forum, Michel, JJM

Je sollicite votre attention sur un pb de vitesse d excecution de la macro.
Le programme suivant est celui d une macro situé dans un fichier dans le reseau d une entreprise. Ce fichier peut etre utilisé par tous aussi bien dans la ville A ou se situe le coeur du reseau qu´a l exterieur dans une ville annexe.
Le pb se produit lors de l excecution du fichier dans une ville annexe.
Le delai est interminable et peut necessiter jusqua 1 h pour s executer.
en effet chacune des lignes des codes (vert) prends une 30taine de seconde pour se mettre en action.
Ce que je voudrais savoir est si par une autre fonction le delai peut se reduire. ou si le pb est du au réseau et ce qu´il me reste à faire est de trouver une autre tactique..

Option Explicit
Option Base 1
Sub actualización_Etat_proyectos()
Dim X As Integer, NoFichierBouteille As Integer, NoFichierPot As Integer, Y As Integer
Dim Tableau() As String
Dim Direction As String
Dim Valeur As Double
Dim I As Integer
Application.ScreenUpdating = False
Direction = Dir('X:\\Modeles\\BOUTEILLE\\*.xls')
Do While Len(Direction) > 0 'liste tous les classeurs du repertoire
NoFichierBouteille = NoFichierBouteille + 1
ReDim Preserve Tableau(1 To NoFichierBouteille)
Tableau(NoFichierBouteille) = Direction
Direction = Dir()
Loop

If NoFichierBouteille > 0 Then
For X = 1 To NoFichierBouteille 'boucles sur les classeurs
' pour ne pas prendre en compte le classeur contenant la macro (synthese)

If Tableau(X) <> 'Inicio_Desarollo_Modelo.xls' Then
ActiveSheet.Cells(2, 16).Formula = '='X:\\MODELES\\BOUTEILLE\\[' & Tableau(X) & ']Etat'!G50'
If ActiveSheet.Range('p2') = 'Terminado' Then GoTo suivant

I = I + 1

ActiveSheet.Cells(I + 4, 2).Value = '='X:\\MODELES\\BOUTEILLE\\[' & Tableau(X) & ']PM'!I6' ActiveSheet.Cells(I + 4, 3).Value = '='X:\\MODELES\\BOUTEILLE\\[' & Tableau(X) & ']PM'!C41'
ActiveSheet.Cells(I + 4, 4).Value = '='X:\\MODELES\\BOUTEILLE\\[' & Tableau(X) & ']Estandares'!D20'
ActiveSheet.Cells(I + 4, 5).Value = '='X:\\MODELES\\BOUTEILLE\\[' & Tableau(X) & ']Moldes'!E27'
ActiveSheet.Cells(I + 4, 6).Value = 'BOUTEILLE'
ActiveSheet.Cells(I + 4, 7).Value = '='X:\\MODELES\\BOUTEILLE\\[' & Tableau(X) & ']PM'!av104'
ActiveSheet.Cells(I + 4, 8).Value = '='X:\\MODELES\\BOUTEILLE\\[' & Tableau(X) & ']Etat'!E12'
ActiveSheet.Cells(I + 4, 9).Value = '='X:\\MODELES\\BOUTEILLE\\[' & Tableau(X) & ']Etat'!E14'
ActiveSheet.Cells(I + 4, 10).Value = '='X:\\MODELES\\BOUTEILLE\\[' & Tableau(X) & ']Etat'!g50'
ActiveSheet.Cells(I + 4, 11).Value = '='X:\\MODELES\\BOUTEILLE\\[' & Tableau(X) & ']Etat'!H50'
ActiveSheet.Cells(I + 4, 12).Value = '='X:\\MODELES\\BOUTEILLE\\[' & Tableau(X) & ']Etat'!I50'
ActiveSheet.Cells(I + 4, 13).Value = '='X:\\MODELES\\BOUTEILLE\\[' & Tableau(X) & ']Etat'!J50'
ActiveSheet.Cells(I + 4, 14).Value = '='X:\\MODELES\\BOUTEILLE\\[' & Tableau(X) & ']Etat'!G52'
ActiveSheet.Hyperlinks.Add Anchor:=Range('O' & (I + 4)), Address:='X:\\Modeles\\BOUTEILLE\\' & Tableau(X), TextToDisplay:='ver Fichier'

End If
suivant:
Next X

End If

Merci de votre attention et de vos conseils par avance

DOM
 

Discussions similaires

Statistiques des forums

Discussions
312 234
Messages
2 086 470
Membres
103 226
dernier inscrit
smail12