Instruction call

Hello,

Help : y-a-t-il possibilité d'utiliser la fonction "Call" ou autre qui permet de traiter un cas spécifique mais je ne voudrai pas revenir sur le programme principal.

Merci

Private Sub OK_Click()

'Vérification de la saisie des différentes informations

If Année = "" Or Mois = "" Or Montant = "" Or Banque = "" Or Taux = "" Then

MsgBox "VEUILLEZ SAISIR TOUTES LES INFORMATIONS"

Else

Sheets("PHB").Select 'Selection de la feuille de données

if Taux = 3 then Call Taux

'Si A3 est vierge, la variable décalage vaut 0, l'entrée des informations

'Débute sur la ligne 3

If Range("A3").Value = "" Then

décalage = 0

Range("A3").Select

Else

'Si A3 contient une donnée, la variable décalage vaut 1

Position = Range("A1").End(xlDown).Address

Range(Position).Select

Range("A1").End(xlDown).Select

décalage = 1

End If

'Mise à jour de la base de données en descendant d'une ligne

ActiveCell.Offset(décalage, 0).Range("A1").Select

ActiveCell.Value = Année

ActiveCell.Offset(0, 1).Range("A1").Select

ActiveCell.Value = Mois

ActiveCell.Offset(0, 1).Range("A1").Select

ActiveCell.Value = UCase(Montant)

ActiveCell.Offset(0, 1).Range("A1").Select

ActiveCell.Value = Banque

ActiveCell.Offset(0, 1).Range("A1").Select

ActiveCell.Value = Taux

ActiveCell.Offset(0, 1).Range("A1").Select

End If

'Réinitialise pour la saisie suivante

With BD

Année = ""

Mois = ""

Montant = ""

Banque = ""

Taux = ""

End With

End Sub

Private Sub Taux()

'Instruction Spécifique et ne plus revenir à l'instruction "OK"

End Sub

Bonjour,

Call est une instruction (pas une fonction), dont l'utilité en VBA est à peu près nulle, puisque les procédures peuvent être appelées directement (sans Call). Elle oblige juste à placer les arguments de la procédure entre parenthèses...

Mais si Call n'a qu'un caractère ornemental inoffensif, construire un code à coups de Select et d'ActiveCell est bien plus nocif, et il serait bon de l'écrire autrement si on recherche un minimum d'efficacité (de même qu'il serait bon d'indenter son code, le mettre sous balises Code dans un post, de façon à le rendre immédiatement lisible à ceux qui ont à travailler sur le code...)

Ceci étant, et pour répondre à ta question, lorsqu'une procédure est appelée par une autre procédure, lorsque la procédure appelée se termine la poursuite de l'exécution revient toujours à la procédure appelante.

Cordialement.

Bonjour football365,

je te propose ce code VBA :

Private Sub OK_Click()
  'Vérification de la saisie des différentes informations
  If Année = "" Or Mois = "" Or Montant = "" Or Banque = "" Or Taux = "" Then
    MsgBox "VEUILLEZ SAISIR TOUTES LES INFORMATIONS"
  Else
    With Worksheets("PHB") 'avec la feuille de données
      If Taux = 3 Then XTaux: Exit Sub ' sortie au retour de XTaux
      'Si A3 est vierge, la variable décalage vaut 0, l'entrée des
      'informations débute sur la ligne 3
      If .[A3] = "" Then lig = 3 Else lig = .[A3].End(xlDown).Row
      'Mise à jour de la base de données
      .Cells(lig, 1) = Année
      .Cells(lig, 2) = Mois
      .Cells(lig, 3) = Montant
      .Cells(lig, 4) = Banque
      .Cells(lig, 5) = Taux
    End With
  End If
  'Réinitialise pour la saisie suivante
  Année = "": Mois = "": Montant = "": Banque = "": Taux = ""
End Sub

Private Sub XTaux() 'sub à renommer ! PAS en Taux car c'est déjà
  'le nom de ta variable Taux !!! à toi de trouver un autre nom

  'Instruction spécifique et ne plus revenir à l'instruction "OK"
  'à la place : on retourne à l'instruction "OK" et on sort
End Sub

attention : comme je n'ai pas ton fichier, tu devras peut-être adapter

la valeur de lig ; et aussi les colonnes : 1 à 5 donc A à E.

note bien que la feuille "PHB" n'est pas sélectionnée :

tu restes sur ta feuille de départ.

dhany

Hello Dhany,

Tks pour la solution

Hello MFerrand,

Merci pour les précisions.

@football365

merci pour ton retour ! bonne continuation !

dhany

Rechercher des sujets similaires à "instruction call"