Manipulation des UserForm avec des feuilles cachées
Résolu
mijean94
Messages postés
415
Date d'inscription
Statut
Membre
Dernière intervention
-
mijean94 Messages postés 415 Date d'inscription Statut Membre Dernière intervention -
mijean94 Messages postés 415 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Peut-on faire appel à un UserForm, qui récupère des données dans une feuille cachée.
Mon code fonctionne bien si ma feuille est visible mais il y a une erreur
« La méthode select de la classe Worksheet a échoué »
si la feuille est cachée !!!
Voici un fichier d’exemple : https://www.cjoint.com/c/FDjwevYUSYt
Y a-t-il une solution, une piste de recherche ?
Merci pour vos réponses
Cordialement
Peut-on faire appel à un UserForm, qui récupère des données dans une feuille cachée.
Mon code fonctionne bien si ma feuille est visible mais il y a une erreur
« La méthode select de la classe Worksheet a échoué »
si la feuille est cachée !!!
Voici un fichier d’exemple : https://www.cjoint.com/c/FDjwevYUSYt
Y a-t-il une solution, une piste de recherche ?
Merci pour vos réponses
Cordialement
A voir également:
- Manipulation des UserForm avec des feuilles cachées
- Comment faire un livret avec des feuilles a4 - Guide
- Bruler des feuilles de laurier - Guide
- Fusionner des feuilles excel - Guide
- Excel reporter des données sur une autre feuille avec conditions - Forum Excel
- Transposer des lignes sur une autre feuille sous condition ✓ - Forum Excel
1 réponse
Bonsoir Mijean, bonsoir le forum,
Tu n'as pas besoin de sélectionner un onglet pour y placer des données tant que tu ne sélectionnes pas de cellule dans cet onglet. Il te suffit juste de le spécifier. Ce que tu a fait dans ton code. Les lignes Sheets("BD").Select et Sheets("FA").Select sont donc inutiles. Ton code devient :
En revanche, quand tu déclares tes variables, il te faut les "typer" sinon elle prennent le type Variant par défaut et c'est les plus gourmand en mémoire...
Dim ligne, f devient :
que l'on peut aussi écrire :
À plus,
ThauTheme
Tu n'as pas besoin de sélectionner un onglet pour y placer des données tant que tu ne sélectionnes pas de cellule dans cet onglet. Il te suffit juste de le spécifier. Ce que tu a fait dans ton code. Les lignes Sheets("BD").Select et Sheets("FA").Select sont donc inutiles. Ton code devient :
Private Sub B_validation_Click() '--- Transfert Formulaire dans BD Dim FA As String Application.ScreenUpdating = False 'Gèle l'écran FA = ActiveSheet.Name 'Conserve le nom de la feuille active dans une variable 'Sheets("BD").Select 'Sélectionne la feuille sur laquelle tu veux travailler 'Tes opérations f.Unprotect f.Cells(ligne, 2) = Application.Proper(Me!nom) f.Cells(ligne, 3) = Me.Marié 'OuiNon(Me.Marié) f.Cells(ligne, 4) = CVDate(Me.date_naissance) f.Cells(ligne, 5) = Me.Service f.Cells(ligne, 6) = Me.Ville f.Cells(ligne, 7) = CDbl(Me.Salaire) '-- Civilité temp = "" For Each c In Me.Civilité.Controls If c.Value = True Then temp = c.Caption End If Next c f.Cells(ligne, "a") = temp f.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True 'Sheets(FA).Select 'Reviens à la feuille initiale ni vu ni connu ! End Sub
En revanche, quand tu déclares tes variables, il te faut les "typer" sinon elle prennent le type Variant par défaut et c'est les plus gourmand en mémoire...
Dim ligne, f devient :
Dim ligne As Integer 'ou Long si gros tableau de plus de 32 767 lignes Dim f As Worksheet
que l'on peut aussi écrire :
Dim ligne As Integer, f As worksheet
À plus,
ThauTheme
Merci pour cet réponse qui fonctionne nickel.
Je vais de ce pas l'appliquer à mon programme.
Cordialement