VBA sur Feuil1 mais Apllication sur Feuil2

Bonjour,

J'ai un problème avec mon VBA. Sur mon VBA tout marche, c'est une question d'esthetique et de visibilité.

Quand j'execute mon VBA seul sur mon WorkBook cela fonctionne comme je voudrais. Mais j'ai posé une série de boutons sur la feuille 1, afin que quand on appuye sur l'un on ait une application qui se mette en route. Il est nécessaire de conserver tous ces boutons.

Mon problème est que sur une des apllications j'utilise le fond c'est à dire les cellules de ma feuille, or sur certains les cellules sont cachées par les boutons, vous comprendrez le problème.

Sur l'application en question j'ai écrit :

Sheets("Absence").Select

Sheets("Absence").Activate

("Absence" étant la Feuille 2)

Quand je lance l'application j'arrive sur la feuille 2 mais tout se passe toujours sur la feuille 1, j'aimerais que cela se passe sur la feuille 2 tout en gardant mon code sur la feuille 1.

J'espère avoir été assez clair.

Merci beaucoup !

Salut Dudu9294 et le forum

Sur l'application en question j'ai écrit :

Sheets("Absence").Select

Sheets("Absence").Activate

("Absence" étant la Feuille 2)

Quand je lance l'application j'arrive sur la feuille 2 mais tout se passe toujours sur la feuille 1, j'aimerais que cela se passe sur la feuille 2 tout en gardant mon code sur la feuille 1.

Ça aurait été plus simple de donner ton code !

1er :

- Tu peux raccourcir ton code donné en "Sheets("Absence").Activate" => Select et Activate ont le même but quand elles ne concerne qu'un objet

2me :

- Range("A1") correspond à ActiveWorkBooks.ActiveSheet.Range("A1").

Si tu utilises le module lié à la feuille 1, Excel comprend ActiveBook.Sheets("feuille1").Range("A1").

Il faut donc remplacer Range("A1") par Sheets("feuille2").Range("A1")

Petite remarque : Les select/activate/selection/activecell ne servent généralement qu'à ralentir une macro et dans le cas des modules de classe feuille à générer des erreurs.

A+

Bonjour,

Merci de votre réponse, mais ça ne marche pas. Je vous transmet mon programme. Bien évidemment celui d'origine est beaucoup plus grand mais j'essaye d'être un maximum clair avec vous dans le but de résoudre mon problème. Si besoin est je vous envoie la totalité de mon devoir, mais il est très long..

Merci encore une fois

Bonsoir

Remplaces la macro par celle-ci

Sub Absence()
Dim x As Integer
Dim I As Integer
Dim NbEtudiants As Integer
Dim NbCours

  x = InputBox(" Rappel : Cette application est à destination seule des chargés de TD." & vbCr & " Si vous voulez continuer tapez 1, sinon tapez le chiffre qui vous plait.")
  If x = 1 Then
    With Sheets("Absence")
      .Cells.Clear
      NbCours = InputBox(" Combien avez-vous de cours ce semestre ? ")
        If Val(NbCours) = 0 Then Exit Sub
          For I = 1 To NbCours
            .Range("A" & I).Value = ("Cours n°" & I)
          Next I
          MsgBox (" A present vous allez rentrez le nom et le prenom des étudiants présent à votre TD ")
          NbEtudiants = InputBox(" Tout d'abord combien d'étudiants assistent à votre TD ?")
          For I = 1 To NbEtudiants
            .Cells(NbCours + 1, 1 + I) = InputBox(" Quel est le nom et le prénom de l'étudiant que vous voulez enregistrez ?")
            .Cells(NbCours + 2, 1 + I).Formula = "=IF(COUNTIF(R1C:R[-2]C,""Absent"")>2,""Défaillant"","""")"
          Next I
          MsgBox (" A chacun de vos cours remplissez les absences. " & vbCr & vbCr & " Si l'étudiant est absent tapez Absent, dans le cas contraire Present. ")
      End With
    End If
End Sub

PS: Elle serait mieux dans un module standard

Merci énormement à tous les deux !

Rechercher des sujets similaires à "vba feuil1 apllication feuil2"