VBA: étaler un calcul jusqu'à la dernière cellule non vide de la première ligne

bernaroff

XLDnaute Junior
Bonjour,
Mon problème consiste à étaler le calcul présent dans une cellule sur la même ligne jusqu'à la colonne correspondant à la dernière cellule non vide de la première ligne
Pour le moment, mon calcul s'étale jusqu'à le fin de la ligne est apparait sur mon fichier excel, et donc cela prends beaucoup de calculs quand je lance ma macro.

(exemple: étirer le calcul présent en F2 jusqu'à X2, X étant la dernière cellule non vide de la première ligne, mais le calcul doit aller une colonne après si on rajoute une colonne a postériori à la première ligne, et ainsi de suite)

(mon fichier excel est beaucoup trop lourd pour pouvoir être joint)
Merci
 

Staple1600

XLDnaute Barbatruc
Re : VBA: étaler un calcul jusqu'à la dernière cellule non vide de la première ligne

Bonjour bernaroff, le fil

Tu peux créer un fichier exemple de seulement 1 ligne et 10 colonnes
(sans données confidentielles, sans fioritures, zippé pour être <48ko)
(ensuite il suffira d'adapter le code VBA pour ton fichier original)

Pour tester, on étirera de F2 à P2

EDITION: Voici un exemple à titre d'inspiration
VB:
Sub a()
Dim dcol&
[F1] = 1: [F1].DataSeries 1, -4132, 1, 1, 11, False 'création données de test
dcol = Cells(1, 256).End(xlToLeft).Column - 5 ' trouve dernière colonne non vide
[F2].Resize(, dcol).FormulaR1C1 = "=RC[-1]+R[-1]C" ' copie formule
End Sub
 
Dernière édition:

pascal_bidouille

XLDnaute Junior
Re : VBA: étaler un calcul jusqu'à la dernière cellule non vide de la première ligne

Tu peux utiliser :

Code:
    Range(Cells(1, 1), Cells(1, 1)).Select
    Selection.End(xlToRight).Select
    cr_max = ActiveCell.Column

Du coup tu as dans cr_max la valeur de ta dernière colonne où tu as des valeurs en ligne 1
Il n'y a plus qu'a l'utiliser pour recopier ta formule.
 

Staple1600

XLDnaute Barbatruc
Re : VBA: étaler un calcul jusqu'à la dernière cellule non vide de la première ligne

Bonjour pascal bidouille

Pour info:
Il est toujours préférable de pas utiliser les Select en VBA

EDITION: voici une version raccourcie de a
VB:
Sub b()
'création données de test
[F1] = 1: [F1].DataSeries 1, -4132, 1, 1, 11, False
' recopie formule
With ActiveSheet
    .[F2].Resize(, _
    .Cells(1, 256).End(-4159).Column - 5).FormulaR1C1 = _
    "=RC[-1]+R[-1]C"
End With
End Sub

(voir mon précédent message -> la macro a fonctionne sans recourir aux Select ou Activate
 
Dernière édition:

bernaroff

XLDnaute Junior
Re : VBA: étaler un calcul jusqu'à la dernière cellule non vide de la première ligne

Voici un exemple un peu bre de se que je souhaite faire, dans cette feuille mon calcul apparaît dans toutes les cellules de la ligne 3, seulement je veux qu'il s'arrête à la colone F, mais si on rajoute des donées pour d'autres jour dans la feuille je veux que mon calcul s'étende jusqu'au dernier jour présent dans la première ligne.
Le truc c'est que dans ma feuille, (des pages et des pages de programmation) il m'affiche aussi
Range("G4:G6").Select
Selection.Copy
Range("H4").Select
Range(Selection, Selection.End(xlToRight)).Select
ActiveSheet.Paste
ActiveWindow.ScrollColumn = 246
ActiveWindow.ScrollColumn = 243
ActiveWindow.ScrollColumn = 238
ActiveWindow.ScrollColumn = 233
ActiveWindow.ScrollColumn = 221
ActiveWindow.ScrollColumn = 208
ActiveWindow.ScrollColumn = 196
ActiveWindow.ScrollColumn = 187
ActiveWindow.ScrollColumn = 175
ActiveWindow.ScrollColumn = 167
ActiveWindow.ScrollColumn = 159
ActiveWindow.ScrollColumn = 151
ActiveWindow.ScrollColumn = 143
ActiveWindow.ScrollColumn = 137
ActiveWindow.ScrollColumn = 131
ActiveWindow.ScrollColumn = 126
ActiveWindow.ScrollColumn = 122
ActiveWindow.ScrollColumn = 118
ActiveWindow.ScrollColumn = 116
ActiveWindow.ScrollColumn = 115
ActiveWindow.ScrollColumn = 114
ActiveWindow.ScrollColumn = 113
ActiveWindow.ScrollColumn = 105
ActiveWindow.ScrollColumn = 84
ActiveWindow.ScrollColumn = 30
ActiveWindow.ScrollColumn = 6
et je ne sait pas à quoi les ActiveWindows.ScrollCollumn peuvent bien servir

Merci beaucoup pour ton aide
 

Pièces jointes

  • exemple.xls
    39 KB · Affichages: 116
  • exemple.xls
    39 KB · Affichages: 128
  • exemple.xls
    39 KB · Affichages: 129

tototiti2008

XLDnaute Barbatruc
Re : VBA: étaler un calcul jusqu'à la dernière cellule non vide de la première ligne

Bonjour bernaroff, Bonjour Staple ;), Bonjour pascal,

et je ne sait pas à quoi les ActiveWindows.ScrollCollumn peuvent bien servir

Pas à grand chose, ça utilise l'ascenseur horizontal, ce qui est le plus souvent inutile dans une macro donc tu peux supprimer toutes ces lignes

et donc cela prends beaucoup de calculs quand je lance ma macro

Est-ce vraiment lourd ?
Sur combien de lignes (en gros) ces formules s'étalent-elles ?
 

Staple1600

XLDnaute Barbatruc
Re : VBA: étaler un calcul jusqu'à la dernière cellule non vide de la première ligne

Re, bonjour tototit2008

Essaie ceci, cela devrait être bon

Code:
Sub B2()
[A65536].End(xlUp)(2).Resize(, [A1].End(xlToRight).Column).FormulaR1C1 = "=IF(ISBLANK(R[-2]C),"""",R[-1]C*4)"
End Sub
 

Discussions similaires

Statistiques des forums

Discussions
312 305
Messages
2 087 077
Membres
103 455
dernier inscrit
saramachado