Excel garder la référence d'une cellule

Résolu/Fermé
Carooo - 24 juil. 2009 à 10:37
jjsteing Messages postés 1669 Date d'inscription vendredi 11 mai 2007 Statut Contributeur Dernière intervention 21 mai 2012 - 27 juil. 2009 à 09:07
Bonjour à tous !!

J'aimerais savoir s'il est possible de garder la référence d'une cellule après suprression de celle-ci.
Je m'explique: en B1 j'ai une formule qui fait référence à la cellule en B2 celle-ci fait référence elle-même à la cellule B3 etc...
Je voudrais que quand je supprime mais ligne de B4 à B6, ma formule fonctionne toujours en faisant reférence à la cellule d'après.


Je sais pas si je me suis fait comprendre..

Je vous remercie d'avance si vous pouvez m'aider..
A voir également:

25 réponses

hich24 Messages postés 1619 Date d'inscription mardi 2 octobre 2007 Statut Membre Dernière intervention 11 avril 2023 752
24 juil. 2009 à 10:41
tu veut que la cellule B7 garde la reference B3 ?
0
hich,

Je voudrais en faite que la cellule B3 garde dans la forme la cellule B7..

En faite pour spécifier ma demande je voudrais que si la cellule en dessous et vide alors j'applique une formule et si elle est remplit j'en applique une autre (j'utilise un si). La suppression des lignes se fait "de manière automatique" à l'aide d'une macro..

Tu penses qu'il existe des solutions à ce problème?
0
3gwin Messages postés 16 Date d'inscription vendredi 24 juillet 2009 Statut Membre Dernière intervention 24 juillet 2009
24 juil. 2009 à 10:45
Je pense que cela n'est pas possible. Je m'explique, étant donné que tu tu fais référence d'une cellule à l'autre, tu construits une chaine. Et le fait de supprimer une cellule supprime un maillon de ta chaine...
Avec ce systéme chaque cellule est basée sur une autre donc je ne pense pas que tu puisse en supprimer une sans rompre cette chaine.

Cordialement
0
3gwin,
Et si je veux comme je l'ai dit auparavent que:
Si je veux supprimer des lignes "de manière automatique" et après si la cellule en dessous et vide j'applique une formule et si elle est remplit j'en applique une autre..Est-ce que c'est possible?
0
LeDénicheur Messages postés 565 Date d'inscription samedi 5 janvier 2008 Statut Membre Dernière intervention 1 décembre 2013 358
24 juil. 2009 à 10:48
En fait je pense qu'il veut que dans son exemple, B7 (qui devient B4 après la supression de B4 à B6) fasse référence à B3, oui ^^

Si tu fesais une macro ça serait ptête plus simple ^^, et tu cliques à chaque fois pour mettre à jour, quand tu supprimes une formule... tu t'y connais un peu en VBA excel ?
0
En faite je m'y connais pas assez pour créer une formule qui fera cela..
c'est B3 qui fait référence à B4 puisqu'après suppression des lignes je n'ai plus rien en B4? à moins que cela se dise dans l'autre sens?


Merci beaucoup de prendre le temps de répondre à ma question :) ça fait plaisir
0
LeDénicheur Messages postés 565 Date d'inscription samedi 5 janvier 2008 Statut Membre Dernière intervention 1 décembre 2013 358
24 juil. 2009 à 11:21
Tu as une formule bien précise pour les colonnes, ou c'était juste une idée dont tu parlais ?
Une formule du genre B1=B2+1 ou B2=B1+4, que j'essaye de te faire un fichier excel avec la macro dedans
0
c'est une formule bien précise et assez compliquer je te la mets ici mais il y a juste un = qui différe entre les deux formules qui normalement est placées toujours au même nombre de caractère..

en E10 : =SI(E$11="";SOMMEPROD(('Relevé de mesure'!$B$15:$B$114<=Cote1!C11)*('Relevé de mesure'!$B$15:$B$114>=Cote1!C10));SOMMEPROD(('Relevé de mesure'!$B$15:$B$114<Cote1!C11)*('Relevé de mesure'!$B$15:$B$114>=Cote1!C10)))

en E11 : =SI($E12="";SOMMEPROD(('Relevé de mesure'!$B$15:$B$114<=Cote1!C12)*('Relevé de mesure'!$B$15:$B$114>=Cote1!C11));SOMMEPROD(('Relevé de mesure'!$B$15:$B$114<Cote1!C12)*('Relevé de mesure'!$B$15:$B$114>=Cote1!C11)))

jusque E30 ...

et ma macro peut etre amené à supprimer des lignes en dessous:

Sub SupprimerLignes()
Const LigneDebut = 10
Const LigneFin = 31
Const Colonne = 3
Const lignemax = 5
Const colonnemax = 3
For i = LigneFin To LigneDebut Step -1
If Cells(i, Colonne) > Cells(lignemax, colonnemax) Then
Rows(i & ":" & i).Delete Shift:=xlUp
End If
Next i
End Sub

Comme ça tu sais tout :D
0
Carooo > Carooo
24 juil. 2009 à 11:47
Petite précision je voulais dire que ma macro permet de supprimer par exemple les lignes de 26à 30 (si il commence à supprimer une ligne la 24 par exemple, il supprimera toutes les autres lignes en dessous..je sais pas si ça peut aider pour la compréhension..)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jjsteing Messages postés 1669 Date d'inscription vendredi 11 mai 2007 Statut Contributeur Dernière intervention 21 mai 2012 181
24 juil. 2009 à 12:24
Voici un copier coller de nos mp... LeDénicheur à raison dans son post 2 ??

LeDénicheur:
Ya quelqu'un qui a besoin d'aide pour VBA si tu veux ^^
https://www.commentcamarche.net/

Bonne journée
Meilleures réponses pour « Tu peux peu être l'aider.. »

jjsteing, le vendredi 24 juillet 2009 à 12:03:19

*

Je pense que oui.. mais le seul hic.. c'est que j ai rien compris... :(

il a une formule sur 50 ligne et il veut une macro pour supprimer le ligne de 17 à 23.. bon ca ok

mais apres.. il veut que la nouvelle ligne 17 ai la meme formule qu'en (ancien)24 ou bien quelle prenne la formule de (ancien)17 ??

Répondre à jjsteing


2
LeDénicheur, le vendredi 24 juillet 2009 à 12:09:20

Si j'ai bien compris, il veut que que l'ancienne 24 prenne la formule de la 17
Avec un exemple ça donne :
AVANT :
B16 = B15+2
B17 = B16² x 2
...
...
...
B24 = B23*2

et APRES :
B16 = B15+2
B17 = B16² x 2 (ancienne 24 devenue 17)
...
...
...
B24 = B23*2 (ancienne 31 devenu 24)

En gros il veut que les formules interne ne bouge pas ^^
0
Je suis pas sur d'avoir compris le post..
Je crois que c'est beaucoup plus simple que ce que dit le dénicheur et c'est dans l'autre sens:

En B2 : si(B3="";A4/2;A4*2)
En B3 : si(B4="";A5/2;A5*2)
En B4 : si(B5="";A6/2;A6*2)
.....

Et donc quand je supprime la ligne 4 et toutes les autres lignes qui suivent ma cellule B3 ne peut m'afficher la formule car la cellule B4 a été supprimé..et moi je voudrais qui tiennent juste compte de l'emplacement..

================>>>>>>>>>>>>>>>>>>>
tu vois pour moi en faite c'est juste vérifier si la cellule qui est après est vide si elle l'est pas j'applique une formule si elle l'est j'en applique une autre..

Caroline (et je suis une fille faut arreter de dire "il" lol)

Merci beaucoup pour votre dispo
0
jjsteing Messages postés 1669 Date d'inscription vendredi 11 mai 2007 Statut Contributeur Dernière intervention 21 mai 2012 181
24 juil. 2009 à 13:39
En B2 : si(B3="";A4/2;A4*2) => =A4*2
En B3 : si(B4="";A5/2;A5*2) => =A5*2
En B4 : si(B5="";A6/2;A6*2) => =A6*2
En B5 : si(B6="";A7/2;A7*2) => =A7/2
en B6 : ""

apres macro qui suppr B4

En B2 : si(B3="";A4/2;A4*2) => =A4*2
En B3 : si(B4="";A5/2;A5*2) => =A5/2
En B4 : ""
En B5 : si(B6="";A7/2;A7*2) => =A7/2
en B6 : ""

ou

En B2 : si(B3="";A4/2;A4*2) => =A4*2
En B3 : si(B4="";A5/2;A5*2) => =A5*2
En B4 : si(B5="";A6/2;A6*2) => =A6/2
En B5 : ""
en B6 : ""

??
0
jjsteing Messages postés 1669 Date d'inscription vendredi 11 mai 2007 Statut Contributeur Dernière intervention 21 mai 2012 181
24 juil. 2009 à 13:41
ou encore

En B2 : si(B3="";A4/2;A4*2) => =A4*2
En B3 : si(B4="";A5/2;A5*2) => =A5*2
En B4 : si(B6="";A7/2;A7*2) => =A7/2
En B5 : ""
en B6 : ""
0
Exactement!!!

Mais le problème réside dans le fait que lors de la suppression de ligne (si je supprime B4 B5 et B6) la formule ne marche plus..
0
Après la macro, elle supprime toutes les lignes au dessus d'une valeur (qui est dans une autre colonne) et comme les valeurs sont rangés par ordre croissant si elle supprimme la ligne 5 et va supprimer toute celle d'en dessous.

Et c'est vraiment ma juste la case du dessous qui est importante: la formule doit rester inchangé. ce n'est donc pas ça après la macro:

En B2 : si(B3="";A4/2;A4*2) => =A4*2
En B3 : si(B4="";A5/2;A5*2) => =A5*2
En B4 : si(B6="";A7/2;A7*2) => =A7/2
En B5 : ""
en B6 : ""

mais ceci pour etre sur d'être bien comprise: Avant macro:
En B2 : si(B3="";A4/2;A4*2) => =A4*2
En B3 : si(B4="";A5/2;A5*2) => =A5*2
En B4 : si(B5="";A6/2;A6*2) => =A6*2
En B5 : si(B6="";A7/2;A7*2) => =A7*2
en B6 : si(B7="";A8/2;A8*2) => =A8/2
en B7 : ""

Après la macro:

En B2 : si(B3="";A4/2;A4*2) => =A4*2
En B3 : si(B4="";A5/2;A5*2) => =A5*2
En B4 : si(B5="";A6/2;A6*2) => =A6/2
En B5 : ""
en B6 : ""


Je te remercie car tu m'aide à formaliser le problème ^^
0
jjsteing Messages postés 1669 Date d'inscription vendredi 11 mai 2007 Statut Contributeur Dernière intervention 21 mai 2012 181
24 juil. 2009 à 13:58
exactement ?? mais lequel?? solution 1, 2 ou 3 ??
0
Désolé je répondais au début au poste tout au dessus..c'est à cause du temps que je mets pour écrire ^^
0
si je me trompe pas c'est aucune des 3 solutions puisque si tu supprime B4 tu n'as plus de ligne..
Mais j'espère que le post que je t'ai mis avant t'aide à comprendre la problèmatique..

MERCI
0
LeDénicheur Messages postés 565 Date d'inscription samedi 5 janvier 2008 Statut Membre Dernière intervention 1 décembre 2013 358
24 juil. 2009 à 14:02
Compliqué votre histoire :x... nouveau défi pour JJsteing !
0
C'est pas spécialement compliqué je pense mais c'est difficile POUR MOI à formaliser...^^
0
jjsteing Messages postés 1669 Date d'inscription vendredi 11 mai 2007 Statut Contributeur Dernière intervention 21 mai 2012 181
24 juil. 2009 à 14:07
donc une simple supression de ligne comme si c'était l utilisateur qui sélectionnait toutes les lignes suivantes( de B5 à B10 par ex) et clique de droit supprimer..

ps : Je te remercie car tu m'aide à formaliser le problème =>
De rien.. je préfère poser 15 fois la question différement pour etre sur d etre compris, histoire de pas partir sur de fausse piste ;)
0
Oui la macro pour supprimer il n'y a pas de prob pour ça j'ai trouvé ce qui me fallait:

Sub SupprimerLignes()
Const LigneDebut = 10
Const LigneFin = 31
Const Colonne = 3
Const lignemax = 5
Const colonnemax = 3
For i = LigneFin To LigneDebut Step -1
If Cells(i, Colonne) > Cells(lignemax, colonnemax) Then
Rows(i & ":" & i).Delete Shift:=xlUp
End If
Next i
End Sub

le prob maintenant c'est de faire pour l'autre truc: qui me garde la référence de la cellule
0
Je pars 1h je re après (au cas ou tu pose d'autres questions)
0
LeDénicheur Messages postés 565 Date d'inscription samedi 5 janvier 2008 Statut Membre Dernière intervention 1 décembre 2013 358
24 juil. 2009 à 14:07
En gros, tu voudrais que si on supprime B4, Bah la formule de la B4 se copie dans l'ancienne B5, donc dans la nouvelle B4 ? =D c'est ça ?
0
En gros, tu voudrais que si on supprime B4, Bah la formule de la B4 se copie dans l'ancienne B5, donc dans la nouvelle B4 ? =D c'est ça ?

si on supprime la ligne 4 toute les autres lignes après se supprime, c'est un fait.j'ai donc que des cellules vides après la ligne 3

Non c'est pas ça que je veux ^^
0
jjsteing Messages postés 1669 Date d'inscription vendredi 11 mai 2007 Statut Contributeur Dernière intervention 21 mai 2012 181
24 juil. 2009 à 14:18
le prob maintenant c'est de faire pour l'autre truc: qui me garde la référence de la cellule

de quelle référence? la formule qui ne doit plus exister vu que tu supprimes les lignes?? j suis pas réveillé ou bien.. pourtant j 'ai 2 heures de plus que vous.. bon, en week end, en peignoir sur mon canap.. mais bon
0
LeDénicheur Messages postés 565 Date d'inscription samedi 5 janvier 2008 Statut Membre Dernière intervention 1 décembre 2013 358
24 juil. 2009 à 14:28
C'est pour ça que je penses qu'une macro qui stockerais les formules, pour les recoller ensuite bah ça pourrait être pas mal ?
Sinon tu peux pas nous upload ton fichier qu'on test un peu des choses et qu'on cible mieux le soucis ?
Faut mettre JJsteing et moi en condition là ! x)
0
Mdr!!

Désolé je parle pas bien la France ^^


http://www.cijoint.fr/cjlink.php?file=cj200907/cijFQAAVUv.xls

Voici mon fichier, mon unique problème c'est qu'il m'affiche REF quand je supprime mes lignes..
0
Ahhhh je sais il me faudrait une macro qui efface la dernière cellule écrite dans une colonne donnée..et la ma formule marcherait...
vous savez comment faire ça??
0
Carooo > Carooo
24 juil. 2009 à 15:46
Ahhhh je sais il me faudrait une macro qui efface le CONTENU de la dernière cellule écrite dans une colonne donnée..et la ma formule marcherait...
Ou meme qu'à la place de supprimer des lignes dans la macro la elle me supprime le contenu

Sub SupprimerLignes()
Const LigneDebut = 10
Const LigneFin = 31
Const Colonne = 3
Const lignemax = 5
Const colonnemax = 3
For i = LigneFin To LigneDebut Step -1
If Cells(i, Colonne) > Cells(lignemax, colonnemax) Then
Rows(i & ":" & i).Delete Shift:=xlUp
End If
Next i
End Sub

vous savez comment faire ça??
0
jjsteing Messages postés 1669 Date d'inscription vendredi 11 mai 2007 Statut Contributeur Dernière intervention 21 mai 2012 181
24 juil. 2009 à 15:43
ok, jai ton fichier;)


c'est mieux de travailler sur du concret ;)

plusieurs choses :
1)
Chez moi, j ai pas de #REF.. mais des #DIV/0 qui peuvent etre résoluen changeant par ex pour D12 :

=MOYENNE(D15:E114)
=>
=si(D15<>"";MOYENNE(D15:E114);0)

2)
dans ton module:

colonne=3 .. non.. vu que colonne B et C sont fusionné, c'est la deuxieme colonne...

et tu as :
Const lignemax = 5
Const colonnemax = 3
puis : If Cells(i, Colonne) > Cells(lignemax, colonnemax)
donc If Cells(i, Colonne) > Cells(5,3) ce qui correspond à la case vide a coté de "par :"

renvoie le nous corrigé stp
0
As tu lancé la macro? pour voir afficher ref il faut que la macro soit lancé...
0
Il faut que tu sois sur l'onglet cote1 désolé j'ai oublié de supprimer les autres onglets...
Quand le tableau est remplit "relevé de mesures" les autres onglets se remplissent.

Il faut donc que tu lances la macro pour que tu vois le probleme..
Je pense qu'au niveau de la macro c'est la bonne colonne..pour ce que j'ai fait jusque maintenant
Après pour effacer le contenu de la dernière valeur dans la colonne E je sais pas comment on fait..et je sais pas si c'est de ça que tu me parlais
0
LeDénicheur Messages postés 565 Date d'inscription samedi 5 janvier 2008 Statut Membre Dernière intervention 1 décembre 2013 358
24 juil. 2009 à 15:45
On récapépète !
On peut te faire une macro qui se déroulerait comme ça
- Tu cliques sur un joli bouton tout rose.
- Il s'affiche une Boxe avec une case blanche à remplir "Quelle colonne voulez vous inspecter ?"
- Tu mets une valeur comme A, B , C ou je ne sais pas, ce que tu voudra ^^
- Tu cliques sur OK
- Et là ça supprime la derniere valeure la colonne que tu voulais :p

J'vois pas l'interet de la macro mais, c'est ce que tu veux ?
0
Est-ce que c'est obligé de mettre la question avant quel colonne tu veux inspecter?
0
LeDénicheur Messages postés 565 Date d'inscription samedi 5 janvier 2008 Statut Membre Dernière intervention 1 décembre 2013 358
24 juil. 2009 à 15:56
Nan du tout, mais comment choisir celle que tu veux inspecter ?
C'est toujours la même ? J'ai pas pu inspecter ton fichier j'suis au boulot =)
0
Oui c'est toujours dans la colonne E..
EN faite c'est pour l'exploitation d'un tableau de mesure..faire des stats derrière mais des stats automatique.

Merci beaucoup ^^
0
jjsteing Messages postés 1669 Date d'inscription vendredi 11 mai 2007 Statut Contributeur Dernière intervention 21 mai 2012 181
24 juil. 2009 à 16:03
pour rechercher la derniere cellule ecrite :
a = Cells(16384, 1).End(xlUp).Row ' donne la derniere non vide

donc la derniere vide c'est a+1
0
Et une fois que tu l'as trouvé t'effaces le contenu comment?
0
jjsteing Messages postés 1669 Date d'inscription vendredi 11 mai 2007 Statut Contributeur Dernière intervention 21 mai 2012 181
24 juil. 2009 à 16:08
ah je compren dmieux avec cote1 ;)

ok.. je regarde
0
jjsteing Messages postés 1669 Date d'inscription vendredi 11 mai 2007 Statut Contributeur Dernière intervention 21 mai 2012 181
24 juil. 2009 à 16:18
ok.. donc ta macro marche bien..

J ai remarquer qu apres le fait qu il t affiche les #REF, si tu recopie la formule de la case E12 en E13, tout refonctionne...

Ca t irais ca .. de recopier l avant derniere case non vide de la colonne E dans la derniere??
0
Oui je crois que c'est ce qu'il faut faire ^^ est-ce que ut sais comment faire?
0
En faite ya mm juste à faire une macro pour étirer la formule de la première ligne jusqu'à la dernière cellule non vide..je sais pas laquelle des sol et la plus simple..
0
LeDénicheur Messages postés 565 Date d'inscription samedi 5 janvier 2008 Statut Membre Dernière intervention 1 décembre 2013 358
24 juil. 2009 à 16:29
Faire une macro qui prend une cellule et étire sa formule jusqu'a la fin, ya rien de plus simple :x
C'est ce que tu veux ?
0
Je voudrais pas jusqu'à la fin mais jusqu'à la dernière cellule non vide (puisqu'elle est variable)..
0