Problème de référence

Résolu
Bonjour,
J'ai un problème que je comprends mais dont je ne trouve pas la solution, je vais essayer de vous l'expliquer le plus clairement possible :

J'ai 2 feuilles que j'appelle Feuille 1 et Feuille 2 qui sont des feuilles de saisies manuelles (les données sont ensuite enregistrées dans une 3ème feuille via une macro)
Sur la Feuille 1, je veux vérifier qu'une case de la Feuille 2 est vide, j'ai la formule : =SI(ESTVIDE('Feuille 2'!D3);"OK";"PB")
Sauf que lorsqu'on applique la macro d'enregistrement des données sur cette Feuille 2, la feuille disparait pour être remplacée par une feuille identique mais vierge, qui est renommée "Feuille 2".
Et donc dans ma formule sur la Feuille 1, j'ai un problème, puisqu'il ne trouve plus la référence indiqué. =SI(ESTVIDE(#REF)"OK";"PB")

Voila mon problème, quelqu'un aurait-il une idée pour voir comment le résoudre? Pour info, je ne peux pas trop changer ma macro de la feuille 2, qui remplace les données par une feuille vierge...

Merci d'avance de vos réponses

8 réponses

  1. Bonjour,
    La reconstruction du classeur, selon la macro et vos renseignements, n'est pas fiable (manque la structure de vos données et du classeur).
    Désolé mais je ne peux rien faire de plus.

    0
    1. Oui j'imagine bien que c'est compliqué, vu la complexité des classeurs. en tout cas chez moi tout fonctionne donc je vais laisser comme ça pour le moment (j'ai deja enlevé quelques lignes inutiles).

      Merci quand même.
      Alice
      0
  2. Bonjour,
    Merci pour les informations qui me permettent de créer un classeur analogue et ainsi comprendre votre macro.
    Je vous tiendrai au courant du résultat.

    0
    1. Bonjour,
      Merci de la réponse.
      Pouvez-vous me fournir les noms exacts de chaque feuille de votre classeur, y compris celui/ceux de la/des feuilles masquée/s ?
      En plus : le nom de la feuille ou se trouve le bouton qui déclenche la macro... !

      Salutations.
      Le Pingou
      0
      1. Par rapport au code envoyé, la feuille où se trouve le bouton s'appelle "Feuille1" (c'est là qu'on saisit les données), la feuille où on copie les données s'appelle "Données", et la feuille masquée (qui permet de remplacer la Feuille1 une fois que les infos sont copiées) s'appelle "vierge Feuille1".
        0
    2. Bonjour,

      Et avec la formule INDIRECT, pensez-vous que je puisse retrouver la case que je cherche ?? On m'en a parlé mais je ne maitrise pas cette formule, je suis en train de regarder ce que ça peut donner...

      Merci d'avance !
      0
      1. En effet en mettant le nom de mon onglet dans la case AA1, j'ai réussi avec la formule suivante : =SI(ESTVIDE(INDIRECT(AA1&"!D3"));"OK";"PB"). Ca fonctionne quand on supprime l'onglet et qu'on en met un nouveau que l'on nomme pareil (ce que fait la macroo globalement).

        Je passe le sujet en Résolu, merci
        0
      2. Bonjour,
        Eh bien c'est parfait.
        Cependant vous devriez revoir la macro car c'est bien là que réside le problème.
        Salutations.
        Le Pingou
        0
      3. Pas spécialiste de VBA, j'ai parfois du mal à comprendre cette macro, mais je vais quand même essayer de revoir ça.
        Merci
        0
    3. Bonjour,
      Juste au passage, ce code est bien boiteux mais bon s'il fonctionne...., contrôler le nom des feuilles soit bien corrects ....[Feuille 1] est différent de [ Feuille1] ....

      0
      1. Ce n'est pas moi qui ait fait le code et en effet j'ai du mal à comprendre certaines parties... Par contre j'ai changé quelques noms, donc peut-être normal qu'il y ait des coquilles !
        0
    4. Malheureusement je ne peux pas vous le joindre, c'est un fichier pro que je ne souhaite pas diffuser (et il est compliqué à simplifier).
      Cependant je vous mets la macro, la 1ère partie c'est la copie des données (à partir d'un tableau de synthèse) et la 2ème partie, c'est le remplacement de la feuille.
      En espérant que cela puisse vous aider... Si besoin de quelques infos sur la feuille, je pourrais voir pour les envoyer.


      Sub Validation
      Dim ligndestination As Integer
      If Cells(5, 27).Value = "OK" Then
      i = 1
      feuilledestination = "Données"

      ActiveSheet.Unprotect
      Sheets("Données").Unprotect

      ligndestination = Cells(3, 27).Value
      Cells.Select
      Range("F21").Activate
      Selection.Copy
      Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
      :=False, Transpose:=False
      Application.CutCopyMode = False
      For col = 26 To 29
      For ligne = 2 To 50
      Item = Cells(ligne, col - 1).Value
      valeur = Cells(ligne, col).Value
      If Item <> "" Then
      Do Until Sheets(feuilledestination).Cells(5, i).Value = ""
      If Sheets(feuilledestination).Cells(5, i).Value = Item Then
      Sheets(feuilledestination).Cells(ligndestination, i) = valeur
      GoTo H
      Else: i = i + 1
      End If
      Loop
      H:
      End If
      i = 1
      Next ligne
      Next col
      Application.DisplayAlerts = False

      Sheets("Feuille1").Select
      Sheets("vierge_Feuille1").Visible = True
      Sheets("vierge_Feuille1").Select
      Sheets("vierge_Feuille1").Copy After:=Sheets("Feuil1")
      Sheets("Feuille1").Select
      Sheets("Feuille1").Select
      Sheets("Feuille1").Delete
      Sheets("vierge_Feuille1 (2)").Select
      Sheets("vierge_Feuille1 (2)").Name = "Feuille1"
      Sheets("vierge_Feuille1").Select
      ActiveWindow.SelectedSheets.Visible = False
      Sheets("Feuille1").Select
      ActiveSheet.Protect DrawingObjects:=False, Contents:=True, Scenarios:= _
      True, AllowFiltering:=True, AllowUsingPivotTables:=True
      Sheets("Données").Protect DrawingObjects:=True, Contents:=True, Scenarios:=True _
      , AllowSorting:=True, AllowUsingPivotTables:=True

      MsgBox ("Les données ont bien été enregistrées sur la feuille de Données. Vous pouvez dès maintenant sauvegarder le fichier.")
      Application.DisplayAlerts = True
      Else
      MsgBox ("Les données saisies sont erronées. Veuillez vous référer au tableau de contrôle. Les données n'ont pas été enregistrées.")
      Application.DisplayAlerts = False

      End If
      Calculate
      ActiveWorkbook.RefreshAll
      Calculate
      ActiveWorkbook.RefreshAll

      End Sub



      Merci d'avance
      0
      1. Contributeur
        Bonjour,

        Tu peux vider ta Feuil2 plutôt que la supprimer.
        eric
        0
        1. Éventuellement je peux voir si c'est faisable de supprimer les données de la feuille. Je me suis basée sur des fichiers deja existants (que je n'ai pas créé) mais la suppression pourra peut-être simplifier le problème.
          0