Microsoft 365 incrémentation d'une feuille masquée

bruderez

XLDnaute Nouveau
Bonjour

Je recherche à incrémenter via un formulaire de saisie une feuille "ListeAdherent" dans une feuille qui sera masquée . Dans mon fichier l'incrémentation fonctionne quand la feuille n'est pas masquée par contre quand je la masque cela ne marche pas.
 

Pièces jointes

  • adherent.xlsm
    31.7 KB · Affichages: 5

vgendron

XLDnaute Barbatruc
hello

regarde la PJ
alors une première "règle"
les .activates, .select sont à proscrire==>
pour écrire quelque chose dans une cellule, pas besoin de la selectionner

VB:
range("A5").select
selection=5
se remplace par
Code:
range("A5")=5
dans ce cas, range("A5"), c'est la cellule A5 de la page active

on peut dire de mettre 5 dans la cellule A5 d'une autre feuille non active (masquée ou pas)
exemple, tu es sur la feuille 1
Code:
sheets("Feuille2").range("A5")=5

si tu as plein d'opérations à effectuer sur la feuille 2: plutot qu'avoir 50 lignes de codes qui commencent par
sheets("Feuille2")

on peut utliser un raccourci
Code:
With sheets("Feuille2") 'on spécifie qu'on travaille sur la feuille 2 (on se moque de savoir quelle feuille est active à l'écran)
    .range("A5")=5  'on n'oublie pas le point devant range("A5") pour bien signifier qu'on travaille sur la cellule A5 de la feuille2
    .range("A12)="Toto"
end with


Code:
With sheets("Feuille2") 'on spécifie qu'on travaille sur la feuille 2 (on se moque de savoir quelle feuille est active à l'écran)
    .range("A5")=5  'on n'oublie pas le point devant range("A5") pour bien signifier qu'on travaille sur la cellule A5 de la feuille2
    range("A12)="Toto" 'ici.. le point n'est pas mis ==> c'est donc la cellule A12 de la feuille active qui sera remplie
end with

ensuite.. pour ton fichier
dans la feuille d'adhérents, tu as déjà mis les données sous forme de TableStructurée.. c'est très bien
manque juste de lui donner un nom sympa/explicit ==> j'ai mis t_Adhérents

dans le code VBA, une TS = ListObjects

l'avantage de la TS, c'est que tu n'as plus à t'occuper de la mise en forme des nouvelles lignes.. la TS s'en charge
idem pour les formules
 

Pièces jointes

  • adherent.xlsm
    28.3 KB · Affichages: 2

chris

XLDnaute Barbatruc
Bonjour

Quand on utilise des tableaux structurés, il faut
  • les nommer explicitement et non garder le nom auto (de même qu'on ne conserve pas Classeur1 ou Feuil1
  • utiliser le VBA adapté à ce type d'objet
Il y a des erreurs dans les formules de ton tableau d'adhérents : il semble que tu aies supprimé des colonnes...
La cellule Dons du formulaire étant formatée en date j'ai saisi des dates mais il y avait une formule en erreur dans le tableau cible...

EDIT : la réponse de vgendron, que je salue, n'était pas affichée quand j'ai fini de répondre... mais je vois que nos codes et notre logique sont très proches...
 

Pièces jointes

  • adherents2.xlsm
    28.6 KB · Affichages: 3
Dernière édition:

vgendron

XLDnaute Barbatruc
il suffit de modifier le point d'insertion de la ligne
pour ma solution
VB:
TS.ListRows.Add 1 'on ajoute une ligne à la table
    LastLine = 1 'numéro de la dernière ligne qui vient d'etre ajoutée==elle est vide

pour celle de Chris, Hello
Code:
j = TS.ListRows.Add(1).Index

et un peu de lecture ici
 

Discussions similaires

Statistiques des forums

Discussions
314 705
Messages
2 112 081
Membres
111 411
dernier inscrit
NIMY