Piloter un classeur [Excel VBA] - VB/VBA/VBS - Programmation
Marsh Posté le 30-05-2006 à 11:12:27
bonjour,
par exemple :
Workbooks("MonBeauClasseur" ).Worksheets("blabla" ).Range("A1:B12" ).Copy Workbooks("pilote" ).Worksheets("destination" ).Range(cible)
(non vérifié et de mémoire...)
ou encore :
With Workbooks("MonBeauClasseur" ).Worksheets("blabla" )
.Range(truc).Value = MaVar1USF
.Range(autre).Value = MaVar2USF
End With
(Toujours codé avec le pied !)
Nota : cible, truc et autre sont censées être des cellules nommées...
A+
Marsh Posté le 30-05-2006 à 11:31:51
OK galopin01,
J'essaie ça et je donne un retour dès que possible.
Merci.
Marsh Posté le 30-05-2006 à 12:09:19
Le nom du nouveau classeur est dynamique.
Voilà mon code d'ouverture du fichier.
Code :
|
Comment récupérer le nom de mon fichier?
Merci.
Marsh Posté le 30-05-2006 à 13:29:15
Sub test()
z = Application.GetOpenFilename()
MsgBox z
Application.Workbooks.Open z
End Sub
Marsh Posté le 30-05-2006 à 15:21:02
scusi, encore un souci. Commen t accéder à la valeur d'une cellule.
Actuellement j'ai le code suivant
Code :
|
Mais j'ai une erreur d'exécution 13 Type incompatible. sur la ligne
Code :
|
.
Peut-être faut-il préciser quelque chose avant "Cell"...Je rappelle que la cellule visée appartient à un classeur différent de celui d'où le code est exécuté.
Si vous avez besoin que je sois plus clair, n'hésitez pas.
Merci.
Marsh Posté le 30-05-2006 à 15:31:14
perso je n'utiliserais pas ActiveSheet ou ActiveWorkbook avec plusieurs classeurs ouverts. Trop nébuleux...
Mais l'erreur
Utilise la syntaxe complète Workbook(".." ).Worksheets(".." ).Cells(...)
Essaie d'intercaler un :
MsgBox iDerniereLigne
MsgBox iDernièreColonne
à la ligne 7 pour vérifier le contenu de tes variables
J'ai l'impression que tu ne pointes pas sur "LaBonneFeuille"
A+
Marsh Posté le 30-05-2006 à 15:42:11
Pas de problème. Je cherche aussi... J'ai récupéré le nom de mon fichier au cas où il faudrait l'indiquer dans une méthode particulière de récupération du contenu d'une cellule.
Ce qui m'étonne, c'est que la méthode ActiveSheet.UsedRange.Columns.Count fonctionne correctement donc je travaille bien dans le bon classeur. Je ne vois donc pas pourquoi il ne trouve pas ma Cell. Le truc, c'est que la valeur de ma cellule est "0". Au moment de l'exécution, elle passe à "0.000"... J'ai essayé de voir si je pouvais récupérer cette valeur après modification dans une variable Double, mais la même erreur apparaît.
Marsh Posté le 30-05-2006 à 16:16:32
le "." transformerait mon chiffre en string... J'essaie de recaster la valeur de chaque cellule mais j'obtiens une erreur '1004'. Je cherche encore...
Si vous avez des idées, elles seront les bienvenues.
Merci.
Marsh Posté le 30-05-2006 à 16:53:58
Une 'tite question, comment convertir une chaîne "0,000" en double? J'ai remplacé le "." par "," afin de coller à la norme française des décimales, mais je dois maintenant obtnir la valeur numérique de ma chaine de caractère. J'ai essayé la fonction Val(), mais elle me tronque mes chiffres (-0.954 devient 0).
Merci.
Marsh Posté le 30-05-2006 à 18:42:32
J'ai du m'absenter un moment donc j'ai sauté une partie du fil.
J'ai essayé de reprendre. La difficulté est que avec cette instruction :
If (Cells(iLigne, iColonne).Value <> 0) Then
je n'arrive pas à produire une erreur 13
Donc j'ai un peu de mal à rembrayer dans ton histoire
Cette syntaxe est valable quel que soit le classeur cible.
Deplus si tu as une erreur d'exécution sur cete ligne je ne vois pas comment la valeur de cette cellule peut changer.
Quand aux valeurs des cellules c'est une autre histoire et ça n'a rien à voir.
Il faut que tu précises mieux, que tu donnes un code intégral et non un résumé.
Et la ligne exacte ou le débogueur t'arrête si on veut avancer.
Une observation qui n'est peut-être pas bien loin de la source de tes problèmes : Je rappelle qu'en VBA dans cette ligne :
Dim iDerniereLigne, iDernièreColonne, iLigne, iColonne As Integer
...seul iColonne est integer les autres variables sont Variant
Il serait souhaitable que tes variables soient toutes typées.
Sinon pour l'instant je suis dans l'impasse.
A+
Marsh Posté le 30-05-2006 à 10:59:15
Bonjour,
Pour une application Excel, je voudrais piloter un classeur à partir d'un autre classeur.
J'ai créé un userform qui se lance au démarrage. Ce userform ouvre un autre fichier Excel (classeur) et c'est sur ce nouveau classeur que je dois appliquer mon code codé dans mon userform. Le problème, est que je ne sais pas comment piloter le nouveau classeur.
Pourriez-vous m'aider.
D'avance merci.