XL 2010 Figer lignes précédentes

IxeX

XLDnaute Nouveau
Bien le bonsoir !

J'ai un problème à vous soumettre (qui paraît assez simple sur le papier). Vous trouverez un fichier d'exemple ci-joint. Je m'explique :

J'ai un tableau avec une colonne "Résultat" qui correspond à la formule ("A")*$D$2

Dans mon exemple (ci-joint), je souhaiterais figer/verrouiller/rendre les lignes précédentes (A2:B7) non modifiables si A8 et B8 sont différentes de vide. De sorte que toute modification de ma variable (D2) ne change pas les résultats précédents (en orange dans mon exemple).

Merci d'avance de votre aide, suggestions et autres pistes !👍
 

Pièces jointes

  • exemple01.xlsx
    13.8 KB · Affichages: 17

IxeX

XLDnaute Nouveau
Bonsoir IxeX,

Un texte multiplié par autre chose renvoie toujours une valeur d'erreur, je ne vais pas plus loin.

A+

Merci pour l'intervention job75..................... si ce genre de commentaire te donne l'impression d'être plus intelligent, tant mieux.

Pour me part, je reste courtois.

IxeX a dit :
J'ai donc un tableau avec une colonne "Résultat" dont la première valeur correspond à la formule A2*$D$2

Cette syntaxe te convient-elle mieux Job75 ? Ceci afin que la conversation devienne plus constructive. Merci
 
Dernière édition:

Phil69970

XLDnaute Barbatruc
Bonjour IxeX, Job75, le forum

figer/verrouiller/rendre les lignes précédentes (A2:B7) non modifiables
Cela n'empêchera pas le calcul sur la feuille.

Des que excel voit une formule qui change exemple en D2 on met 20 à la place de 10 excel recalcule la ou les formules concernées par D2, que la feuille soit verrouillée ou non ne change rien.

Tout ce que l'on peut faire :
1)c'est empêcher le recalcul de la feuille complet mais il faudrait bien à un moment ou à un autre le rétablir et là pas de chance si D2 a changé les résultats des formules changeront....

2)Ou bien remplacer les formules par leurs résultats réels mais alors on perd l’intérêt des formules il ne restera que les valeurs !!!

@Phil69970
 
Dernière édition:

job75

XLDnaute Barbatruc
Bonjour IxeX, Phil69970, Laurent78,

Il a bien été dit :
les lignes précédentes (A2:B7) non modifiables si A8 et B8 sont différentes de vide.
Alors voyez le fichier .xlsm joint et cette macro dans le code de la feuille :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim h&, tabval
With [A1].CurrentRegion.Resize(, 2)
    h = .Rows.Count
    If h = 1 Then Exit Sub
    Application.ScreenUpdating = False
    Application.EnableEvents = False 'désactive les évènements
    If .Rows(h).Find("", , xlValues) Is Nothing Then 'si la dernière ligne est pleine
        Application.Undo 'annule les modifications
        tabval = .Value 'tableau des valeurs
        Application.Undo 'rétablit les modifications
        .Resize(h - 1) = tabval 'entre les valeurs en écrasant les formules
    Else
        .Columns(2).Offset(1).Resize(h - 1) = "=A2*D$2" 'rétablit les formules
    End If
    Application.EnableEvents = True 'réactive les évènements
End With
End Sub
Elle se déclenche quand on modifie ou valide une cellule quelconque.

A+
 

Pièces jointes

  • exemple(1).xlsm
    19 KB · Affichages: 4

IxeX

XLDnaute Nouveau
Merci de vos réponses ! Je viens de consulter ta solution de Job75 --> C'est propre et efficace ! 👍 Merci ! A moi de l'adapter à présent !

En attendant, j'ai opté pour une feuille secondaire que j'incrémente au fur et à mesure de la modification de ma variable.

J'associe ces lignes nouvellement créées à mon tableau principal en fonction des dates correspondantes et ainsi de suite... Je posterai le code prochainement en réponse.

Encore merci !
 

Statistiques des forums

Discussions
312 310
Messages
2 087 119
Membres
103 478
dernier inscrit
Frederic Lagger