Problème de référence

Résolu
Alice__F Messages postés 33 Date d'inscription   Statut Membre Dernière intervention   -  
Alice__F Messages postés 33 Date d'inscription   Statut Membre Dernière intervention   -
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

ozone_ Messages postés 1518 Date d'inscription   Statut Membre Dernière intervention   478
 
Salut,

Aurais-tu un exemple de fichier à nous joindre ?
Via https://www.cjoint.com/

Que l'on puisse voir l'état de ta macro !

Merci !
0
eriiic Messages postés 24603 Date d'inscription   Statut Contributeur Dernière intervention   7 276
 
Bonjour,

Tu peux vider ta Feuil2 plutôt que la supprimer.
eric
0
Alice__F Messages postés 33 Date d'inscription   Statut Membre Dernière intervention  
 
É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
Alice__F Messages postés 33 Date d'inscription   Statut Membre Dernière intervention  
 
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
Le Pingou Messages postés 12249 Date d'inscription   Statut Contributeur Dernière intervention   1 458
 
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
Alice__F Messages postés 33 Date d'inscription   Statut Membre Dernière intervention  
 
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Alice__F Messages postés 33 Date d'inscription   Statut Membre Dernière intervention  
 
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
Alice__F Messages postés 33 Date d'inscription   Statut Membre Dernière intervention  
 
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
Le Pingou Messages postés 12249 Date d'inscription   Statut Contributeur Dernière intervention   1 458
 
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
Alice__F Messages postés 33 Date d'inscription   Statut Membre Dernière intervention  
 
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
Le Pingou Messages postés 12249 Date d'inscription   Statut Contributeur Dernière intervention   1 458
 
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
Alice__F Messages postés 33 Date d'inscription   Statut Membre Dernière intervention  
 
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
Le Pingou Messages postés 12249 Date d'inscription   Statut Contributeur Dernière intervention   1 458
 
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
Le Pingou Messages postés 12249 Date d'inscription   Statut Contributeur Dernière intervention   1 458
 
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
Alice__F Messages postés 33 Date d'inscription   Statut Membre Dernière intervention  
 
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