Si il n'y a pas la feuille "patients" alors quitte la macro.

ninanani

XLDnaute Occasionnel
Bonjour le forum, toutes et tous.

Je souhaiterais savoir quelle est le language VBA pour dire :
Si il n'y a pas la feuille "patients" alors quitte la macro.
Un truc du genre, peut etre :
If not ......................... then exit sub

Merci bcp
 

mutzik

XLDnaute Barbatruc
Re : Si il n'y a pas la feuille "patients" alors quitte la macro.

bonjour,


Sub test()
Dim sh As Worksheet, exist As Boolean
exist = False
For Each sh In ActiveWorkbook
If sh.Name = "patients" Then exist = True
Next
If Not exist Then Exit Sub
End Sub
 
Dernière édition:

jp14

XLDnaute Barbatruc
Re : Si il n'y a pas la feuille "patients" alors quitte la macro.

Bonjour
Une autre solution
Sheets("patients").Activate

Ci dessous une procédure pour tester
Code:
Sub essai()
On Error GoTo suite1

Sheets("patients").Activate

Exit Sub
suite1:
Call MsgBox("La feuille n'existe pas", vbInformation, Application.Name)
On Error GoTo 0
End Sub

JP
 

ninanani

XLDnaute Occasionnel
Re : Si il n'y a pas la feuille "patients" alors quitte la macro.

Re

Mutzik : J'ai teste ta macro en la rajoutant ds la mienne, mais il m'affiche un message d'erreur, et la ligne : For Each sh In ActiveWorkbook se surligne en jaune.

JP14: les lignes de ta macro se surlignent egalement en jaune et m'affiche egalement un messade d'erreur.

N'existerait'il pas un code du genre :
If not exist sheets("patients") then exit sub
??

Merci de vos reponses
 

vbacrumble

XLDnaute Accro
Re : Si il n'y a pas la feuille "patients" alors quitte la macro.

BonjouRe


Tu peux utiliser une fonction VBA créée pour l'occasion


Code:
Function fexiste(S$) As Boolean
On Error GoTo PDF
fexiste = IIf(Len(Sheets(S).Name) > 0, True, False)
PDF:
End Function
Sub macro()
If fexiste("patients") Then
MsgBox "La feuille existe."
Else
MsgBox "La feuille n'existe pas."
End If
End Sub


Comme je le disais précédemment:

Un fil relatif à ce sujet
https://www.excel-downloads.com/threads/supprimer-une-feuille-si-elle-existe.114539/
 
Dernière édition:

mutzik

XLDnaute Barbatruc
Re : Si il n'y a pas la feuille "patients" alors quitte la macro.

re,
sorry, dans mes déclarations, j'ai mis au début (mais rectifié dans mon post depuis)
Dim sh As sheets
c'est
Dim sh As Worksheet qu'il faut mettre
 

Dull

XLDnaute Barbatruc
Re : Si il n'y a pas la feuille "patients" alors quitte la macro.

Re ninanani, jp14, Bertrand, vbacrumble, le Forum

Un autre essai avec une fonction personalisée de MyDearFriends

Code:
Option Explicit
Function FeuilExist(Nom As String) As Boolean [COLOR=Green]'myDearFriend![/COLOR]
    On Error Resume Next
    FeuilExist = Not Sheets(Nom) Is Nothing
End Function

Sub Essai()
If FeuilExist("patients")Then TaMacro Else Exit Sub
End Sub
TaMacro est la procédure que tu vas suivre si la feuille patients existe
Bonne Journée
 

ninanani

XLDnaute Occasionnel
Re : Si il n'y a pas la feuille "patients" alors quitte la macro.

Re le fil,
Merci de votre aide a tous, mais je vous l'avoue je suis completement perdue.

J'essai de rajouter les bout de code que vous me donnez mais a chaque fois cela ne marche pas, un message erruer apparait.
Surement que je ne le rajoute pas au bon endroit. Je vous donne ma macro pour que vous puissiez m'indiquer ou dois-je rajouter vos bouts de code:

Code:
Option Explicit


Private Sub Worksheet_Activate()
Range("B10").Select
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)

Sheets("patients").Unprotect ("estherzina")

Dim colonne1a As String
Dim cellule As Range
Dim dl1 As Long ' dernière ligne
Dim lig As Long
Dim i As Integer
    If Target.Address <> "$B$10" Then Exit Sub
    With Sheets("Patients")
    colonne1a = ""
    For i = 1 To Len(Target.Address(0, 0))
    If Asc(Mid(Target.Address(0, 0), i, 1)) > 64 Then
        colonne1a = colonne1a & Mid(Target.Address(0, 0), i, 1)
    End If
    Next i
    dl1 = .Range(colonne1a & "65536").End(xlUp).Row
    lig = chercheligne("Patients", Target.Value, colonne1a & "2", colonne1a & dl1)
    If lig = 0 Then
    Select Case MsgBox("Le patient : " & Target.Value _
                   & vbCrLf & "Doesn't exists :" & .Range(colonne1a & 1) _
                   & vbCrLf & "Do you want to add him ?" _
                   & vbCrLf & "" _
                   , vbYesNo Or vbInformation Or vbDefaultButton1, Application.Name)
    Case vbYes
    UserForm1.Show
    Case vbNo
        Exit Sub
    End Select
    ' .Range(colonne1a & dl1 + 1) = Target.Value
    End If
    End With

    End Sub


Function chercheligne(£feuille As String, £valeur As String, £col1d As String, £col1f As String)
Dim cel As Range
    Set cel = Sheets(£feuille).Range(£col1d & ":" & £col1f).Find(What:=£valeur, LookIn:=xlValues, SearchOrder:=xlByRows, LookAt:=xlWhole)
    If cel Is Nothing Then
    chercheligne = 0
    Else
    chercheligne = cel.Row
    End If
    
    Sheets("patients").Protect ("estherzina")
End Function

Petite precision, ce n'est pas moi qui est cree cette macro. Et j'ai toujours du mal a comprendre comment elle fonctionne, je l'ai etudie un bon nombre de fois mais sans resultat. :eek:

Voili voilo, encore merci bcp de votre aide.
 

mutzik

XLDnaute Barbatruc
Re : Si il n'y a pas la feuille "patients" alors quitte la macro.

re,
Private Sub Worksheet_Activate()
Range("B10").Select
Dim sh As Worksheet, exist As Boolean
exist = False
For Each sh In ActiveWorkbook
If sh.Name = "patients" Then exist = True
Next
If Not exist Then msgbox "La feuille <patients> n'existe pas !!"
End Sub
 

vbacrumble

XLDnaute Accro
Re : Si il n'y a pas la feuille "patients" alors quitte la macro.

Re

ninanani:
Tu as suffisamment de solutions (avec ou ans fonction VBA personnalisée)
pour tester l'existence d'une feuille dans ton classeur.

Quelle solution as-tu choisie ?
 

ninanani

XLDnaute Occasionnel
Re : Si il n'y a pas la feuille "patients" alors quitte la macro.

Re,
Je pense que le code de Dull est celui qui correspond le plus a ce que je recherche.
J'ai essaye de l'ajouter sur mon code avant la deprotection de la feuille, mais cela ne fonctionnait pas.

Je n'ai rien rajouter ds le code que j'ai poste car cela ne fonctionnait pas lorsque j'essayais.
C'est pourquoi j'aimerais savoir OU dois-je rajouter le code de Dull pour que cela fonctionne?

Voili voilo, marci encore
 

pierrejean

XLDnaute Barbatruc
Re : Si il n'y a pas la feuille "patients" alors quitte la macro.

bonjour a tous
Code:
Option Explicit

Au tout debut d'un module standard

Code:
Function FeuilExist(Nom As String) As Boolean [COLOR=green]'myDearFriend![/COLOR]
    On Error Resume Next
    FeuilExist = Not Sheets(Nom) Is Nothing
End Function

dans un module standard

Code:
If Not FeuilExist("patients")Then Exit Sub

dans ta macro
 

Fo_rum

XLDnaute Accro
Re : Si il n'y a pas la feuille "patients" alors quitte la macro.

Salut,

Le code que tu fournis doit figurer dans une autre feuille que la feuille "patients".
Une autre solution peut-être, en y rajoutant quelques lignes ainsi :
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
      Dim colonne1a As String
      Dim cellule As Range
      Dim dl1 As Long    ' dernière ligne
      Dim lig As Long
      Dim i As Integer
      If Target.Address <> "$B$10" Then Exit Sub
      [B]For i =1 To Sheets.Count[/B]
  [B]        If Sheets(i).Name = "patients" Then[/B]
   
              Sheets("patients").Unprotect ("estherzina")
              ...
        [B]End If[/B]
  [B]   Next[/B]
  End Sub
 

Discussions similaires

Statistiques des forums

Discussions
312 329
Messages
2 087 333
Membres
103 519
dernier inscrit
Thomas_grc11