#Réf!

Bonjour à tous,

Dans un fichier j'ai une feuille 1 et une feuille 10
Dans la feuille 10, la cellule "A94", contenant la formule suivante:
=Feuil1!$a12

le informations remplissant cette cellule se trouvant sur la feuille 1, dans un tableau, dans la cellule "A12".
Ce tableau est trié automatiquement par une macro. Lors de la suppression de toute une ligne de ce tableau (par le biais d'un UserForm), je reçois dans ma feuille 10 l'erreur suivante:
#Réf!

Pourriez vous m'aider à supprimer cette erreur ? Et donc de garder la formule initiale.

Merci par avance

Toubabou57300

5 réponses

  1. Bonjour MIKE-31,

    Un petit soucis lorsque je modifie le code, je reçois le message d'erreur suivant:


    Sheets("Synthèse").Select
    Range("A" & Sheets("Synthèse").Columns(1).Find(Box1.Text, , , xlWhole, xlByColumns, xlPrevious).Row).EntireRow.Delete
    Sheets("LUTIN").Select
    Range("A" & Sheets("LUTIN").Columns(1).Find(Box1.Text, , , xlWhole, xlByColumns, xlPrevious).Row).EntireRow.Delete
    Sheets("SIGNALETIQUE").Select
    Range("A" & Sheets("SIGNALETIQUE").Columns(1).Find(Box1.Text, , , xlWhole, xlByColumns, xlPrevious).Row).EntireRow.Delete


    Tous les ==> Range("A &........... sont surligné en jaune

    Merci

    Toubabou57300
    0
    1. Re,

      plusieurs problèmes sur ta feuille SIGNALETIQUE tu recherches un nom exemple ALDO ensuite sur tes feuilles LUTIN et Synthèse en colonne A tu as le nom et le prénom, il faut faire un choix, ensuite avec ton code il faudrait rechercher sur des valeurs saisies pas le résultat de formule

      si sur chaque feuille en A tu saisis uniquement le nom exemple ALDO en remplaçant ces lignes de code
      Sheets("SIGNALETIQUE").Rows(Box1.ListIndex + 2).Delete Shift:=xlUp
      Worksheets("LUTIN").Rows(lig_HE + 10).Delete Shift:=xlUp

      par
      Sheets("Synthèse").Select
      Range("A" & Sheets("Synthèse").Columns(1).Find(Box1.Text, , , xlWhole, xlByColumns, xlPrevious).Row).EntireRow.Delete
      Sheets("LUTIN").Select
      Range("A" & Sheets("LUTIN").Columns(1).Find(Box1.Text, , , xlWhole, xlByColumns, xlPrevious).Row).EntireRow.Delete
      Sheets("SIGNALETIQUE").Select
      Range("A" & Sheets("SIGNALETIQUE").Columns(1).Find(Box1.Text, , , xlWhole, xlByColumns, xlPrevious).Row).EntireRow.Delete

      ton code doit fonctionner
      0
      1. Bonsoir à tous,

        Désolé cela ne fonctionne pas. Lorsque je rentre votre formule il va me chercher une information dans la 95ème cellule!!!!

        Je vous joint mon fichier

        Identifiant: Administrateur
        MP: 0

        Dans l'UserForm "SIGNALÉTIQUE", sélectionner une personne, puis supprimer.
        Ensuite dans la feuille LUTIN la personne est supprimé mais pas dans "SYNTHÈSE"

        Je ne suis pas sûr d'être très clair

        http://www.cjoint.com/c/ELvthhjmXPb

        Merci par avance

        Toubabou57300
        0
        1. Bonsoir,

          pas besoin de macro pour ça, si ta première formule est en ligne 2 et la première valeur à rapatrier est également en ligne A2 utilise cette formule

          =INDIRECT("Feuil1!A"&LIGNE())


          s'il y a un décalage de ligne il suffira d'ajouter ou ôter une valeur à l'index ligne exemple =INDIRECT("Feuil1!A"&LIGNE()+2)

          et à partir de la tu peux supprimer tes lignes Feuil1, si tu rencontres des difficultés crée un fichier exemple et envoi le à partir de ce lien pour avoir une formule adaptée
          https://www.cjoint.com/
          A+
          Mike-31

          Une période d'échec est un moment rêvé pour semer les graines du savoir.
          0
          1. Contributeur
            Bonjour
            ça semble difficile,( mais je ne suis pas un cador en VBA loin de là), sauf à régénérer a, formule avec le macro
            chaque fois que vous supprimez un =e ligne, la formule se décalé=e d'autant 12 devient A1 ect... et quand vus avez passé A1, c'est bien sur #REF qui s'affiche
            une ruse pour contourner ce problème serait de ne pas supprimer de ligne avec la macro, mais de copier tout le tableau (voir plus, les lignes vides n'ont pas d'importance) en dessous de la ligne et de le coller sur la ligne à supprimer

            crdlmnt
            0