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

Résolu
Carooo -  
jjsteing Messages postés 1670 Date d'inscription   Statut Contributeur Dernière intervention   -
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 1635 Date d'inscription   Statut Membre Dernière intervention   753
 
tu veut que la cellule B7 garde la reference B3 ?
0
Carooo
 
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   Statut Membre Dernière intervention  
 
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
Carooo
 
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   Statut Membre Dernière intervention   365
 
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
Carooo
 
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   Statut Membre Dernière intervention   365
 
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
Carooo
 
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
 
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 1670 Date d'inscription   Statut Contributeur Dernière intervention   181
 
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
Carooo
 
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 1670 Date d'inscription   Statut Contributeur Dernière intervention   181
 
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 1670 Date d'inscription   Statut Contributeur Dernière intervention   181
 
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
Carooo
 
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
Carooo
 
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 1670 Date d'inscription   Statut Contributeur Dernière intervention   181
 
exactement ?? mais lequel?? solution 1, 2 ou 3 ??
0
Carooo
 
Désolé je répondais au début au poste tout au dessus..c'est à cause du temps que je mets pour écrire ^^
0
Carooo
 
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   Statut Membre Dernière intervention   365
 
Compliqué votre histoire :x... nouveau défi pour JJsteing !
0
Carooo
 
C'est pas spécialement compliqué je pense mais c'est difficile POUR MOI à formaliser...^^
0
jjsteing Messages postés 1670 Date d'inscription   Statut Contributeur Dernière intervention   181
 
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
Carooo
 
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
Carooo
 
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   Statut Membre Dernière intervention   365
 
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
Carooo
 
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 1670 Date d'inscription   Statut Contributeur Dernière intervention   181
 
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   Statut Membre Dernière intervention   365
 
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
Carooo
 
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
Carooo
 
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
 
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 1670 Date d'inscription   Statut Contributeur Dernière intervention   181
 
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
Carooo
 
As tu lancé la macro? pour voir afficher ref il faut que la macro soit lancé...
0
Carooo
 
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   Statut Membre Dernière intervention   365
 
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
Carooo
 
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   Statut Membre Dernière intervention   365
 
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
Carooo
 
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 1670 Date d'inscription   Statut Contributeur Dernière intervention   181
 
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
Carooo
 
Et une fois que tu l'as trouvé t'effaces le contenu comment?
0
jjsteing Messages postés 1670 Date d'inscription   Statut Contributeur Dernière intervention   181
 
ah je compren dmieux avec cote1 ;)

ok.. je regarde
0
jjsteing Messages postés 1670 Date d'inscription   Statut Contributeur Dernière intervention   181
 
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
Carooo
 
Oui je crois que c'est ce qu'il faut faire ^^ est-ce que ut sais comment faire?
0
Carooo
 
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   Statut Membre Dernière intervention   365
 
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
Carooo
 
Je voudrais pas jusqu'à la fin mais jusqu'à la dernière cellule non vide (puisqu'elle est variable)..
0