Excel garder la référence d'une cellule
RésoluJ'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..
Configuration: Windows XP Internet Explorer 6.0
25 réponses
La problématique centrale concerne la préservation d'une référence de cellule dans Excel après la suppression de lignes, lorsque B1 référence B2 qui elle-même pointe vers B3 et ainsi de suite. Des solutions évoquées incluent une macro qui efface la dernière cellule écrite dans une colonne pour que les formules se réajustent, et d'autres discutent d'un mappage logique des références après suppression. Plusieurs échanges portent sur la nécessité d'identifier la cellule non vide suivante et d'appliquer une macro adaptée, notamment en travaillant sur l'onglet cote1 et en ciblant la colonne concernée. En pratique, l'approche dépend fortement du contexte (structure des données et localisation des formules) et aucune solution universelle ne peut être recommandée sans examen du fichier.
-
Par de soucis, Faut surtout remercier JJsteing !
J'ai bien fais de lui linker ton post =D !
Post Résolu -
Je suis désolée j'arrive pas à mettre la discussion en "résolu"
-
ContributeurNormal, tu n'est pas inscrit.. je post à un modo ;)...
ps pour les modo... et là.. le ptit lien dans le mail (cf https://forums.commentcamarche.net/forum/affich-13555615-resolu-pour-un-post-anonyme#4) prend toute sa grandeur :)
-
-
Fin => dernière cellule non vide, c'est ce que je voulais dire =), les fichiers excels n'ont pas de fin ^^ enfin si vers ZZ(9999 E+99) ^^
-
Contributeurrajoute a la fin de ta macro :
DerCell = Cells(16384, 5).End(xlUp).Row ' donne la derniere non vide
Cells(DerCell - 1, 5).Select
Selection.AutoFill Destination:=Range("E" & DerCell - 1 & ":E" & DerCell) -
Je vais devoir rentrer chez moi... je répondrais à vos questions si vous en avez d'autres dans la fin de journée..
Mais en tout cas MERCI beaucoup de passer du temps.. -
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 ? -
Contributeurok.. 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?? -
Contributeurah je compren dmieux avec cote1 ;)
ok.. je regarde -
Contributeurpour 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 -
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 =) -
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 ? -
Contributeurok, 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-
-
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
-
-
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)-
-
-
@CaroooAhhhh 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??
-
-
Contributeurle 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 -
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 ?
-
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 ^^
-
-
Contributeurdonc 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 ;)-
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 -
-
-
Compliqué votre histoire :x... nouveau défi pour JJsteing !
-
Contributeurexactement ?? mais lequel?? solution 1, 2 ou 3 ??
-
Contributeurou 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 : ""-
-
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 ^^
-
-
ContributeurEn 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 : ""
??
- 1
- 2