Formule

Résolu/Fermé
ch_mika Messages postés 188 Date d'inscription lundi 19 janvier 2015 Statut Membre Dernière intervention 16 décembre 2022 - 16 juin 2017 à 20:19
ch_mika Messages postés 188 Date d'inscription lundi 19 janvier 2015 Statut Membre Dernière intervention 16 décembre 2022 - 19 juin 2017 à 12:58
Bonjour,

Je me suis crée un classeur avec plusieurs formules et une macro toute simple. La macro me permet d'insérer une ligne au dessus de la ligne 3 (en somme, j'insère toujours la ligne 3). Je me suis crée un bouton et chaque fois que j'appuie sur ce bouton, une ligne se crée bien au dessus de la ligne 3, mes mises en forme s'appliquent comme il faut, tout est bon.

Cependant, en N1, je me suis crée une formule afin que la cellule C3 s'affiche toujours en N1. Mais chaque fois que j'insère une ligne avec ma macro, la formule en N1 qui est "=C3" affiche "=C4" . Hors moi je veux qu'elle reste sur C3. J'ai essayé avec "$C3" mais ça fait la même chose.

C'est surement tout bête mais je n'arrive pas à trouver alors je me tourne vers vous. Y'a t-il une formule spécifique ?

Merci d'avance.

3 réponses

Vaucluse Messages postés 26496 Date d'inscription lundi 23 juillet 2007 Statut Contributeur Dernière intervention 1 avril 2022 6 418
16 juin 2017 à 20:39
Bonsoir
si vous insérez une ligne dans le champ, de la formule, bloquée ou non, elle va se décaler
Essayez d'inclure la mise en place de la formule (=C3) dans la macro qui insère la ligne pour la régénérer à chaque insertion.

Range("N1").Select
ActiveCell.FormulaR1C1 = "=R[2]C[-11]"


crdlmnt
0
ch_mika Messages postés 188 Date d'inscription lundi 19 janvier 2015 Statut Membre Dernière intervention 16 décembre 2022 70
16 juin 2017 à 20:48
Tout d'abord merci,

Votre formule marche mais malheureusement, si je viens à supprimer la ligne que je viens de créer pour x raison, la valeur de N1 change à nouveau et je me retrouve avec "#REF!" dans la case N1 au lieu de me réafficher la valeur précédent l'insertion de la nouvelle ligne.
0
@ch_mika

Dans ton énoncé initial, tu as écrit : « la formule en N1 qui est "=C3"
affiche "=C4". Hors moi je veux qu'elle reste sur C3. J'ai essayé avec
"$C3". »

Mais ton signe "$" bloque la colonne C ! pour bloquer la ligne 3 : C$3

Parfois, on a besoin de bloquer la colonne et la ligne : $C$3
Le signe "$" se met toujours devant ce qu'on veut bloquer.
 
0
Vaucluse Messages postés 26496 Date d'inscription lundi 23 juillet 2007 Statut Contributeur Dernière intervention 1 avril 2022 6 418
Modifié le 17 juin 2017 à 07:44
Bonjour tous
Dan
exact, mais le" blocage ne change pas la modification automatique de la formule lors de suppression de ligne

Ch_mika
en fait, (ça ne m'était pas venu à l'esprit tout de suite!!) mais inscrivez en N1:
=INDIRECT("C3")
le code transforme en adresse le texte entre guillemets et le texte lui ne change pas

crdlmnt
0
ch_mika Messages postés 188 Date d'inscription lundi 19 janvier 2015 Statut Membre Dernière intervention 16 décembre 2022 70
18 juin 2017 à 06:25
@Dan

Oui je le sais mais évidemment, j'avais essayé toutes les sortes de $.

Merci.
0
ch_mika Messages postés 188 Date d'inscription lundi 19 janvier 2015 Statut Membre Dernière intervention 16 décembre 2022 70 > Vaucluse Messages postés 26496 Date d'inscription lundi 23 juillet 2007 Statut Contributeur Dernière intervention 1 avril 2022
18 juin 2017 à 06:29
@Vaucluse

J'ai essayé mais ça ne fonctionne pas non plus quand je supprime la ligne. La référence "#REF!" s'inscrit de nouveau dans N1.

Finalement, c'est plus compliqué que je le pensait.

Merci à toi.
0
Vaucluse Messages postés 26496 Date d'inscription lundi 23 juillet 2007 Statut Contributeur Dernière intervention 1 avril 2022 6 418 > ch_mika Messages postés 188 Date d'inscription lundi 19 janvier 2015 Statut Membre Dernière intervention 16 décembre 2022
18 juin 2017 à 07:18
Là je ne comprend pas quelle ligne vous supprimez pour que ça ne fonctionne pas
testé chez moi: si j'écris =INDIRECT("C3") en N1, c'est bien toujours la valeurs de C3 qui reste indiquée si je supprime ou j'ajoute des lignes entre ligne 1 et 3
Quel est alors votre problème?
0
ch_mika Messages postés 188 Date d'inscription lundi 19 janvier 2015 Statut Membre Dernière intervention 16 décembre 2022 70 > Vaucluse Messages postés 26496 Date d'inscription lundi 23 juillet 2007 Statut Contributeur Dernière intervention 1 avril 2022
18 juin 2017 à 18:00
Je ne sais pas. En fait j'insère une ligne au dessus de la ligne 3 donc la nouvelle ligne devient la ligne 3 et l'ancienne devient la ligne 4. Ensuite, je supprime la nouvelle ligne 3 ce qui fait que la ligne 4 redevient la ligne 3.
Votre formule fonctionne quand j'insère une ligne mais pas quand je la supprime donc je ne comprends pas, c'est pourquoi je suis ici, je ne sais pas.

Et comme je veux que mon tableur ne comporte aucun défaut, je travaille à toutes les éventualités pour corriger certains problèmes qui pourraient arriver.
0
Frenchie83 Messages postés 2240 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 11 août 2023 338
Modifié le 18 juin 2017 à 06:57
Bonjour
Pour obtenir ce que vous dédirez, il faut que la cellule N1 réagisse à chaque modification de votre feuille.
Vous pouvez tester ceci, soit vous copiez ce bout de code dans le module de la feuille en question.
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
   [N1] = [C3]
End Sub

ou bien utilisez une formule
=SIERREUR(SI(ESTVIDE(INDIRECT("C3"));"";INDIRECT("C3"));"")

Cdlt
-1
ch_mika Messages postés 188 Date d'inscription lundi 19 janvier 2015 Statut Membre Dernière intervention 16 décembre 2022 70
18 juin 2017 à 18:02
Bonjour et merci, mais malheureusement, cette formule me renvoie à un chiffre qui n'a aucun rapport avec ce que je veux.

Merci quand même.
0