Problème avec une variable texte

Aurore3555 Messages postés 4 Date d'inscription mardi 9 novembre 2010 Statut Membre Dernière intervention 6 janvier 2011 - 5 janv. 2011 à 11:46
Aurore3555 Messages postés 4 Date d'inscription mardi 9 novembre 2010 Statut Membre Dernière intervention 6 janvier 2011 - 5 janv. 2011 à 14:06
Bonjour,
j'ai un problème avec ma macro VBA. J'ai crée un bon de commande et une liste déroulante avec le nom de mes fournisseurs. A partir de cette liste, je voudrais quand je clique sur un bouton, afficher une nouvelle feuille pour mon bon de commande et afficher les données de mon fournisseurs. En gros, je n'arrive pas dans ma macro à lui faire comprendre que ma variable est dans la liste déroulante. Bref, je suis partie sur l'idée que ca ressemblait à ça :
Dim mavar As String
mavar = Range("G13")
If mavar = "Fourn1" Then
Sheets("Fourn1").Select
Range("I11:I13").Select
Selection.Copy
Sheets("Bon de commande").Select
ActiveSheet.Paste

Et je continue pour mes autres fournisseurs.

Comment puis-je faire?
Merci d'avance

5 réponses

bigfish_le vrai Messages postés 1835 Date d'inscription vendredi 13 mai 2005 Statut Membre Dernière intervention 20 novembre 2013 15
5 janv. 2011 à 13:16
Salut,

déjà t'es pas dans le bon thème pour le VBA c'est ici : http://www.vbfrance.com/forum/theme-VBA_244.aspx

pas la peine de re poster on continu ici.

Évite les selects qui ne servent à rien dans ton cas. Ensuite prend l'habitude de spécifier la propriété de l'objet que tu veux utiliser. Je m'explique

Une cellule est un objet de type Range qui a plusieurs propriétés comme sa valeur, sa police, couleur de fond etc.
Si tu ne spécifies pas la propriété le vba ne sais pas ce que tu veux même si il essai d'interpréter ton besoin. Donc source de probleme.

mes remarques:

Dim mavar As String
mavar = Range("G13") 'ici mavar attend une valeur de type string
If mavar = "Fourn1" Then 'pourquoi un if pour passer à la suite alors que G13 contiendra toujours le nom de la feuille source
Sheets("Fourn1").Select 'pourquoi ne pas utiliser la variable mavar puisqu'elle contient déjà le nom de la feuille source
Range("I11:I13").Select 
Selection.Copy
Sheets("Bon de commande").Select 'oui mais vers quelle cellule ?
ActiveSheet.Paste 

ma version:
Dim mavar As String
mavar = Range("G13").Text 'mavar attend une valeur de type string donc autan lui donner en direct
Sheets(mavar).Range("I11:I13").Copy destination:=Sheets("Bon de commande").Range("A1") 'je ne connais pas la cellule de destination j'utilise A1 pour la demo


A+
0
Aurore3555 Messages postés 4 Date d'inscription mardi 9 novembre 2010 Statut Membre Dernière intervention 6 janvier 2011
5 janv. 2011 à 13:29
Merci pour votre aide! Ca va deja mieux! Mais maintenant, j'ai erreur d'execution '9'. L'indica n'appartient à la selection! Je comprends pas pour quoi la! Je remets mon code adapté à mon fichier
Sub test()
Dim mavar As String
mavar = Range("G13").Text
Sheets(mavar).Range("I11:I13").Copy Destination:=Sheets("Bon de commande").Range("A9:A11")

End Sub
Merci de votre aide
0
bigfish_le vrai Messages postés 1835 Date d'inscription vendredi 13 mai 2005 Statut Membre Dernière intervention 20 novembre 2013 15
5 janv. 2011 à 14:00
Salut,

quel est la ligne surlignée en jaune lors de l'apparition de l'erreur 9 ?

Sheets(mavar).Range("I11:I13").Copy Destination:=Sheets("Bon de commande").Range("A9) 'pour la destination il est preferable de ne spécifier que la 1iere cellule.


A+
0
bigfish_le vrai Messages postés 1835 Date d'inscription vendredi 13 mai 2005 Statut Membre Dernière intervention 20 novembre 2013 15
5 janv. 2011 à 14:02
petite erreur de syntaxe:

Sheets(mavar).Range("I11:I13").Copy Destination:=Sheets("Bon de commande").Range("A9") 'pour la destination il est preferable de ne spécifier que la 1iere cellule.



A+
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Aurore3555 Messages postés 4 Date d'inscription mardi 9 novembre 2010 Statut Membre Dernière intervention 6 janvier 2011
5 janv. 2011 à 14:06
Ca marche parfaitement!! Merci beaucoup! :)
0
Rejoignez-nous