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

Résolu
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..
Configuration: Windows XP Internet Explorer 6.0

25 réponses

Résumé de la discussion

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.

Bobot (l’IA à votre service)
  1. Par de soucis, Faut surtout remercier JJsteing !
    J'ai bien fais de lui linker ton post =D !
    Post Résolu
    0
    1. 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) ^^
      0
      1. Merci beaucoup ça marche^^
        Merci
        merci merci
        merci ^^
        0
    2. Contributeur
      rajoute 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)
      -1
      1. Merci merci merci merci ^^
        0
    3. 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..
      0
      1. 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
        1. Je voudrais pas jusqu'à la fin mais jusqu'à la dernière cellule non vide (puisqu'elle est variable)..
          0
      2. Contributeur
        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
        1. Oui je crois que c'est ce qu'il faut faire ^^ est-ce que ut sais comment faire?
          0
        2. 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
      3. Contributeur
        ah je compren dmieux avec cote1 ;)

        ok.. je regarde
        0
        1. Contributeur
          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
          1. Et une fois que tu l'as trouvé t'effaces le contenu comment?
            0
        2. 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
          1. 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
        3. 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
          1. Est-ce que c'est obligé de mettre la question avant quel colonne tu veux inspecter?
            0
        4. Contributeur
          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
          1. As tu lancé la macro? pour voir afficher ref il faut que la macro soit lancé...
            0
          2. 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
        5. 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
          1. 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
          2. 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
          3. @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??
            0
        6. Contributeur
          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
          1. 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
            1. 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
          2. Contributeur
            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
            1. 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
            2. Je pars 1h je re après (au cas ou tu pose d'autres questions)
              0
          3. Compliqué votre histoire :x... nouveau défi pour JJsteing !
            0
            1. C'est pas spécialement compliqué je pense mais c'est difficile POUR MOI à formaliser...^^
              0
          4. Contributeur
            exactement ?? mais lequel?? solution 1, 2 ou 3 ??
            0
            1. Désolé je répondais au début au poste tout au dessus..c'est à cause du temps que je mets pour écrire ^^
              0
            2. 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
          5. Contributeur
            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
            1. 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
            2. 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
          6. Contributeur
            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
            • 1
            • 2