Collage dans un ROW choisi manuellement

Collage dans un ROW choisi manuellement - VB/VBA/VBS - Programmation

Marsh Posté le 09-10-2008 à 15:34:42    

Bonjour,
 
Je cherche à faire un copier-coller un peu plus sophistiqué.
Dans mon opération de collage, je voudrais créer un user form avec un champ et un bouton. L'utilisateur inscrirait un numéro dans le champ, ce numéro correspondrait au ROW (à la ligne) sur laquelle mes données vont être copiées dans la page de résultat. Le bouton effectuerait cette opération de collage en fonction du numéro de ligne indiqué par l'utilisateur dans ce champ.
Voici le code que j'ai déjà:
 
Ici j'ai besoin du code pour le champ, qui indiquerait que je peux rentrer des numéros de lignes
 
Private Sub CommandButton1_Click()
 
Sheets("Work" ).Select  'activer feuille "work"
    Range("B10000:DX10007" ).Select   'selectionner les données désirées
    Selection.Copy   'copier la sélection
    Sheets("Results" ).Select  'sélectionner la feuilles de résultats
    Range("B12" ).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False 'copier les valeurs
    Range("C2" ).Select  'copie le nom du facteur
    Selection.Copy
    Range("B11" ).Select  'copie le nom du facteur dans la cellule B11
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Selection.Font.Bold = True  'police gras
    Range("B11:DX19" ).Select  'selctionne le tableau
    Selection.Cut   'copier la sélection
    Ici j'ai besoin du code pour coller sur la ligne spécifiée dans le champ indiqué au début
 
 
End Sub
 
 
Merci d'avance de votre précieuse aide!
 

Reply

Marsh Posté le 09-10-2008 à 15:34:42   

Reply

Marsh Posté le 09-10-2008 à 16:22:25    

Essaye ceci :
- d'abord, le code du bouton pour activer la macro :

Code :
  1. private sub commandbutton1_click()
  2.   userform.show
  3. endsub


- ensuite, le userform :
créé un userform avec une textbox et un bouton.
Dans le code du userform tu mets

Code :
  1. private sub commandbutton1_click()
  2. dim ligne as integer
  3. ligne = me.textbox1.caption 'recupere le numero de ligne
  4. call collage_données(ligne) 'appelle la fonction qui fait les copies
  5. userform.hide 'cache le userform
  6. endsub


 
- Enfin, tu créé une fonction collage_données :

Code :
  1. function collage_données (byval ligne as integer)
  2. Sheets("Work" ).Select  'activer feuille "work"
  3. Range("B10000:DX10007" ).Select   'selectionner les données désirées
  4. Selection.Copy   'copier la sélection
  5. Sheets("Results" ).Select  'sélectionner la feuilles de résultats
  6. Range("B12" ).Select
  7. Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
  8.     :=False, Transpose:=False 'copier les valeurs
  9. Range("C2" ).Select  'copie le nom du facteur
  10. Selection.Copy
  11. Range("B11" ).Select  'copie le nom du facteur dans la cellule B11
  12. Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
  13.     :=False, Transpose:=False
  14. Selection.Font.Bold = True  'police gras
  15. Range("B11:DX19" ).Select  'selctionne le tableau
  16. Selection.Cut   'copier la sélection
  17. rows(ligne).select 'selectionne la ligne a copier, indiquée dans le userform
  18. selection.entirerow.copy(rows(numero_de_la_ligne_où_tu_veux_coller)) 'colle la ligne
  19. end fuction


 
Voila voila, j'espere que ca pourra t'aider... n'hesite pas a reposter si ce code n'est pas clair, ou s'il faut des precisions / amelioration (voir tout refaire  :pt1cable:  )


---------------
Si Le Travail C'est La Santé, Donnez Le Mien A Quelqu'un De Malade
Reply

Marsh Posté le 09-10-2008 à 16:28:22    

Merci Mooschild, je regarde ça et je te réponds dans l'heure, merci en tout cas!

Reply

Marsh Posté le 09-10-2008 à 16:32:58    

J'ai un doute, vu le titre du post : tu veux entrer la valeur de la ligne a copier, ou de la ligne de destination?
Parce si c'est la ligne a copier, c'est bon sinon, il faudra remplacer

Code :
  1. rows(ligne).select 'selectionne la ligne a copier, indiquée dans le userform
  2. selection.entirerow.copy(rows(numero_de_la_ligne_où_tu_veux_coller)) 'colle la ligne


par

Code :
  1. rows(numero_de_la_ligne_où_tu_veux_copier).select 'selectionne la ligne a copier
  2. selection.entirerow.copy(rows(ligne)) 'colle la ligne a l'emplacement indiqué dans le userform


 
Edit : Faut vraiment que j'me relise :/


Message édité par Moonschild le 09-10-2008 à 16:33:49

---------------
Si Le Travail C'est La Santé, Donnez Le Mien A Quelqu'un De Malade
Reply

Marsh Posté le 09-10-2008 à 16:47:22    

Reprenons au début: mon but est de copier un tableau à partir d'une feuille appelée "work" et de pouvoir choisir à l'aide d'une textbox et d'un bouton l'emplacement du ROW dans lequel je vais coller ce tableau dans ma feuille "Results".

Reply

Marsh Posté le 09-10-2008 à 16:48:40    

So -> Deuxieme choix, fait l'echange de code :jap:


---------------
Si Le Travail C'est La Santé, Donnez Le Mien A Quelqu'un De Malade
Reply

Marsh Posté le 09-10-2008 à 16:48:49    

Je suis un peu perdu dans toutes les lignes de codes entre les miennes et les tiennes, est-ce que tu pourrais recompiler le tout? Sorry mais je n'ai pas un très bon niveau.

Reply

Marsh Posté le 09-10-2008 à 17:01:09    

Ouais, recommençons, histoire de faire plus simple... Si tu veux juste copier, comme tu le dis, un tableau et le coller a la ligne inscrit dans le userform, il te faut donc creer ton userform, sur le userform, mettre un bouton et une textbox, puis, dans le code du userform (donc en double cliquant sur le userform) tu mets  

Code :
  1. private sub nom-du-bouton_click()
  2. dim ligne as integer
  3. ligne = me.nom_de_ta_textbox.caption 'recupere le numero de ligne
  4. worksheets("Work" ).range("A1:Z100" ).select 'Selectionne ton tableau, s'il va de A1 a Z100, c'était pour l'exemple
  5. selection.copy (sheets("Results" ).rows(ligne)) 'colle le tableau a la ligne entrée dans le userform
  6. nom_de_ton_userform.hide 'cache le userform
  7. endsub


et ensuite,  tu n'as plus qu'a creer un bouton sur une des feuilles, avec comme code

Code :
  1. private sub nom-de-ton-bouton_click()
  2.   nom_de_ton_userform.show
  3. endsub


 
Et enfin tu remplaces les nom d'userform, textbox, bouton, et puis les cellules delimitant ton tableau :)


---------------
Si Le Travail C'est La Santé, Donnez Le Mien A Quelqu'un De Malade
Reply

Marsh Posté le 09-10-2008 à 17:59:04    

Merci beaucoup!!
Encore un dernier truc: Excel me mets des erreurs "REF! car il veut copier les références, comment puis-je lui dire de ne copier que les valeurs?

Reply

Marsh Posté le 09-10-2008 à 18:22:55    

Je suis désolé, je dois partir de mon travail, je te recontact demain si j'trouve la solution (je dois avouer que je n'ai jamais fais de copie de cellule contenant des formules, donc je ne sais pas comment faire encore, mais j'vais chercher, t'inquiete )
Désolé pour ton boss... dis lui que tu regles juste un petit detail et que ca fonctionnera apres :D


---------------
Si Le Travail C'est La Santé, Donnez Le Mien A Quelqu'un De Malade
Reply

Marsh Posté le 09-10-2008 à 18:22:55   

Reply

Marsh Posté le 10-10-2008 à 09:14:19    

J'ai resolu ton probleme, bon faut dire que d'un autre coté, t'as des pb de ref dans ta page work aussi (ca c'est un pb de selection de colonne de calcul), mais effectivement, en cas de valeur existantes, il n'arrivait tout de meme pas a copier la valeur dans la feuille Results, il ne prenait que le calcul...
Donc, pour arranger ca, vas dans le code de ton userform2, et replace tout le code par ca (j'ai tout mis, que t'ai pas a te demander où mettre le bout de code qu'a changé) :

Code :
  1. Private Sub UserForm_Activate()
  2. UserForm2.TextBox1.Value = ""
  3. End Sub
  4. Private Sub commandbutton1_click()
  5. Dim ligne As Integer
  6. ligne = UserForm2.TextBox1.Value 'recupere le numero de ligne
  7. Worksheets("Work" ).Range("B10000:DK10007" ).Copy
  8. Sheets("Results" ).Rows(ligne).Select
  9. Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
  10. UserForm2.Hide 'cache le userform
  11. End Sub


:jap:


---------------
Si Le Travail C'est La Santé, Donnez Le Mien A Quelqu'un De Malade
Reply

Marsh Posté le 10-10-2008 à 10:57:23    

Merci bcp, problème résolu!
:-) :-)

Reply

Marsh Posté le 10-10-2008 à 11:01:12    

Tant mieux, comme ca tu pourras te la jouer devant ton patron...
"Vous n'avez pas fait ce que je vous avais demandé, je ne vois pas de bouton" :fou:  
"Pff les boutons s'pour les low, go ctrl+F1" :sol:  
Tu sais d'un ton "p'tit c**, reflechis avant de dire que j'ai rien foutu + branleur staÿle  :o "


---------------
Si Le Travail C'est La Santé, Donnez Le Mien A Quelqu'un De Malade
Reply

Sujets relatifs:

Leave a Replay

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