Sélectionner un plage de cell. à partir de réf. calculées
Bonjour à tous,
Le contexte est le suivant:
J'ai un tableau nomé "Hist_Ind" qui s'incrémente de lignes au fur et à mesure que je le met à jour.
La mise à jour se fait par l'addition de valeurs dans les 7 premières colonnes.
Les 10 colonnes suivantes sont des colonnes calculées.
Afin de ne pas surcharger Excel dans ses calculs, une fois le tableau trié puis recalculé, je fait un "copier/coller valeur" des colonnes calculées sur elles-même, moins la dernière ligne afin de garder les formules pour les mises à jours suivantes.
Mon problèmes est le suivant:
Je cherche à mécaniser cette opération avec un macro.
Je soushaite donc sélectionner une plage de données pour ensuite les "copier/coller valeur" sur elles même.
Cependant si je connais ma référence de départ "I2" la référence de fin est fonction du nombre de ligne du tableau après mise à jour.
Je calcule donc dans une cellule nomée "Fin_de_liste_Hist_Ind" le monbre de ligne "LIGNES(Hist_Ind[Code])" de mon tableau et ajoute, concatène avec "&", la référence de la dernière colonne "J". J'obtiens ainsi pour exemple la valeur: J68522.
Ma question est la suivante:
Comment intégrer dans une macro la sélection des cellules comprises entre "I2" et la référence contenue dans la cellule "Fin_de_liste_Hist_Ind"?
J'ai essayé avec la fonction suivante:
Range(Cells(2, 9), Cells("Fin_de_liste_Hist_Ind", 14)).Select
Hélas j'ai une erreur de type "incompatibilité de type" avec "Fin_de_liste_Hist_Ind"
D'avance merci pour vos réponses.
Bonjour pdm le forum
alors c'est simple tu vires tes formules, toutes tes formules, tu fais une macro pour faire les calculs que faisait tes formules, tu travailles sur la feuille et non dans un tableau et tu vas gagner du temps.
Et là tu auras un fichier avec juste des données et non des formules partout
a+
Papou
Bonjour pdm,
Pour répondre strictement à ta question, le code suivant te permettra de sélectionner la plage de cellule voulue :
[barrer]Range("I2:" & "Fin_de_liste_Hist_Ind").Select[/barrer]Range("I2:" & Range("Fin_de_liste_Hist_Ind")).SelectSinon, sans passer par une cellule nommée intermédiaire, le code suivant fait la même chose s'il est lancé sur la feuille contenant les données :
Range("I2:J" & Range("I" & Rows.Count).End(xlUp).Row).SelectCependant, il est intéressant de voir quelles autres manipulations sont faites afin d'optimiser le code.
Les sélections (en utilisant la méthode Select) ralentissent le code et sont la plupart du temps inutiles.
EDIT : Ah Papou bonjour !!
paritec a écrit :Bonjour pdm le forum
alors c'est simple tu vires tes formules, toutes tes formules, tu fais une macro pour faire les calculs que faisait tes formules, tu travailles sur la feuille et non dans un tableau et tu vas gagner du temps.
Et là tu auras un fichier avec juste des données et non des formules partout
a+
Papou
Merci paritec pour ta réponse,
J'aime beaucoup l'idée, mais je souhaite uniquement recalculer les lignes ajoutées, enfin mon tableau me sert de base de donnée pour d'autres onglet, je ne peu donc pas suprimer son format actuel.
Si tu as d'autres idée je suis preneur
A+
Bonjour vba-new,
Merci pour ta réponse, j'ai testé ta première solution qui répond que partiellement au problème.
La zone sélectionnée vas de I2 à "Fin_de_liste_Hist_Ind" et non la référence de cellule comprise dans "Fin_de_liste_Hist_Ind".
Comment faire en sorte d'avoir la référence présente dans la cellule nomée "Fin_de_liste_Hist_Ind" sans que la référence soit la cellule nomée "Fin_de_liste_Hist_Ind".
Merci d'avance
vba-new a écrit :Bonjour pdm,
Pour répondre strictement à ta question, le code suivant te permettra de sélectionner la plage de cellule voulue :
Range("I2:" & "Fin_de_liste_Hist_Ind").SelectSinon, sans passer par une cellule nommée intermédiaire, le code suivant fait la même chose s'il est lancé sur la feuille contenant les données :
Range("I2:J" & Range("I" & Rows.Count).End(xlUp).Row).SelectCependant, il est intéressant de voir quelles autres manipulations sont faites afin d'optimiser le code.
Les sélections (en utilisant la méthode Select) ralentissent le code et sont la plupart du temps inutiles.
EDIT : Ah Papou bonjour !!
Ah pardon !!
Si j'ai bien compris :
[barrer]Range("I2:" & "Fin_de_liste_Hist_Ind").Select[/barrer]Range("I2:" & Range("Fin_de_liste_Hist_Ind")).SelectQu'en est-il de la 2è solution ?
Merci vba-new,
Cela fonctionne parfaitement maintenant.
C'est vraiment super.
A bientôt
vba-new a écrit :Ah pardon !!
Si j'ai bien compris :
[barrer]Range("I2:" & "Fin_de_liste_Hist_Ind").Select[/barrer]Range("I2:" & Range("Fin_de_liste_Hist_Ind")).SelectQu'en est-il de la 2è solution ?
bonjour Vbanews
bon tu as pas bien compris, je ne parle pas de changer la structure,
Et concernant le calcul si tu penses qu'une macro est forcée de calculer toutes les lignes là tu n'y es pas du tout!!!!!!!
Une macro peut faire exactement ce que tu veux et surtout le calcul de seulement les lignes ajoutées.
Mais je pense que tu es très attaché a tes formules , je n'insisterai donc pas.
bref tu as eu la solution de vbanew donc pas de soucis
J'ai répondu surtout pour saluer vbanew
a+
papou
J'ai bien compris le potentiel de VBA et l'aide que tu me propose.
Je suis cependant un novice dans ce domaine, et j'ai tout a apprendre dans le domaine.
Ce que j'ai appris en VBA je l'ai appris en fonction de mes besoins ponctuels, et je manque cruellement d'une vision structurée et globale de VBA.
J'imagine bien qu'il est possible de tout faire, mais cela ne veut pas dire que je puisse tout faire. Il faudrai pour cela que j'apprenne les rudiments et la logique de VBA, et je n'en suis pas encore la.
Cependant je n'exclut pas l'idée qu'un jour je repense la structure de mon fichier lorsque je serai plus à l'aise avec VBA.
Merci pour vos conceils
Cordialement
paritec a écrit :bonjour Vbanews
pdm, le forum bon tu as pas bien compris, je ne parle pas de changer la structure,
Et concernant le calcul si tu penses qu'une macro est forcée de calculer toutes les lignes là tu n'y es pas du tout!!!!!!!
Une macro peut faire exactement ce que tu veux et surtout le calcul de seulement les lignes ajoutées.
Mais je pense que tu es très attaché a tes formules , je n'insisterai donc pas.
bref tu as eu la solution de vbanew donc pas de soucis
J'ai répondu surtout pour saluer vbanew
a+
papou
Re Pdm le forum
OK si un jour tu veux y revenir pas de soucis on t'aidera
a+
papou