Mise à jour des données et formules sur plusieurs données

tigeline001

XLDnaute Occasionnel
Bonjour tout le monde
J'ai une feuille de calcul comportant des données sur 3099 lignes et plusieurs colonnes et sur les mêmes lignes j'ai des formules qui utilisent ces données(A partir de la colonne H jusqu'a S j'ai des formules .
Mais le problème est que quand les données de la feuille se mettent à jour c à d le nombre de ligne augmente (après mise à jour j'ai les données sur 4212 lignes) les formules restent sur les 3099 premières lignes ,elles s'ajoutent pas sur les nouvelles lignes(voir pièces jointes)
Es ce qu'il y'a pas un moyen d'adapter les formules sur les nouvelles lignes dés que les données se chargent
je suis obligé à chaque fois de cliquer sur copie intelligente pour mettre la formule sur les nouvelles lignes
SVP j'attend votre aide
MErci
 

Pièces jointes

  • Mise_a_jour.xlsx
    509.4 KB · Affichages: 55

job75

XLDnaute Barbatruc
Bonsoir tigeline001,

Placez cette macro dans le code de la feuille (clic droit sur l'onglet et Visualiser le code) :
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim P As Range
Set P = Intersect(Range("H2:S" & Rows.Count), Me.UsedRange.EntireRow)
If Not P Is Nothing Then
  Application.EnableEvents = False
  P.Rows(1).Copy P
  Application.EnableEvents = True
End If
End Sub
Enregistrez le fichier en .xlsm (acceptant les macros).

La macro s'exécute chaque fois que des données sont modifiées.

Sur votre fichier la durée d'exécution est de 0,85 seconde chez moi.

A+
 

job75

XLDnaute Barbatruc
Re,

Avec AutoFill c'est plus rapide (0,44 seconde) :
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim P As Range
Set P = Intersect(Range("H2:S" & Rows.Count), Me.UsedRange.EntireRow)
If Not P Is Nothing Then
  Application.EnableEvents = False
  P.Rows(1).AutoFill P
  Application.EnableEvents = True
End If
End Sub
A+
 

job75

XLDnaute Barbatruc
Bonjour tigeline001, le forum,

Si le nombre de lignes de données en colonnes A:G se réduit, il faut que le nombre de lignes des formules en colonnes H:S se réduise aussi.

Donc finalement utilisez cette macro :
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim derlig&
Application.ScreenUpdating = False
Application.EnableEvents = False
If [A1] = "" Then [A1] = "Titre1" 'sécurité
derlig = [A:G].Find("*", , xlValues, , xlByRows, xlPrevious).Row
If derlig = 1 Then derlig = 2
[H2:S2].AutoFill Range("H2:S" & derlig)
With Me.UsedRange.Rows
  If .Count > derlig Then Range("A" & derlig + 1 & ":S" & .Count).Delete xlUp
End With
Application.EnableEvents = True
With Me.UsedRange: End With 'actualise la barre de défilement verticale
End Sub
Une remarque pour terminer : vous avez dans votre tableau des lignes de couleurs alternées.

Il vaut mieux appliquer les couleurs par Mise en forme conditionnelle (MFC), renseignez-vous si vous ne connaissez pas.

Bonne journée.
 
Dernière édition:

chris

XLDnaute Barbatruc
Bonjour tigeline001, Job75, le forum

Une autre approche : mettre le tableau sous forme de tableau.
J'ai redéfini les les noms en fonction du tableau, supprimé bordure et couleur puisque le style de tableau fait la même chose. Cela allège de 39k le poids du classeur.

Dans les tableaux, les formules suivent automatiquement l'évolution du nombre de lignes, en + ou en -
 

Pièces jointes

  • Mise_a_jour_Tableau.xlsx
    470.1 KB · Affichages: 23

job75

XLDnaute Barbatruc
Bonjour chris,

Les tableaux Excel vont très bien quand on entre de nouvelles données ligne par ligne.

Mais si l'on essaie par exemple de transférer par copier-coller les colonne A:G d'un autre classeur ou d'une autre feuille (avec plus ou moins de données) il y a problème.

Testez les copier-coller sur les 2 fichiers joints, avec ou sans tableau Excel...

A+
 

Pièces jointes

  • Mise_a_jour avec tableau Excel(1).xlsx
    646.3 KB · Affichages: 27
  • Mise_a_jour par macro sans tableau Excel(1).xlsm
    626.4 KB · Affichages: 21

chris

XLDnaute Barbatruc
Bonjour

Quand on met sous forme de tableau une plage contenant déjà moult formules, il est conseillé d'effacer ensuite toutes les lignes de formules sauf la première puis de recopier celle-ci (sélection des 12 cellules puis double clic sur la poignée de recopie). Effacement + recopie prend 30 secondes.
Ainsi il est enregistré dans les paramètres du tableau l'uniformité des formules et le copier/coller même de 4000 lignes propage bien les formules.
 

Discussions similaires

Statistiques des forums

Discussions
314 492
Messages
2 110 191
Membres
110 696
dernier inscrit
GUI42380