[VBA][Excel] modif- selection onglet source.[résolu]

modif- selection onglet source.[résolu] [VBA][Excel] - VB/VBA/VBS - Programmation

Marsh Posté le 30-04-2013 à 13:43:27    

Bonjour à tous!
 
alors voila mon problème. je travail sur un fichier excel qui analyse des données de retour garanti (Projet suivi garantie.xls). la première étape c'est de récupérer les données.  
 
le fichier source (Compilation Audi 09-2007 à aujourd'hui.xls) contient plusieurs onglets qui correspondent à différent produits.(D4/C7/MQB/Au716)
 
j'ai donc, dans la feuille2 de "Projet suivi garantie.xls" une zone nommé "produits-Audi" utilisé pour faire une liste déroulante de choix sur la feuille1  
j'ai nommé cette cellule "choix_pdt".  
 
je voudrais donc modifier mon code pour qu'il utilise la valeur enregistré dans choix_pdt pour copier les données depuis l'onglet correspondant.  
 
 
j'ai utilisé l'enregistreur de macro pour obtenir ceci.  
"= tentative de modif infructueuse.
 

Code :
  1. Sub Macro1()
  2. '
  3. ' Macro1 Macro
  4. ' enregistre les valeurs de la base de donnée
  5. "dim CP as variant
  6. "CP = choix_pdt
  7.     Windows("Compilation Audi 09-2007 à aujourd'hui.xls" ).Activate
  8.     Sheets("D4" ).Select "Sheets("CP" ).Select
  9.     Columns("O:S" ).Select
  10.     Selection.Copy
  11.     Windows("Projet suivi garantie.xls" ).Activate
  12.     Sheets("Feuil2" ).Select
  13.     Range("B1" ).Select
  14.     ActiveSheet.Paste
  15.   End Sub


 
j'ai un bug dès la deuxième ligne,
Sheets("CP" ).Select  
quel est la marche à suivre pour qu'excel comprenne que CP contient le nom de l'onglet qu'il doit viser?
 
merci pour les conseils!


Message édité par larmabak le 06-05-2013 à 16:13:11
Reply

Marsh Posté le 30-04-2013 à 13:43:27   

Reply

Marsh Posté le 30-04-2013 à 15:24:07    


           Bonjour.
 
           Tout ce qui est entre guillemets est seulement du texte et ne représente donc pas une variable …
 

Reply

Marsh Posté le 30-04-2013 à 15:38:30    

Marc L a écrit :


           Bonjour.
 
           Tout ce qui est entre guillemets est seulement du texte et ne représente donc pas une variable …
 


 merci Marc pour ta réponse.  
j'ai donc enlevé les guillemets,  
 

Code :
  1. Sheets(CP).Select


 
mais il y a une erreure d'execution '9' l'indice n'appartient pas à la sélection.  
 
je dois faire une déclaration spéciale de CP ?

Reply

Marsh Posté le 30-04-2013 à 15:45:41    

 
           Pas obligé.
 
           Non cela veut juste dire que le contenu CP ne correspond pas à une feuille existante ...
 
           Exemple pour une feuille nommée Projet :   CP = "Projet"
 

Reply

Marsh Posté le 30-04-2013 à 16:09:41    

choix_pdt est le nom d'une cellule que je rempli par une séléction dans une liste déroulante. la liste correspond aux noms de feuilles excel du fichier source.  
 

Code :
  1. CP = choix_pdt


avec ça la variable CP doit avoir enregistré la valeur contenu dans la cellule choix_pdt normalement, non?  
 
j'avais fait le choix de la liste déroulante pour que l'utilisateur ne puisse pas faire de fautes d'écriture, et justement éviter les erreurs que j'obtiens.
 
edit:  
bon du coup j'ai une idée qui germe dans ma tête, ça serait de faire un test sur choix_pdt, il y a 4 produit donc en 3 test on peut résoudre le problème. mais si il y a de nouveaux produits, ce code serait moins facilement adaptable. donc utiliser directement la cellule avec liste déroulante serait ma meilleure solution.  


Message édité par larmabak le 30-04-2013 à 16:34:26
Reply

Marsh Posté le 30-04-2013 à 16:42:48    

 
           Normal car tel quel, choix_pdt est prise pour une variable au lieu d'une cellule nommée ‼
 
           Il faut faire attention à bien qualifier les objets …
 
                      CP = Range("choix_pdt" )          ou bien encore           CP = [choix_pdt]
 

Reply

Marsh Posté le 30-04-2013 à 17:16:35    

Merci!  
maintenant que je donne correctement une valeur à CP, la suite ne pause plus de problème.  
 
encore merci

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed