Débutante VBA, macro Excel/Word

Fermé
EmieCub - 1 avril 2005 à 11:39
Toughnounours Messages postés 1 Date d'inscription jeudi 19 mai 2011 Statut Membre Dernière intervention 19 mai 2011 - 19 mai 2011 à 12:06
Bonjour,

Je suis débutante un VBA et je souhaite créer deux macros, pour usage professionnel :
- La 1ère me permettrait depuis excel de copier une plage de cellules vers un document word existant. J'ai bien déjà passé quelques jours dessus à tenter moultes manipulations, mais sans résultat!
- Pour la seconde, je souhaiterais pouvoir créer une macro qui, grâce à un bouton, copierait définitivement (pour archivage) les données enregistrer sur une feuille sur une autre feuille à la suite des archivages précédents (j'espère être à peu près claire).

Concernant la 1ère macro, voilà ma situation :
1- J'ai une feuille sous excel (Préparation commande) depuis laquelle je souhaite copier les données situées dans les cellules de la plage C7:G43.
2- J'ai un document word (BON DE COMMANDE MODELE), sur lequel je souhaite coller la plage de cellules.
Comment faire ?

Pour la 2nde macro :
1- Sur le même classeur excel, j'ai une feuille (Préparation de commande) sur laquelle je saisis des données sous forme de tableau et une autre feuille (Archives) sur laquelle je souhaiterais pouvoir coller ces enregistrements les uns à la suite des autres.
2- En fait, il s'agit sur la feuille (Préparation commande) de saisir manuellement les références (quantités, fournisseurs...). Grâce à la première macro, le bon de commande serait générer sous word et la feuille (Préparation Commande) servirait à chaque nouvelle commande. Et je souhaiterais trouver une macro qui me permettrait de copier ces enregistrements dans la seconde feuille, les uns à la suite des autres (pour archiver les données saisies.
Est-ce possible ? Et comment faire ?

Je remercie d'avance celui(ceux) qui m'eclairera(ont) sur ces points! Je ne maîtrise pas encore VBA et les macros pour m'en sortir seule et je patauge bien, malgré les aides que l'on peut trouver en ligne!!!
Encore merci!

Emilie

PS : j'en profite juste pour rajouter une question qui me titille : est-il possible d'affecter plusieurs macros à un seul bouton??
A voir également:

13 réponses

bonjour EmieCub,

Pour l'introduction de ton message, pourrais-je avoir ton code pour la première préoccupation? Celle de copier une plage de cellule (ou une cellule) depuis un document Excel vers un document Word.

Merci pour ton assistance.

Pint.
8
Rebonjour,
C'est juste pour indiquer que je suis parvenue à régler le problème de ma première macro. Victoire!
Je suis toujours sur la 2nde ; si une bonne âme voit une solution, Merci d'avance!
Emilie
4
Bonjour Emilie,
J'ai moi aussi besoin d'une telle application. Pourrais tu me donner des infos sur ta macro ? Eventuellement ton fichier Script ?
Dans mon cas, c'est le même principe (copie de valeurs de Cellules de EXCEL vers Word), mais pour des rapports scientifiques.
Merci d'avance,
Pierre.
0
bonjour j'ai creer une macro sur WORD et je lui es associé un bouton "inserrer" pour me copier l'image sur une autre feuille WORD mais sa ne marche pas!! je suis perdu si quelqu'un à une idée je vous enprie aidé moi!!!
4
Armojax Messages postés 1860 Date d'inscription mercredi 19 janvier 2005 Statut Membre Dernière intervention 2 octobre 2024 1 527
1 avril 2005 à 17:34
Bonjour EmieCub,

En supposant que :
- quand tu lances ta macro, ta feuille active est celle dans laquelle tu fais ta saisie,
- ta feuille d'archives s'appelle "Archive"
- la plage que tu veux y copier est (C7:G43), et que tu veux la copier juste en dessous de l'archivage précédent,
    NomFeuille=ActiveSheet.Name
    Application.ScreenUptating = False
    Range("C7:G43").Copy
    With Sheets("Archive")
        .Activate
        LigDispo = .Range(Cells(65536, 1), Cells(65536, 1)).End(xlUp).Row + 1
        .Range(Cells(LigDispo, 1), Cells(LigDispo, 1)).Select
    End With
    ActiveSheet.Paste
    Sheets(NomFeuille).Activate
    Application.ScreenUptading = True
Est-ce que c'est ça ?
Armojax.
3
Toughnounours Messages postés 1 Date d'inscription jeudi 19 mai 2011 Statut Membre Dernière intervention 19 mai 2011
19 mai 2011 à 12:06
Bonjour Armojax,

Je cherche à faire exactement ce que tu explique avec ta macro :
A partir d'un bouton sur la "Feuil1",
copier un plage de cellules ("A5:Q15") se trouvant sur la "feuille 2",
et les copier à la suite dans la feuil1 (soit à la première cellule libre, soit à partir de la cellule A11.
J'ai essayer d'appliquer ta macro à mon tableau mais je n'y arrive pas.
Pourrai tu m'aider ?

Merci
Toughnounours
0

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

Posez votre question
Salut =)

juste comme ça, entre parenthèse on va dire, Excel n'est pas terrible pour gérer des données telles que des prépa de commandes. cela devient vite une usine à gaz, et l'on trouve très rapidement les limites d'excel. Mais ceci dit, tu peux librement continuer ton appli sur Excel =)

alors, pour la 1è macro, tu saisis les données directement dans les cellules à la mano ? Le mieux est de faire une "user form" avec tous les champs à remplir, de les stocker dans des variables, de les transmettre au fichier Word puis de les enregistrer dans la seconde feuille du classeur excel. c'est plus joli, plus pratique, peut-être un peu + dur, mais plus satisfaisant qd tu auras fini =)

voila ++
2
Bonjour,

Je voulais d'abord remercier DestyNov@ et Armojax pour leur aide et leurs précieux conseils!
J'ai choisi de suivre l'idée de DestyNov@, c'est à dire de faire une userform pour saisir les données de ma commande.

Jusque là, je m'en sors pas trop trop mal grâce aux sites consacrés à excel et aux forums! Mais là je reviens vers vous parce que je bloque sur un truc qui doit certainement etre très simple!!

J'ai mon UserForm1 à l'interieur duquel j'ai desTextBox (j'en ai mis 6 au total), ainsi que 2 boutons pour valider, et un bouton pour fermer.
Je suis parvenue à renvoyer les 4 premiers textbox dans ma feuille excel comme je le souhaitais grâce au premier bouton pour valider ! Et oui, j'ai gagné cette bataille, mais pas encore tout à fait la guerre!!

Mon souci est le suivant :
Je souhaite grâce au second bouton pour valider (son nom = Valider), renvoyer les données qui ont été saisies vers :
- Pour la textBox4 : vers la cellule A20
- Pour la textBox5 : vers la cellule C20
Mais je voudrai également qu'en clikan sur mon Valider, les données soit transférés certes, mais que les TextBox soit aussi effacé! Comme ça je peux resaisir des données dans ces deux textBox, rappuyer sur Valider (qui renverra les données en A21 et C21), et ainsi de suite...

Pour le bouton qui ferme l'userform, c'est bon, ça, j'ai réussi! Je sais c'etait le plus simple, mais ca fait tellement du bien de vaincre la machine!!!

J'espere que j'ai été assez claire dans mon explications!!!
Je remercie d'avance celui(elle) qui me repondra!!
Je pense que ca doit etre possible de le réaliser, mais je blok vraiment sur les codes à mettre pour arriver à ce que j'ai besoin!!

Vraiment encore merci d'avance!

EmieCub
2
Armojax Messages postés 1860 Date d'inscription mercredi 19 janvier 2005 Statut Membre Dernière intervention 2 octobre 2024 1 527
7 avril 2005 à 11:59
Bonjour EmieCub,

Content d'avoir de tes nouvelles, et que tu t'en sortes honorablement.
Pour effacer le texte de la textbox, est-ce que remettre à "" la value ne suffit pas ?

textBox4.Value = ""

Si ce n'est pas ça, c'est que je n'ai pas bien compris ton problème. Dans ce cas, reviens.

Félicitations en tout cas.
Armojax.
0
bienvenuraph Messages postés 19 Date d'inscription jeudi 10 février 2005 Statut Membre Dernière intervention 18 septembre 2014 1
1 avril 2005 à 19:33
Cher(e)s ami(e)s,
salut,
j'ai un problème sérieux dans la compréhension des algorithmes de progranmmation et voudrai avoir une orientation sur un site où je pourrai trouver des amples informations dudit cours
Merci anticipativement.
1
Bonjour Armojax,

D'abord, je voulais te remercier pour ta réponse aussi rapide!! En effet, le code que tu m'as donné marche nikel pour effacer les textbox!
Mais en fait, j'avais un autre pb sur ces codes :
Je voudrai que ca envoi les données des textbox dans les cellules A20 et C20, mais que ca puisse, à la ressaisi, renvoyer les suivantes en A21 et C21, puis A22 et C22, etc...

Voilà ce que j'ai pour l'instant :
Private Sub Valider_Click()
[A20] = UserForm1.TextBox4
[C20] = UserForm1.TextBox5

TextBox4.Value = ""
TextBox5.Value = ""

End Sub

J'avais vu sur un site un code de type (A20:A), apparemment pour indiquer qu'on envoit vers les cellules vides de la colonnes A à partir de A20, mais ca ne marche pas!!

Je sais pas si je t'ai mieux expliqué mon souci!!

En tout cas, encore merci pour les renseignements précédents et merci d 'avance pour les prochains!!!!!

Emilie
1
Armojax Messages postés 1860 Date d'inscription mercredi 19 janvier 2005 Statut Membre Dernière intervention 2 octobre 2024 1 527
8 avril 2005 à 11:32
Bonjour Emilie,

Tu as la solution de gérer un petit compteur (Integer) que tu incrémentes à chaque nouvelle saisie.
Si on l'appelle "I", au lieu d'alimenter :
[A20]
tu alimentes :
[A20].Offset(I, 0)
en faisant varier I à partir de 0.

Bon VBA, bonne journée et bon week-end !
Armojax.
1
random Messages postés 1612 Date d'inscription vendredi 26 novembre 2004 Statut Membre Dernière intervention 30 mars 2006 155
8 avril 2005 à 18:20
regarde dans l'aide vba la propriété end
1
Bonjour,

Me revoilà, certes avec une semaine de retard, mais je tenais quand même à remercier Armojax (et Random) pour leurs réponses et conseils!!!

Je suis finalement bien fière de dire que je suis arriver à faire ce que je voulais sur excel!! Quel bonheur d'arriver enfin, après lutte acharnée, à vaincre la machine!!!:)

Je m'attaque maintenant à quasiment la dernière partie de ma tâche, càd lier certaines de mes colonnes d'excel à une table d'access. Et là, c'est pas gagné!!!

Malgré tout, je vais aller jeter mes yeux vers les posts antérieurs, sait-on jamais!!! Mais je ne promets donc pas de ne pas revenir faire appel à vos lumières qui m'ont permis d'être sur la bonne voie dès le début!!!

Alors encore merci, c'est un peu grâce à ce forum et à vous que j'ai pu bien avancer sur mon projet et découvrir VBA (et comprendre!!) !!! Et certainement à très bientôt!

Emilie
1
Bonjour,

je cherche à créer un document type avec word, dans lequel devra figurer un numéro référence qui changera dans l'ordre croissant, chaque fois que j'utiliserai ce document, de façon à pouvoir suivre la numérotation et l'archivage des différents courrriers de l'entreprise.

j'aimerais également que lors de la fermeture de ce document qu'une partie de la référence et la date du jour nomme automatiquement ce document.

je vous en remercie d'avance, si vous pouvez m'éclairer car je ne comprends strictement rien aux macros.

Nora
1
Bonjour

Je débute en visual basic et j'ai un problème .
Je voudrai à l'aide d'une commande (cmdsuivant) aller de la form1 ,où la commande se trouve ,jusqu'à la page form2.
Et aussi savoir comment faire pour pouvoir utiliser la touche retour arrière quand j' ai paramètré un textbox en ascii pour qu'il ne puisse afficher que des chiffres.

Private Sub Text8_KeyPress(KeyAscii As Integer)

If KeyAscii < Asc("0") Or KeyAscii > Asc("9") Then KeyAscii = 0

End Sub

Merci
1