[Excel VBA]Tranfert de valeurs

Résolu/Fermé
ks13 - 9 août 2006 à 13:30
ledorian83 Messages postés 27 Date d'inscription dimanche 31 juillet 2011 Statut Membre Dernière intervention 21 décembre 2011 - 16 nov. 2011 à 21:21
Bonjour,
J'ai plusieurs feuilles contenant des chiffres de tous genres, et j'ai une feuille qui les regroupe tous. Les differentes feuilles servent, comme vous l'aurez compris a faciliter l'edition de ces chiffres. Quant a la page les regroupant, elle est utilisee comme une sorte de base de donnee pour un site. Voila le contexte. Le probleme est que je n'ai jamais touche a VBA et que pour eviter de grosses pertes de temps avec l'editions des chiffres, je voudrais creer une macro qui regroupe automatiquement tous ces chiffres. J'ai cherche sur le net, et j'ai reussi a creer une petite macro de test. Mais pendant les tests l'editeur de macros me dit que ma commande pour assigner une valeur a une cellule n'est pas valide. Voila la macro :

Sub test()
Set Sheet = ActiveWorkbook.ActiveSheet
Dim listePartenaires As Variant
listePartenaires = Array("feuille1", "feuille2", "feuille3", "feuille4", "feuille5", _
"feuille6", "feuille7", "feuille8", "feuille9", "feuille10", "feuille11")
For i = 0 To 10
Sheet.Range("A" & i).Select
Sheet.Selection.Value = listePartenaires(i)
Next i
End Sub

Comme je debute en VBA, et que j'ai a peu pres suivi les indications de certains sites, je ne vois pas trop bien ou j'ai commis une ou des erreurs. Et si possible je voudrais savoir si il est possible d'avoir une variable egale au nombre d'arguments du tableau, un peu comme nbarg = myArray.Argumets.Length en javascript. Merci d'avance.
A voir également:

27 réponses

ks13 Messages postés 191 Date d'inscription lundi 12 juillet 2004 Statut Membre Dernière intervention 1 août 2011 23
16 août 2006 à 17:48
hmmm, comme je ne suis pas du genre inactif ,malgre la pluie de questions que j'ai posté sur ce forum, et que je voulais essaier d'embeter le monde le moins possible, j'ai cherche de mon cote les reponses a mes questions, donc j'ai reussi a creer des listes deroulantes avec excel et sa boite a outils de controles ^^ ainsi que 2 champs texte. maintenant, j'ai mes listes deroulantes et plages de donees (liste partenaires et type), et je n'arrive pas a assimiler les valeurs dans les listes deroulantes. j'ai essaye la commande :

Private Sub ComboBox1_Change()
Sheets("L-listPartenaires").Activate
ComboBox1_Change.ListFillRange = "A1:B11"
End Sub

mais apparement j'ai du mal comprendre les explications que j'ai trouve sur differents sites. est-ce que quelqu'un pourrai m'aider sur ce coup?
0
Armojax Messages postés 1858 Date d'inscription mercredi 19 janvier 2005 Statut Membre Dernière intervention 22 mars 2024 1 527
16 août 2006 à 18:18
Hello ks13,

Chez moi, pas de pluie... en tout cas pour le moment.
Ce qui ne m'a pas empêché de jeter un oeil à ta question. Regarde si ça te va :
https://www.cjoint.com/?iqsr0J0TBV

Tu peux lancer avec <CTRL+MAJ+M>
0
ks13 Messages postés 191 Date d'inscription lundi 12 juillet 2004 Statut Membre Dernière intervention 1 août 2011 23
17 août 2006 à 10:46
waow, ce truc est genial XD

bon, j'ai laissé le nom du module en tant que armojax, et je vais aussi rajouter un commentaire pour nommer le veritable auteur de cette macro ^^. je te suis vraiment tres reconnaissant armojax, sans toi j'aurais surement mis 2 voire 3 fois plus de temps a faire cette macro. neaumoins, meme si je n'ai pas reussi a faire ca tout seul, j'ai eu plein de d'exemples pour me former un peu au vba ^^

j'espere que si on me donne une autre macro a faire j'aurais au moins assez de connaissances pour faire les trucs les plus simples et/ou moyens en difficulté ^^; (oui, je ne suis pas trop confident en mes conaissances dans vba, normal vu que j'ai commence a apprendre il y a une semaine environ, et avant ca je ne savais meme pas ce que c'etais ^^;)

enfin bref, je suis tres reconnaissant de l'aide qu'on m'a apporté, et le responsable, malgre le fait qu'il apprecie pas que je me suis fait aider, apprecie que sa macro a ete terminée (ah les humains, de si etranges creatures o_O).

ah vi, quand j'ai copie les modules et feuilles, j'ai eu un message d'erreur, ceci est au fait que ma feuille config a ete renomee en c-config, et les listes en l-listetype et l-listepartenaires ~_~
j'ai pas compris au debut, mais quand j'ai apercu "Config" dans le code j'ai compris. ceci n'a rien de special, mais je dis ca au cas ou celui ou celle qui lira ce post rencontrerais le meme probleme ^^

(aaaah, dire que je suis membre de ce forum depuis quelques anees deja et que ceci est la 1ere fois ou je viens au moins une fois par jour u_u;)

p.s : un dernier probleme pour la route (^^; desole, je promet que c'est le dernier....pour cette macro) : je voudrais rajouter dans le code, une fonction qui teste si la feuille globale existe, et si non, qu'il la cree, je sais comment creer une feuille, mais j'ai pas reussi a la renommer sans utiliser la commande Sheets("feuilx").Name = "Global", et aussi, je ne sais pas comment verifier si une feuille existe, dois-je utiliser
for each feuille as worksheet
if feuille = "global" then
ou y a-t-il une autre facon de faire?
0
Armojax Messages postés 1858 Date d'inscription mercredi 19 janvier 2005 Statut Membre Dernière intervention 22 mars 2024 1 527
17 août 2006 à 13:03
Salut ks13,

Si tu veux quelques éclaircissements sur le code, n'hésite pas. Je n'ai pas été très prolixe du côté des commentaires !!!

Pour la feuille Global, je propose le petit code ci-dessous :
Sub TestFeuille()
  On Error Resume Next
  Sheets("Global").Activate
  If Err.Number = 9 Then
    Worksheets.Add
    ActiveSheet.Name = "Global"
  End If
  On Error GoTo 0
End Sub
Le principe : on active la feuille Global. Si elle existe, tout se passe bien, et il n'y a pas d'erreur.
Dans le cas contraire, ça provoque une erreur. L'instruction On Error Resume Next dit à VBA : "Si ça plante, tu la fermes et tu passes à la suite, tant que je ne dis rien". Donc on évite le plantage et le message, mais on récupère l'erreur n° 9. Donc derrière on la teste, et on crée la feuille.
On Error Goto 0 termine la procédure d'erreur.
0

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

Posez votre question
ks13 Messages postés 191 Date d'inscription lundi 12 juillet 2004 Statut Membre Dernière intervention 1 août 2011 23
17 août 2006 à 13:48
Okie, j'ai a peu pres compris ce que fait chaque ligne de ce code, mais j'ai enlevé les sub testfeuille() et end sub pour rajouter la fonction a consolidation, a la place de sheets("Global").Select ^^
j'ai aussi fait un joli bouton (oui, j'ai reussi a trouver comment creer un bouton dans une feuille T_T) pour lancer l'operation. le responsable est content, moi j'ai appris pas mal de choses ettout est bien qui finit bien (la je suis parti un peu trop loin :p).
enfin, je suis content que cette macro soit enfin finie ^^;
et merci encore de ton aide armojax ^^
0
ledorian83 Messages postés 27 Date d'inscription dimanche 31 juillet 2011 Statut Membre Dernière intervention 21 décembre 2011 1
16 nov. 2011 à 21:21
Bonjour, je suis un débutant en VB6, cela fat une semaine que je commence à apprendre mais je n'arrive pas a donner une valeur a mes variables déclarées en globbal voici mon code :

Dim serial_number As String
Dim Text_Box As String
Private Sub button_end_Click()
End
End Sub
Private Sub Text1_Change()
If Text1.Text <> serial_number Then
Else
End
End If
End Sub
0
Ok, je viens de trouver mon erreur : il me manque la declaration de la variable Sheet. Avec ceci resolu je vais pouvoir avancer un peu. Je voudrais par contre savoir s'il est possible de verifier le nombre d'arguments d'un Array, comme je l'ai demande plus haut, ceci m'aiderais beaucoup dans le developpement de la macro. Merci
-1