Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Autres Problème VBA sur Excel 2007

Co_Lac

XLDnaute Junior
Bonjour,
Mon problème est de conserver la mise en forme de cellules de reception en VBA, je vous explique:
Je récupère sur Yahoo Finance des infos style "Données historiques" que j'utilise sur excel 2007.
Cette opération se passe très bien mais je bute sur un détail dans Excel et principalement sur cette commande:

Sheets("Donnees bourse").Range("Q7").Copy Sheets("Base").Cells(25, index)
---->Sheets("Donnees bourse").Range("G4:G27").Copy Sheets("Base").Cells(90, index)
Sheets("Donnees bourse").Range("F4:F27").Copy Sheets("Base").Cells(1, index)
Sheets("Donnees bourse").Range("A4:A27").Copy Sheets("Base").Cells(1, 1)

Sur cette ligne en gras:
Le but c'est de copier les valeurs des cellules "G4:G27" sur la feuille "Base" à une endroit défini par "Cells(90, index)"
Mais le problème c'est que je veux conserver la mise en forme des cellules de réception et je ne trouve rien sur google pour m'aider.
Avez vous des idées svp ?
Merci
Claude
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Co_Lac,
Pour cela il ne faut coller que les valeurs, vous conserverez ainsi votre format d'origine.
Essayez de remplacer votre ligne en gras par :
VB:
    Sheets("Donnees bourse").Range("G4:G27").Copy
    Sheets("Base").Cells(90, Index).PasteSpecial Paste:=xlPasteValues, _
    Operation:=xlNone, SkipBlanks:=False, Transpose:=False
 

patricktoulon

XLDnaute Barbatruc
bonjour il faudra m'expliquer pourquoi utiliser "Paste"et toute son armada si c'est pour ne récupérer le .value

VB:
Sheets("Base").Cells(90, Index).resize(,[G4:g27].columns.count).value= Sheets("Donnees bourse").Range("G4:G27").value
épicétoo'
 

Co_Lac

XLDnaute Junior
Merci beaucoup,
Effectivement ça marche plus vite !
J'aime bien cette dernière version, le paste et son armada alourdi la macro, j'ai 25 colonne à réactualiser!
Bonne fin de journée
Et merci pour votre aide
 

Co_Lac

XLDnaute Junior
J'ai une autre question svp
Mon fichier est de plus en plus long au niveau sauvegarde ?
Je me pose des questions!
D’où est ce que ça pourrait venir ?
Il fait 251 ko
Est ce normal ?
 

Staple1600

XLDnaute Barbatruc
Bonjour le fil, Co_Lac, sylvanu, patricktoulon

•>patricktoulon
Si je n'abuse que ce soit en Bretagne ou à Valparaiso.
Que l'on soit confiné ou pas
[G4:g27].columns.count
donnera toujours 1
Alors pourquoi ne pas mettre 1
?
NB [Xi:Xj].Columns.Count donne toujours 1 quand X=X non ?
 

patricktoulon

XLDnaute Barbatruc
bonjour Staple1600
oui c'est vrai en fait logiquement c'est le row que l'on devrait resizer
resize([g4:g27].rows.count,1)
normalement mais il en est satisfait j'en conclu que tout ce ramdam c'est pour copier une seule cellule
 

Co_Lac

XLDnaute Junior
non non plusieurs cellules !
Mais ça marche!
une autre question comment fait on pour transférer toutes les données dans un fichier vierge?
question pour vous basique mais j'ai peur de faire des bétises!
Merci
 

Co_Lac

XLDnaute Junior
Bonjour,
J'ai encore une autre question svp !
Je veux faire un rangement sur une ligne avec en "A123" par exemple le ou les premiers des participants , (dans ce cas incrémenter les cellules, "B123", "C123" etc.... ) ensuite le ou les deuxièmes "D123", "E123", troisième etc....
Sur une ligne, comme dans mon exemple "A121:Z121" j'ai une série de valeurs qui sont des notes numériques.
La ligne au dessus, "A120:Z120" j'ai le nom des participants.
Le but de ma question c'est en VBA, rechercher l'adresse de la cellule qui correspond à par exemple la note de 45?
Réponse par exemple: "L121"
J'ai cherché sur google mais rien ne correspond ou ne marche pas, donc je frappe à votre porte !
Merci
Claude
 

Co_Lac

XLDnaute Junior
bonjour Staple1600
oui c'est vrai en fait logiquement c'est le row que l'on devrait resizer
resize([g4:g27].rows.count,1)
normalement mais il en est satisfait j'en conclu que tout ce ramdam c'est pour copier une seule cellule
Bonjour,
Je viens de m'apercevoir, en apportant vos modifications; "resize([g4:g27].rows.count,1)" à la ligne de patricktoulon; "Sheets("Base").Cells(90, Index).resize(,[G4:g27].columns.count).value= Sheets("Donnees bourse").Range("G4:G27").value" ça ne marche pas, ça plante!
j'ai écris:
"Sheets("Base").Cells(90, Index).resize(,[G4:g27].rows.count,1).value= Sheets("Donnees bourse").Range("G4:G27").value"
Erreur d’exécution: "450"
Nombre d'argument incorrect ou affectation de propriété incorrecte
J'ai cherché des solutions mais je ne trouve pas !
Je vous remercie de me dire svp
Merci
 

Co_Lac

XLDnaute Junior
Bonjour,
Je viens de m'apercevoir, en apportant vos modifications; "resize([g4:g27].rows.count,1)" à la ligne de patricktoulon; "Sheets("Base").Cells(90, Index).resize(,[G4:g27].columns.count).value= Sheets("Donnees bourse").Range("G4:G27").value" ça ne marche pas, ça plante!
j'ai écris:
"Sheets("Base").Cells(90, Index).resize(,[G4:g27].rows.count,1).value= Sheets("Donnees bourse").Range("G4:G27").value"
Erreur d’exécution: "450"
Nombre d'argument incorrect ou affectation de propriété incorrecte
J'ai cherché des solutions mais je ne trouve pas !
Je vous remercie de me dire svp
Merci
c'est vrai, le premier qui fait poster a gagné .
j'aurai du supprimer le mien.
dont acte .
ce message s'autodétruira dans 5 secondes ...



J'ai une autre question svp:
Sur ma feuille "Base":
j'ai une ligne de A120 à Z120 = participants (nom de Sociétés)
J'ai une ligne de A121 à Z121 = notes attribuées (suivant critères)
Je veux si c'est possible et pas trop complexe, recopier ces 2 lignes sur une feuille "Classement" en "A1 à Z1" et "A2 à Z2" par exemple en les réordonnant en ordre décroissant.
Comment faire une recherche sur la ligne A121 à Z121 de la note, 50 à 0 et récupérer l'adresse de la cellule ligne au dessus correspondante puis d'une seconde note (identique à la première) si ex aequo il y a et les ranger depuis "A1 à "Z" de la feuille "Classement" en ordre décroissant ?
Et ensuite faire une boucle de la note 50 à 0 par exemple?
J'ai cherché sur google mais rien ne correspond ou ne marche pas, donc je frappe à votre porte !
Excusez moi mais je débute en VBA, c'est trés prenant, ça occupe par les temps qui court!
Merci
Claude
 

Pièces jointes

  • rangement.PNG
    15.8 KB · Affichages: 13

Discussions similaires

Réponses
3
Affichages
591
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…