Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1328 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  [Excel VBA] Piloter un classeur

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Excel VBA] Piloter un classeur

n°1377352
Skarn
Posté le 30-05-2006 à 10:59:15  profilanswer
 

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.

mood
Publicité
Posté le 30-05-2006 à 10:59:15  profilanswer
 

n°1377365
galopin01
Posté le 30-05-2006 à 11:12:27  profilanswer
 

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+


Message édité par galopin01 le 30-05-2006 à 11:29:24

---------------
roger
n°1377388
Skarn
Posté le 30-05-2006 à 11:31:51  profilanswer
 

OK galopin01,
J'essaie ça et je donne un retour dès que possible.
Merci.

n°1377434
Skarn
Posté le 30-05-2006 à 12:09:19  profilanswer
 

Le nom du nouveau classeur est dynamique.
Voilà mon code d'ouverture du fichier.

Code :
  1. Sub OuvrirFichier()
  2.     Application.Workbooks.Open (Application.GetOpenFilename())
  3. End Sub


Comment récupérer le nom de mon fichier?
Merci.

n°1377493
galopin01
Posté le 30-05-2006 à 13:29:15  profilanswer
 

Sub test()
z = Application.GetOpenFilename()
MsgBox z
Application.Workbooks.Open z
End Sub


---------------
roger
n°1377620
Skarn
Posté le 30-05-2006 à 15:21:02  profilanswer
 

scusi, encore un souci. Commen t accéder à la valeur d'une cellule.
Actuellement j'ai le code suivant

Code :
  1. Sub MiseAZero()
  2. Dim iDerniereLigne, iDernièreColonne, iLigne, iColonne As Integer
  3. iDerniereLigne = ActiveSheet.UsedRange.Rows.Count
  4. iDernièreColonne = ActiveSheet.UsedRange.Columns.Count
  5. iLigne = 2
  6. For iColonne = 3 To iDernièreColonne Step 1
  7.     If (Cells(iLigne, iColonne).Value <> 0) Then
  8.         Cells(iLigne, iColonne).Value = 0
  9.     End If
  10. Next
  11. End Sub


Mais j'ai une erreur d'exécution 13 Type incompatible. sur la ligne

Code :
  1. If (Cells(iLigne, iColonne).Value <> 0) Then

.
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.


Message édité par Skarn le 30-05-2006 à 15:29:23
n°1377627
galopin01
Posté le 30-05-2006 à 15:31:14  profilanswer
 

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+


Message édité par galopin01 le 30-05-2006 à 15:49:10

---------------
roger
n°1377634
Skarn
Posté le 30-05-2006 à 15:42:11  profilanswer
 

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.

n°1377654
Skarn
Posté le 30-05-2006 à 16:16:32  profilanswer
 

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.

n°1377680
Skarn
Posté le 30-05-2006 à 16:53:58  profilanswer
 

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.


Message édité par Skarn le 30-05-2006 à 16:56:31
mood
Publicité
Posté le 30-05-2006 à 16:53:58  profilanswer
 

n°1377685
tegu
Posté le 30-05-2006 à 17:02:05  profilanswer
 

Pour toi la fonction CDbl() devrait aller.

n°1377736
galopin01
Posté le 30-05-2006 à 18:42:32  profilanswer
 

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+


Message édité par galopin01 le 30-05-2006 à 18:43:49

---------------
roger

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  [Excel VBA] Piloter un classeur

 

Sujets relatifs
macro excel pour copier et trier des colonnes : aide débutantcomment vérifier si une feuille du classeur est déjà existante
VBA - Coller dans la ligne vierge[VB / VBA] Envoyer une facture PDF par Email?
[VBA] Identifier date la + proche de la fin de mois[Excel] Prend des initiatives malheureuses ?
besoin d'aide projet vba sous excel (finance)(VBA Excel)recopier liste perso dans une formule
interdire la modification d'une feuille excel sauf avec userform 
Plus de sujets relatifs à : [Excel VBA] Piloter un classeur


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR