fr fr fr fr fr fr fr fr fr fr fr fr fr fr fr en fr fr fr fr fr fr fr fr fr fr cs fr fr fr fr fr fr fr fr fr fr fr fr fr fr en en fr fr fr fr fr en fr nl fr fr fr fr fr fr fr fr en fr en fr fr fr fr fr fr fr fr fr fr fr fr fr fr es fr fr nb en en fr de fr fr fr fr fr fr fr fr fr fr fr fr fr sk fr en fr fr fr en fr fr de fr en sv es fr es fr fr nb en en fr de fr fr fr fr fr fr fr fr en fr fr fr en fr fr de fr fr fr es fr es fr fr nb en en fr de en fr fr fr en fr fr fr en fr fr de fr es fr fr fr en en fr en fr fr en en en fr
J'extrait les données du net, que je colle dans l'onglet "extract des données" en B6, B55 et G75. Tout ce qui est sur cet onglet (sauf les cellules D54 et E54) sont les données extraites.
Ensuite, je sélectionne les cellules D6 à D32 (les seules données qui m'intéressent, mais je ne peux pas extraire que ça du net...), je copie, et je fais un collage special "valeur" dans l'onglet "saison en cours" sur la ligne 3 (par ex en BA3)
Ensuite je repars dans "extract des données", je copie les cellules D55 à D63, et je fais un collage spécial "valeur" dans "saison en cours", sur la ligne 32 (par ex BA32)
Ce que j'aimerais, mais je ne sais pas si c'est possible (j'y connais rien en VBA... et mes connaissances en excel sont plutot limitée ) c'est, par ex via une macro (car via des formules seules je pense que ça doit être une usine à gaz) faire àa :
j'extrait les données (toujours manuellement) du net.
via un bouton, j'active la mise à jour du tableau "saison en cours" de façon à ce que cela remplisse la 1ere "colonne datée" vide (par ex ectuellement la 1ere collone vide est la colonne BA. Je la met à jour et demain, je refais mon extract, j'appuie sur le bouton et la macro détecte que BA n'est pas vide, donc elle remplie BB, etc...)
Tout ça, juste pour m'éviter de faire les collages speciaux
Maintenant, si ce que je souhaite faire est trop compliqué, je suis preneur de toutes les idées qui pourraient améliorer ma façon de faire, quite à changer un peu la mise en page...
Merci à tous les cerveaux qui se pencheront sur ma question!
Le 28/08/2013 à 09:57
Le 28/08/2013 à 15:27
je pensais pas que c'était possible (je sais : un utilisateur lambda n'utilise même pas 10% des capacités de ce logiciel, mais quand même...)
C'est pile poil ce que je cherchais à faire!
Je peux t'embêter juste un peu?
pourrais tu mettre (éventuellement, c'est juste pour mon info) un peu de commentaires dans la macro, que ça m'aide à déchiffrer ce qui pour moi est du chinois...
Si c'est trop demandé, pas de souci : le plus important, c'est le résultat!
Le 28/08/2013 à 15:55
Pour commencer, voici le code commenté.
Si tu as besoin de précisions, n'hésite pas à demander.
Sub Transferer() Dim WsS As Worksheet, WsC As Worksheet Dim Plage1 As Range, Plage2 As Range, Plage3 As Range Dim ColonneAjout As Integer 'La référence de la feuille "extract des données" est attribuée à la variable WsS 'Il s'agit de la feuille Source où seront puisées les données Set WsS = Worksheets("extract des données") 'La référence de la feuille "saison_en_cours" est attribuée à la variable WsC 'Il s'agit de la feuille Cible où seront collées les données Set WsC = Worksheets("saison_en_cours") 'La référence de la plage correspondant aux marchandises CONVENTIONNELLES est attribuée à la variable Plage1 Set Plage1 = WsS.Range("D6:D32") 'La référence de la plage correspondant aux PAILLE & FOIN est attribuée à la variable Plage2 Set Plage2 = WsS.Range("D55:D63") 'La référence de la plage correspondant aux CONTRATS est attribuée à la variable Plage3 Set Plage3 = WsS.Range("G75:J83") 'L'actualisation de l'écran est désactivée (elle sera automatiquement réactivée en sortie de procédure) Application.ScreenUpdating = False 'On cherche le numéro de la ligne où doit être effectué l'ajout dans la feuille Cible ColonneAjout = WsC.Cells(3, Columns.Count).End(xlToLeft).Column + 1 'On copie la Plage1 Plage1.Copy 'On colle les valeurs de la Plage1 dans la feuille cible WsC.Cells(3, ColonneAjout).PasteSpecial xlPasteValues 'On copie la Plage2 Plage2.Copy 'On colle les valeurs de la Plage2 dans la feuille cible WsC.Cells(32, ColonneAjout).PasteSpecial xlPasteValues 'On copie la Plage3 Plage3.Copy 'On colle les valeurs de la Plage3 dans la feuille cible WsC.Cells(45, 2).PasteSpecial xlPasteValues 'On active la feuille cible WsC.Activate 'On sélectionne la cellule date de la colonne où a été effectué l'ajout WsC.Cells(2, ColonneAjout).Select 'On libère la mémoire Set Plage1 = Nothing: Set Plage2 = Nothing: Set Plage3 = Nothing Set WsC = Nothing: Set WsS = Nothing End Sub
Le 28/08/2013 à 16:04
Besoin de précisions, non pas quand même... sinon je vais devoir te payer pour que tu me donnes des cours :p
mais déja avec ces commantaires, ça m'éclaire un peu
Le 28/08/2013 à 17:00
C’est toujours plus gratifiant d’échanger avec quelqu’un qui s’intéresse au programme plutôt que de se cantonner à servir du prêt à consommer