× Aidez la recherche contre le COVID-19 avec votre ordi ! Rejoignez l'équipe PC Astuces Folding@home
 > Tous les forums > Forum Bureautique
 Copier feuille 1 dans feuilles 2 et 3 avec mise à jour
Ajouter un message à la discussion
Pages : [1] 2 3 4 ... Fin
Page 1 sur 4 [Fin]
rolandin
  Posté le 24/05/2013 @ 17:44 
Aller en bas de la page 
Astucien

Bonjour,

Je suis débutant dans ce domaine , je copie un peu à droite et à gauche des "codes" mais je n'arrive plus à avancer.

J'ai un tableau dans une feuille "Base" de la colonne A à la P, (Noms, Prénoms, etc. avec macro VBA Excel 2000) je voudrais que cette feuille "Base" soit copiée mais pas en entier, uniquement les colonnes B à C (Noms, Premons), dans la feuille "Prepa" et la feuille "Abonnement" du même classeur. Je suppose que ma macro n'a plus besoin d'être recopiée sur ces nouvelles feuilles

Mais j'aimerais aussi que chaque lignes nouvelles de la feuille "Base" soient mises à jour dans les feuilles "Prepa" et "Abonnement".

Pourriez-vous me venir en aide en me créant ce code, avec (ci-possible) des explications simples.

Merci d'avance et bonne soirée

Publicité
ferrand
 Posté le 24/05/2013 à 21:36 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Astucien

Bonsoir,

Il serait peut-être bon que tu donnes quelques détails : ce que fait ta macro (et fournir le code), et où doivent aller les colonnes B et C de Base sur les autres feuilles (mêmes colonnes, mêmes lignes, ou différentes), s'il y a des en-têtes ou non, et les particularités s'il y en a...

rolandin
 Posté le 24/05/2013 à 22:21 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

Bonsoir,

Normalement il y a également un tableau qui va avec tout ces codes, plus une feuille accueil ou il y a des boutons. Ces colonnes B et C seront celles qui auront été copié de la feuille nommée "Base", et qui seront coller dans les feuilles nommées "Prepa" et "Abonnement"

Je fais ce travail pour endre service à jeune qui est bénévole dans un clib de rugby local et qui veut s'occuper de la partie remise en forme.

Si tu as besoin du fichier complet dit moi comment faire, il n'y a rien de secret, merci d'avance;

J'ai fait des "modifs" ce soir et au démarrage il y a un plantage indiqué en rouge dans les codes ci-dessous

Option Explicit

Public Civil
Public Noms
Public Prenoms
Public Adresses
Public Villes
Public Cp
Public DateNais
Public TelFixe
Public TelPort
Public TelBur
Public Poids
Public Taille
Public Posteoccupe
Public Abonne
Public Email
Public Prof
Public SituaFamil

' Saisie d'une intervention
Sub Saisie_int()
Load USF_Inter
With USF_Inter
.Txt_civil.Value = ""
.Txt_noms.Value = ""
.Txt_prenoms.Value = ""
.Txt_adresses.Value = ""
.Txt_villes.Value = ""
.Txt_cp.Value = ""
.Txt_datenais.Value = ""
.Txt_telfixe.Value = ""
.Txt_telport.Value = ""
.Txt_telbur.Value = ""
.Txt_poids.Value = ""
.Txt_taille.Value = ""
.Txt_posteoccupe.Value = ""
.Txt_abonn.Value = ""
.Txt_email.Value = ""
.Txt_prof.Value = ""
.Txt_situafamil.Value = ""
End With
USF_Inter.Show
End Sub

' Saisie du Bouton OK

Sub Cmb_ok_Click()
With USF_Inter
Civil = .Txt_civil.Value
Noms = .Txt_noms.Value
Prenoms = .Txt_prenoms.Value
Adresses = .Txt_adresses.Value
Villes = .Txt_villes.Value
Cp = .Txt_cp.Value
DateNais = .Txt_datenais.Value
TelFixe = .Txt_telfixe.Value
TelPort = .Txt_telport.Value
TelBur = .Txt_telbur.Value
Poids = .Txt_poids.Value
Taille = .Txt_taille.Value
Posteoccupe = .Txt_posteoccupe.Value
Abonne = .Txt_abonne.Value
Email = .Txt_email.Value
Prof = .Txt_prof.Value
SituaFamil = .Txt_situafamil.Value

End With
Unload USF_Inter
Mise_A_Jour

End Sub
' Encadrement cellule
Sub Bordure()
ActiveCell.Select
Selection.Borders(xlTop).LineStyle = xlNone
Selection.Borders(xlBottom).LineStyle = xlNone
Selection.Borders(xlLeft).LineStyle = xlNone
Selection.Borders(xlRight).LineStyle = xlNone
Selection.BorderAround Weight:=xlThin
End Sub

' Mise à jour d'un ajout de données
Sub Mise_A_Jour()
Sheets("Base").Activate
Ajouter_ligne
Selection.Value = Civil
Bordure
ActiveCell.Offset(0, 1).Select
Selection.Value = Noms
Bordure
ActiveCell.Offset(0, 1).Select
Selection.Value = Prenoms
Bordure
ActiveCell.Offset(0, 1).Select
Selection.Value = Adresses
Bordure
ActiveCell.Offset(0, 1).Select
Selection.Value = Villes
Bordure
ActiveCell.Offset(0, 1).Select
Selection.Value = Cp
Bordure
ActiveCell.Offset(0, 1).Select
Selection.Value = DateNais
Bordure
ActiveCell.Offset(0, 1).Select
Selection.Value = TelFixe
Bordure
ActiveCell.Offset(0, 1).Select
Selection.Value = TelPort
Bordure
ActiveCell.Offset(0, 1).Select
Selection.Value = TelBur
Bordure
ActiveCell.Offset(0, 1).Select
Selection.Value = Poids
Bordure
ActiveCell.Offset(0, 1).Select
Selection.Value = Taille
Bordure
ActiveCell.Offset(0, 1).Select
Selection.Value = Posteoccupe
Bordure
ActiveCell.Offset(0, 1).Select
Selection.Value = Abonne
Bordure
ActiveCell.Offset(0, 1).Select
Selection.Value = Email
Bordure
ActiveCell.Offset(0, 1).Select
Selection.Value = Prof
Bordure
ActiveCell.Offset(0, 1).Select
Selection.Value = SituaFamil
Bordure
Range("A1").Select
End Sub

' Supprimer une intervention
Sub Supprimer_int()
Dim Réponse
Dim Question
Dim Title
Question = "Voulez-vous supprimer cet abonné ?"
Title = "Suppression intervention"
Réponse = MsgBox(Question, 276, Title)
If Réponse = 6 Then
Supprimer_ligne
Else
Range("A1").Select
End If
End Sub

' Trier par noms
Sub Tri_Noms()
Columns("A:N").Select
Selection.Sort Key1:=Range("B2"), Order1:=xlAscending, Header:= _
xlGuess, OrderCustom:=1, MatchCase:=False, _
Orientation:=xlTopToBottom
Range("A1").Select
End Sub

' Trier par villes
Sub Tri_Villes()
Columns("A:Q").Select
Selection.Sort Key1:=Range("E2"), Order1:=xlAscending, Header:= _
xlGuess, OrderCustom:=1, MatchCase:=False, _
Orientation:=xlTopToBottom
Range("A1").Select
End Sub

' Ajouter une ligne
Sub Ajouter_ligne()
Range("A1").Select
Do Until ActiveCell = ""
ActiveCell.Offset(1, 0).Select
Loop
ActiveCell.EntireRow.Select
Selection.Insert Shift:=xlBottom
ActiveCell.Select
End Sub

' Supprimer une ligne
Sub Supprimer_ligne()
ActiveCell.EntireRow.Select
Selection.Delete
Range("A1").Select
End Sub


' Rechercher

Sub Cmb_recherche()
Dim plage As Range
Set plage = ActiveSheet.UsedRange
Dim MotRechercher As String
MotRechercher = InputBox("Entrer le mot à rechercher", "Us")
If MotRechercher = vbNullString Then Exit Sub
Dim Cellule As Range
For Each Cellule In plage
If InStr(1, UCase(Cellule.Value), UCase(MotRechercher)) > 0 Then
Range(Cellule.Address).Select
End If
Next Cellule
End Sub

' copy feuille'

Sub RecupNomOnglet()
Sheets("Base").Select
Sheets("Base").Copy After:=Sheets(2) ' ou before:sheets(1)
ActiveSheet.Name = "Prepa"
End Sub

' Accés menu preparation
'
Sub Accés_Menu_Prepa()
Sheets("Prepa").Activate
End Sub

' Accés menu preparation
'
Sub Accés_Menu_Abonn()
Sheets("Abonn").Activate
End Sub

' Accés menu accueil
'
Sub Accés_Menu_Accueil()
Sheets("Accueil").Activate
End Sub

J'ai également ces codes ci-dessous auxquels je peux accéder en cliquant droit sur le bouton "Suivante" qui ce trouve sur "USF_Inter.

Private Sub Cmb_annuler_Click()
End Sub
Sub Supprimer_int()
Dim Réponse
Dim Question
Dim Title
Question = "Voulez-vous supprimer cette intervention ?"
Title = "Suppression intervention"
Réponse = MsgBox(Question, 276, Title)
If Réponse = 6 Then
Supprimer_ligne
Else
Range("A1").Select
End If
End Sub

Private Sub Cmb_ok_Click()
With USF_Inter
Civil = .Txt_civil.Value
Noms = .Txt_noms.Value
Prenoms = .Txt_prenoms.Value
Adresses = .Txt_adresses.Value
Villes = .Txt_villes.Value
Cp = .Txt_cp.Value
DateNais = .Txt_datenais.Value
TelFixe = .Txt_telfixe.Value
TelPort = .Txt_telport.Value
TelBur = .Txt_telbur.Value
Fax = .Txt_fax.Value
Email = .Txt_email.Value
Prof = .Txt_prof.Value
SituaFamil = .Txt_situafamil.Value

End With
Unload USF_Inter
Mise_A_Jour
End Sub

Private Sub Cmb_recherche_Click()
' Rechercher

Dim plage As Range
Set plage = Application.InputBox("Sélectionnez une colonne !", "Us se débrouille pour vous...", Type:=8)
Dim MotRechercher As String
MotRechercher = InputBox("Entrer le mot à rechercher", "Us")
If MotRechercher = vbNullString Then Exit Sub
Dim Cellule As Range
For Each Cellule In plage
If InStr(1, UCase(Cellule.Value), UCase(MotRechercher)) > 0 Then
Range(Cellule.Address).Select
End If
Next Cellule
End Sub


Private Sub CmdSuivante_Click()
Selection.Offset(1).Select

End Sub

Private Sub CmdPrecedente_Click()
Selection.Offset(-1).Select
End Sub

Private Sub Image1_Click()

End Sub

' Supprimer une ligne
Sub Supprimer_ligne()
ActiveCell.EntireRow.Select
Selection.Delete
Range("A1").Select
End Sub

Private Sub TextBox2_Change()

End Sub

Private Sub Label12_Click()

End Sub



Modifié par rolandin le 24/05/2013 22:27
ferrand
 Posté le 25/05/2013 à 00:19 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Astucien

Bonsoir,

Pour faire le transfert des noms prénoms existant sur Base vers les 2 autres feuilles (Prepa, Abonnement), voici une macro pour affecter les valeurs des colonnes B et C de Base aux colonnes A et B des autres, sur la même ligne, à partir de la ligne 2, jusqu'à la fin.

Sub TftNomPnm_PrepaAbo()
Dim nf, n%, f%, i%, j%, bs As Worksheet
Set bs = Worksheets("Base")
n = bs.Range("A65536").End(xlUp).Row
nf = Array("Prepa", "Abonnement")
For f = 0 To 1
With Worksheets(nf(f))
For i = 2 To n
For j = 1 To 2
.Cells(i, j).Value = bs.Cells(i, j + 1).Value
Next j
Next i
End With
Next f
End Sub

Cette macro n'est normalement à n'utiliser qu'une fois. Ensuite il conviendrait d'ajouter quelques lignes à la procédure Mise à jour pour que ça se fasse au fur et à mesure.

Il serait mieux de mettre ton fichier pour qu'on voit l'ensemble.

NB: La macro est à coller dans un module standard du classeur. Puis lancer son exécution.

rolandin
 Posté le 25/05/2013 à 09:39 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien
ferrand a écrit :

Bonsoir,

Cette macro n'est normalement à n'utiliser qu'une fois. Ensuite il conviendrait d'ajouter quelques lignes à la procédure Mise à jour pour que ça se fasse au fur et à mesure.

Il serait mieux de mettre ton fichier pour qu'on voit l'ensemble.

NB: La macro est à coller dans un module standard du classeur. Puis lancer son exécution.

Bonjour

Merci pour cette macro, qui est à mes yeux (de "débutant") compliquée pour le moment. J'étudirais à tête reposée

En effet c'est ce que je recherche, que la mise à jour se fasse au fur et à mesure.

Une question avant que je t'adresse mon fichier, quand tu dis "La macro est à coller dans un module "Standard", il est ou ce module

Merci beaucoup de ton aide

ferrand
 Posté le 25/05/2013 à 10:00 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Astucien

Bonjour,

Tu ouvres l'éditeur VBA, par exemple par le raccourci clavier Alt+F11. Ensuite, menu Insertion > Module. Un module va être créé : Module1 si c'est le premier, ou ModuleN si un ou plusieurs existent déjà.

Un module n'est rien d'autre qu'une feuille sur laquelle tu tapes ton code en format texte. L'interpréteur de commande de VBA lit et interprète ce code afin de l'exécuter.

Outre ces modules ordinaires qu'on appelle module de code ou module standard, il existe d'autres modules plus spécialisés : chaque feuille de calcul dispose d'un module qui lui est lié (dans l'éditeur, tu l'ouvres par un double-clic sur le nom de la feuille dans le volet Projet à gauche ; le classeur dispose aussi d'un module lié, qui apparaît dans le volet Projet sous le nom de ThisWorkbook ; Ces modules sont principalement utilisés pour du code destinés à s'exécuter automatiquement selon des évènements qui se produisent dans la feuille ou le classeur (ouverture, activation, changement de sélection, modification...). De même, quand tu crées un Userform (formulaire), un module lui est attaché, pour le code spécifique au Userform et aux contrôles qu'il contient. (Il y a aussi des modules de classe, ça c'est pour créer des objets personnalisés avec le code permettant de les utiliser, ça échappe à l'utilisation courante de la programmation VBA...)

rolandin
 Posté le 25/05/2013 à 10:53 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

Merci pour ces explications dont j'ai un grand besoin. J'ai copié ta macro comme indiqué et j'ai une erreur à cette ligne :

With Worksheets(nf(f)) avec le message "Erreur d'execution '9': L'indice n'apartient pas à la selection"

Mon fichier dans prochain message que je poste de suite, mais je ne sais comment, je croyais qu'il y avait en bas de page la possibilité de joindre un fichier

rolandin
 Posté le 25/05/2013 à 11:04 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

Voici le lien d'hébergement

http://dl.free.fr/hN6d7GFw8

Le fichier est protégé par le mot de passe suivant: ;toto;rata_tata;
ferrand
 Posté le 25/05/2013 à 11:53 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Astucien

rolandin a écrit :

Voici le lien d'hébergement

http://dl.free.fr/hN6d7GFw8

Le fichier est protégé par le mot de passe suivant: ;toto;rata_tata;


Comme devenu habituel avec dl.free, ça tourne un moment mais rien ne se charge

Publicité
rolandin
 Posté le 25/05/2013 à 12:13 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien
ferrand a écrit :
rolandin a écrit :

Voici le lien d'hébergement

http://dl.free.fr/hN6d7GFw8

Le fichier est protégé par le mot de passe suivant: ;toto;rata_tata;


Comme devenu habituel avec dl.free, ça tourne un moment mais rien ne se charge

Je suis chez Free, et mon fichier a été chargé en quelques secondes, quelle autre manière de télécharger

rolandin
 Posté le 25/05/2013 à 12:23 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

Re, en consultant ce forum, j'ai trouvé un autre hébergeur

http://cjoint.com/?3EzmxdLT83J

ferrand
 Posté le 25/05/2013 à 13:55 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Astucien

Ok,

Quelques précisions sont nécessaires :

1) Pas de feuille Abonnement ! Qu'en est-il ? Il y a par contre des feuilles par durée d'abonnement : faut-il les inscrire dans ces feuilles (ce qui suppose que la durée soit toujours saisie). Ne seront plus dans le même ordre puisque éclatés en 3 groupes. Et lors de suppression dans la Base, faut-il supprimer simultanément sur Prépa et abonnements ?

2) Vu ton image de formulaire, et fais joujou un moment à repositionner à peu près comme tu l'illustrais. Mais dans ton nouveau formulaire : date naissance, taille et abonné ont disparus, préparation apparaît qui n'y était pas. Cela mérite d'être précisé et confirmé car la feuille Base doit être alignée sur le formulaire, et le programme ajusté selon modifications.

3) Outre que le code gagnerait à être amélioré, il y a quelques anomalies à régler, comme le tri par villes ou par noms s'effectuant sur un nombre de colonnes différentes. D'autre part, le tri ne s'effectue que sur Base, il y aura donc distorsion avec les autres feuilles, sous réserve de leur utilisation qui n'est pas précisée.

Bref faut savoir exactement quel est le résultat à obtenir pour programmer à cette fin.

rolandin
 Posté le 25/05/2013 à 18:46 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

Bonsoir

C'est un peu la panique le samedi est le dimanche les commissions, les petits enfants !

Bon je devoir revoir tout cela au calme, car il y a des informations que je ne saisie pas bien de la part de mon demandeur de jeune, le problème "prepa" (préparation) est du chinois pour moi.

Je ne voudrais te faire du travail pour rien et revenir plusieurs fois modifier quelques choses

Si en attendant tu peux me dire comment faire sous Excel pour faire une "alerte" quand la date d'abonnement (trimestrielle, semestrielle, ou annuelle est dépassée par rapport à la date de renouvellement, je ne trouve pas grand chose sur la toile

Je reviendrais dès que j'ai des nouvelles en attendant merci de ton aide

Bonne soiré



Modifié par rolandin le 25/05/2013 18:50
ferrand
 Posté le 25/05/2013 à 20:54 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Astucien

Bonsoir,

Habituellement on construit les alertes sur dates avec une mise en forme conditionnelle.

Le problème pour le faire sur ton fichier est que la date d'échéance d'abonnement ne figure nulle part (au moins pour le moment ) !

rolandin
 Posté le 25/05/2013 à 22:03 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien
ferrand a écrit :

Bonsoir,

Habituellement on construit les alertes sur dates avec une mise en forme conditionnelle.

Le problème pour le faire sur ton fichier est que la date d'échéance d'abonnement ne figure nulle part (au moins pour le moment ) !

Tu sais, du moins tu t'en doute, mon fichier est complétement bidon, les noms les adresses, les n° de téléphone, etc. sont totalement faux

Ne sachant comment traiter le sujet, je n'ai rien créé comme colonne, je voulais au départ utiliser les feuilles "Abonn_Tri, Abonn_Semestri et Abonn_Annee" pour faire ces alertes, mais il doit y avoir plus simple en utilisant qu'une seule feuille, par exemple celle que je ne vais peut-être plus utiliser pour le moment, la feuille "Prepa", elle aura déjà la copie des noms et prénoms de la feuille "Base" en colonne A et B, reste à faire cette mise à jour de toutes nouvelles saisie de la feuille "Base". La colonne C pouvant recevoir des dates (bidons pour le moment, que tu peux créer si le coeur t'en dit pour faire tes créations de codes )

Bonne soirée et bon courage

ferrand
 Posté le 26/05/2013 à 14:04 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Astucien

Commençons par le début !

La feuille Base comporte 17 colonnes. Le formulaire de saisie comprend 17 rubriques, correspondant chacune à un champ de la Base.

1) Si une rubrique Préparation doit être ajoutée (figure dans image projet de formulaire), elle doit faire l'objet d'une colonne dans la base. Si cette option est retenue, Où doit être introduite la colonne Préparation dans Base ? Quel est le type de données qu'accueillera cette rubrique ? [NB: je ne m'intéresse pas aux infos personnelles ou non à saisir librement mais au type de données qu'elles représentent.]

2) Certaines rubriques semblent ne devoir accueillir qu'un nombre limité de valeurs (cas où la saisie n'est plus libre ), il s'agit de : Civilité, Poste (occupé), Abonné (ou Abonnement), Situation familiale. Pour chaque de ces rubriques, il serait bon de dresser la liste des valeurs qu'elles peuvent prendre, de façon qu'elles puissent être introduites par sélection dans une liste déroulante ?

3) Si des rubriques doivent être supprimées, de même que les colonnes correspondantes de Base, l'indiquer ?

rolandin
 Posté le 26/05/2013 à 16:58 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

Bonjour

Avec beaucoup de retard, en cette journée de la fête des mères

http://cjoint.com/?3EAq5u6AYtR

Bonne soirée

Publicité
ferrand
 Posté le 26/05/2013 à 18:46 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Astucien

On va considérer que la feuille Base est définitive. On peut faire en sorte que la saisie et la consultation fonctionne. Mais je ne peux rationnellement boucler ce volet qu'avec les réponses de la question 2 de mon dernier post.

La suite ce sera quand on saura...

Bonne fin de week-end.

rolandin
 Posté le 26/05/2013 à 20:07 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien
ferrand a écrit :

2) Certaines rubriques semblent ne devoir accueillir qu'un nombre limité de valeurs (cas où la saisie n'est plus libre ), il s'agit de : Civilité, Poste (occupé), Abonné (ou Abonnement), Situation familiale. Pour chaque de ces rubriques, il serait bon de dresser la liste des valeurs qu'elles peuvent prendre, de façon qu'elles puissent être introduites par sélection dans une liste déroulante ?

Oui je suis passé au travers de cette question

Civilité = M. et Mme

Poste occupé = Pilier, Talonneur, 2° ligne, 3° ligne, Demi mélée, Demi ouverture, Aillier, Centre, Arrière.

Situation familiale = Célibataire, Mariè(e), Autre, (j'ai mis au début pour "meubler" ne sert pas à grand chose à supprimer

Abonnement mois =
Abonnement séance =

c'est le point qui est le plus confu pour moi car ne sachant pas s'il y a des solutions plus simples que moi débutant je ne vois pas. J'ai mis des chiifres dans ces cases 3,6,12 pour trimestre, semestre, année, et 10 et 20 pour le nombre de séances pensant qu'il était possible de faire un lien pour réaliser l'alerte du dépassement d'abonnement.

Il me disait aussi (une chose qui m'a échappée) de prévoir une feuille "Présence" sachant qu'il ouvre le club du lundi au samedi.

Créer un 1 jour par colonne c'est pas tellement pensable là encore il doit bien y avoir des solutions de cases à cocher, qui pourraîent servir (peut-être) pour les périodes d'adhésion et l'alerte.

Je ne sais vraiment pas quoi dire sur la réalisation de ces abonnements, si tu as des idées

Bonne soirée

ferrand
 Posté le 27/05/2013 à 22:16 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Astucien

Bonsoir,

Je crois avoir à peu près bouclé la constitution et modification de la base, sous réserve de vérifier le fonctionnement interne du formulaire, ce que je n'ai pas encore fait !

• donné un nom dynamique à la base de données

• établi 4 listes nommées pour alimenter les ComboBox du formulaire

• renommé les 17 TextBox du formulaire correspondant aux colonnes de la base, de façon à pouvoir les utiliser dans une boucle pour alimenter le formulaire ou servir la base

• certains de ces TextBox sont rendus invisibles, si l'affichage et la saisie dans le formulaire se fait au moyen d'autres contrôles : c'est le cas des 4 ComboBox déjà vus (mis en lien direct avec les TextBox correspondant), pour les 3 numéros de téléphone où les TextBox sont dédoublés (car la valeur à affecter aux cellules est un nombre mis en forme par le format de cellule, alors que l'affichage dans le formulaire sera un chaîne mise en forme avec des espaces), pour la date affichée sur 3 TextBox séparant jour-mois-année

• la date pose un problème récurent sous VBA : après passage dans un TextBox, si le jour est inférieur à 13, elle est renvoyée dans le tableau avec inversion du mois et du jour, même si on ne la modifie pas ; la solution que j'utilise est une variable Date pour la passer au formulaire, dont on extrait jour, mois et année pour les afficher ; au changement d'une de ces composantes, la variable est modifiée en utilisant une fonction de date, et dans ce cas particulier cette date est affectée au TextBox utilisé pour la sortie sous forme d'un entier long correspondant au nombre-date qui sera dès lors correctement affiché dans la cellule

• quelques autres aménagements lors de la saisie : conversion en majuscules pour Nom et Ville, initiales majuscules pour Prénoms, 5 chiffres uniquement pour Code postal, structure et caractères autorisés d'adresse e-mail

Losqu'on saura comment se traitent les abonnements, on pourra compléter...

rolandin
 Posté le 28/05/2013 à 15:16 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien
ferrand a écrit :

Bonsoir,

Je crois avoir à peu près bouclé la constitution et modification de la base, sous réserve de vérifier le fonctionnement interne du formulaire, ce que je n'ai pas encore fait !

• donné un nom dynamique à la base de données

• établi 4 listes nommées pour alimenter les ComboBox du formulaire

Simplement par curiosité et pour m'instruire, c'est quoi "un nom dynamique"

OK pour les 4 listes je verrais ce bon travail quand j'au rais le fichier

• renommé les 17 TextBox du formulaire correspondant aux colonnes de la base, de façon à pouvoir les utiliser dans une boucle pour alimenter le formulaire ou servir la base

J'aurais en effet pu le faire que de te donner du travail en plus

• certains de ces TextBox sont rendus invisibles, si l'affichage et la saisie dans le formulaire se fait au moyen d'autres contrôles : c'est le cas des 4 ComboBox déjà vus (mis en lien direct avec les TextBox correspondant), pour les 3 numéros de téléphone où les TextBox sont dédoublés (car la valeur à affecter aux cellules est un nombre mis en forme par le format de cellule, alors que l'affichage dans le formulaire sera un chaîne mise en forme avec des espaces), pour la date affichée sur 3 TextBox séparant jour-mois-année

Super tout ça, (je ne vois pas bien ce que c'est "ComboBox" TextBox oui (du moins je crois, c'est les noms donnés aux plages à remplir ("zones de texte) pour les numéros de téléphone j'aurais "bêtement" sélectionné les 3 colonnes, puis "Format/Cellules/Nombre-Spécial/Numéros de téléphone, mais cette pratique c'est pour les débutany

• la date pose un problème récurent sous VBA : après passage dans un TextBox, si le jour est inférieur à 13, elle est renvoyée dans le tableau avec inversion du mois et du jour, même si on ne la modifie pas ; la solution que j'utilise est une variable Date pour la passer au formulaire, dont on extrait jour, mois et année pour les afficher ; au changement d'une de ces composantes, la variable est modifiée en utilisant une fonction de date, et dans ce cas particulier cette date est affectée au TextBox utilisé pour la sortie sous forme d'un entier long correspondant au nombre-date qui sera dès lors correctement affiché dans la cellule

Que de travail pour une date, je vais apprendre

• quelques autres aménagements lors de la saisie : conversion en majuscules pour Nom et Ville, initiales majuscules pour Prénoms, 5 chiffres uniquement pour Code postal, structure et caractères autorisés d'adresse e-mail

Losqu'on saura comment se traitent les abonnements, on pourra compléter...

Bonjour avec beaucoup retard je suis désolé

Comme dit voici quelques jours je n’étais pas à la maison pour cause d’opération d’un œil de mon épouse (vitrectomie membrane épirétinienne, si tu vois ce que je veux dire hi ! hi !) entre hier et aujourd’hui (nous rentrons à peine). Comme il n’y a que centre spécialisé dans ce genre d’opération il y a du monde et beaucoup d’attente. Maintenant il lui faut beaucoup de repos (peut-être à moi aussi , je vais devoir faire beaucoup de tâches en plus

Je suis désolé de te donner autant de travail, mais je vois que tu fais cela très sérieusement, il y a en effet des points que je t’aurais « sûrement demandés après », mais c’est mieux de prévoir avant (conversion en majuscules pour Nom et Ville, initiales majuscules pour Prénoms, 5 chiffres uniquement pour Code postal, structure et caractères autorisés d'adresse e-mail). Pour le moment n’ayant pas le fichier sous les yeux « modifié » je ne vois que très vaguement le travail que tu as fait, je m’en rendrais mieux compte à l’essayage …… !

Pour ces abonnements, je viens de lui adresser un mail, plus un SMS pour qu’il me répondre, car j’attends encore ses réponses. Ces abonnements comme je disais sont :

  1. Période de 10 séances
  2. Période de 20 séances
  3. Au trimestre
  4. Au semestre
  5. A l’année

C’est pourquoi il faut une feuille (ou un autre moyen de présence) avec une alerte dès qu’un abonnement arrive à sa fin (quelques séances avant pour les abonnement de 10 et 20 séances) ou que celui-ci est « Périmé » dans quelques jours pour les abonnements « trimestriels, semestriels, annuels.

Amitiés

ferrand
 Posté le 28/05/2013 à 16:06 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Astucien

Salut,

je ne vois pas bien ce que c'est "ComboBox" TextBox oui (du moins je crois

Simplement par curiosité et pour m'instruire, c'est quoi "un nom dynamique"

Exemple pour ta base de données, la plage est définie au moyen de la formule suivante :

=DECALER(Base!$A$2;;;NBVAL(Base!$B:$B)-1;NBVAL(Base!$1:$1))

Plage définie à partir de sa cellule supérieure gauche (A2), qu'on ne décale pas (deux arguments suivants laissés vides) qui comprend un nombre de lignes égal au nombre de valeurs de la colonne B (c'est Nom) diminuée de 1 (pour l'en-tête) et un nombre de colonnes égal au nombre de valeurs de la ligne 1 (l'en-tête). Ainsi lorsqu'on ajoute des lignes (et le cas échéant des colonnes) ou qu'on en enlève, le nom s'appliquera toujours à la base telle qu'elle a évolué.

rolandin
 Posté le 28/05/2013 à 16:21 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

Re,

Merci je comprends mieux maintenant, j'ai hâte de voir fonctionner tes modifications en ce moment je tourne en rond

ferrand
 Posté le 28/05/2013 à 17:18 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Astucien

http://cjoint.com/?CECrayh9TE5

Tu pourras tester le formulaire et me signaler les bogues .

Pour que tu t'y retrouves... Le bouton d'inscription pointe toujours sur la procédure Saisie_int, réaménagée mais qui aboutit à afficher le formulaire (vierge) pour saisie. J'ai créé un autre bouton : MODIFIER (sur Base), qui pointe sur une proc. Modif_int, laquelle affiche aussi le formulaire mais avec les infos correspondant à la ligne sur laquelle se trouve le curseur sur Base. Dans ce cas les boutons Précédent et Suivant du formulaire te font naviguer parmi les adhérents inscrits sans quitter le formulaire et si tu modifies une info, OK permet de l'enregistrer et tu restes dans le formulaire (que tu quittes par le bouton FERMER). S'il s'agit de la saisie d'un nouvel adhérent, OK fermera le formulaire (que tu peux aussi fermer sans valider avec le bouton ANNULER).

Outre le formulaire, dans la foulée, j'ai revisé la suppression et les tris. Mais si on a un feuille Abonnement à gérer simultanément, il faudra savoir si elle doivent être couplées (suppression et tris devant se faire sur les deux, de même que les ajouts) et dans ce cas compléter toutes les procédures pour agir sur les deux feuilles.

Je te laisse voir l'état actuel.

rolandin
 Posté le 28/05/2013 à 20:39 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

Bonsoir,

C’est vraiment SUPER ce que tu as fait, je suis très content, il me faudra plus tard arriver à comprendre tous tes codes.

Je vais passer aux problèmes que je viens de rencontrer après plusieurs essais.

Le ligne 16 pose problème avec le bouton « Modifier » en « Base ». J’ai créé une ligne 17 et si je veux faire précédent à l’aide du bouton « Fiche précédente » c’est impossible, j’ai le message suivant « Erreur ‘5’ Argument ou appel de procédure incorrect » je clique sur « Débogage » j’ai la ligne sélectionnée en jaune «Mid(pr, 1, 1) = UCase(Mid(pr, 1, 1)) » de ' Profession (affichage et saisie) - Assure initiale majuscule

Si je sélectionne la ligne 12 et que je descends arrivé à cette ligne 16 le bug revient.

Il m’ait arrivé aussi de cliquer sur un nom B5 ou A4 (par exemple) et d’avoir le message

« Valeur de propriété non valide » sur le dessus du formulaire (Modifier) et même message en dessous de ce même formulaire.

Demande : (si c'est possible)

  • Passer à la case suivante pour la saisie de la date de naissance (avec touche de direction)
  • Passer à la case en dessous (Email) à la case « Téléphone fixe » avec touche de direction (comme pour les précédentes) ainsi que de passer à la case suivante « Tel mobile, tel bureau) toujours avec les touches de direction.
  • Que l’adresse commence par une majuscule

Il manquerait (pour la suite, abonnement) une « zone de texte » pour saisir la date d’abonnement dans la dernière colonne de la « Base »

Dans ce même formulaire :

  • Ajouter des cases à cocher « Trimestre, Semestre, Année, 10 séances, 20 séances
  • Ces informations seraient dupliquées dans la feuille « Abonne » colonne C,D,E,F,G, ainsi que la colonne H qui représenterait la colonne « Date abonnement » cette feuille « Abonne » qui aurait également les colonnes B et C de la « Base » qui auraient été copiées/collées (avec mise à jour)

Avec ces informations sur cette feuille « Abonne » une alerte « PERIME » dans une colonne de la ligne concernée. Et dans le cas d’une alerte un voyant (ou bouton) « ROUGE » qui « Clignote » et que si nous appuyons dessus nous cela nous dirige sur la feuille « Abonne » qui nous signalera « la » ou « les alertes ».

Bonne soirée à toi et bon courage, tu arrives à la fin, je suis super content pour le jeune à qui je n'ai rien fait voir

ferrand
 Posté le 29/05/2013 à 00:24 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Astucien

j’ai le message suivant « Erreur ‘5’ Argument ou appel de procédure incorrect »

Je vois, la méthode pour passer l'initiale en majuscule ne supporte pas les chaînes vides (elle cherche le 1er caractère et ne le trouve pas !). Cela ne doit pas être le seul problème résiduel du genre, j'essaie de prendre le temps de passer ça en revue demain pour éliminer ces bévues.

Pour la propriété "non valide", normal, c'est quand ce qui préexistait ne correspond pas à la liste de choix... 2 façons de régler ça, on en reparle...

Passer à la case suivante pour la saisie de la date de naissance (avec touche de direction)

C'est en général la touche de tabulation qui sert à naviguer d'un contrôle à l'autre (la touche Entrée utilisée pour valider a également le même effet). Tu choisis l'ordre de tabulation pour passer d'un contrôle à l'autre : dans l'éditeur VBA, clic droit dans le Userform (sur une zone vide, pas sur un contrôle) et clic sur Ordre de tabulation, ça affiche la liste des contrôle, il faut repérer ceux que tu veux déplacer et avant ou après quel autre tu veux les mettre, et tu fais monter ou descendre...

Que l’adresse commence par une majuscule

Plus difficile ! Le plus souvent l'adresse commence par un numéro dans la voie (donc chiffre), suivi du type de voie (qui ne prend normalement pas de majuscule en typographie française), les mots suivants en prennent le plus souvent sauf articles, prépositions, ... J'y réfléchis. Je conçois que c'est confortable de taper en minuscules sans se préoccuper de ce qu'on veut avoir finalement en majuscules (qui se mettent automatiquement), mais je ne m'y suis pas encore lancé pour les libellés d'adresses. A voir !

Ajouter des cases à cocher « Trimestre, Semestre, Année, 10 séances, 20 séances

Il y a déjà une zone de liste (ComboBox) pour ce choix.

Il manquerait (pour la suite, abonnement) une « zone de texte » pour saisir la date d’abonnement dans la dernière colonne de la « Base

En effet. Il faut aussi savoir comment cela doit fonctionner : si les abonnements "périodiques" sont sur des périodes calendaires fixes (trimestre, semestre, année) ou sur des durées équivalentes. Pour gérer les abonnements, ce ne sera pas la même chose. Et ceux en nombre de séances, implique que les séances soient comptabilisées ailleurs...

Je note tes nouvelles précisions relatives à la feuille abonnement... On pourra bâtir des alertes lorsqu'on pourra définir des dates précises de déclenchement. Comme je l'ai indiqué, la façon commune pour ces signalisations réside dans les mises en formes conditionnelles (changement de couleur sur un critère pré-défini par exemple). Je ne conseillerais pas les "clignotants", qui tiennent un peu trop du gadget et se révèlent plutôt encombrants à l'usage, mais il est possible de doubler les MFC par une alerte à l'ouverture du classeur pour signaler les problèmes à régler (et là on peut voir pour un "clignotant" : pas gênant si on l'arrête pour pouvoir travailler).

Bon ! Je revois d'abord les petits bogues sur les contrôles et te mettre quelques indications plus précises pour t'y retrouver dans l'imbrication des procédures.

Bonne fin de soirée.

Publicité
Pages : [1] 2 3 4 ... Fin
Page 1 sur 4 [Fin]

Vous devez être connecté pour poster des messages. Cliquez ici pour vous identifier.

Vous n'avez pas de compte ? Créez-en un gratuitement !


Les bons plans du moment PC Astuces

Tous les Bons Plans
91,99 €Enceinte connectée Amazon Echo avec Alexa + 2 ampoules connectées Philips Hue White à 91,99 €
Valable jusqu'au 05 Juin

Amazon propose l'enceinte Echo de 3ème génération accompagnée de 2 ampoules Philips Hue White E27 à 91,99 € (au lieu de 129,99 €). L'appareil piloté par la voix fonctionne avec Alexa, l’intelligence artificielle développée par Amazon. Vous pourrez avec elle écouter de la musique, interagir avec vos appareils domotiques dont les 2 ampoules fournies (pour allumer et éteindre la lumière à la voix), écouter les infos, la radio, connaître la météo et d’accéder à des milliers d’autres possibilités grâce aux Skills : recettes de cuisine, petits jeux, etc. Par rapport à la génération précédente, le son est amélioré et l'enceinte arbore un nouveau design. L'enceinte est équipée du son Dolby qui remplira la pièce d'un son immersif et omnidirectionnel, avec des voix nettes, des basses profondes et des aigus clairs à volume élevé. Grâce à ses sept microphones, ses technologies de beamforming et de réduction du bruit, Amazon Echo vous entend où que vous soyez dans la pièce, même lorsqu'il y a de la musique. 


> Voir l'offre
24,99 €Fire TV Stick Basic Edition à 24,99 €
Valable jusqu'au 05 Juin

Amazon fait une promotion sur la nouvelle version de sa clé HDMI Fire TV Stick Basic Edition qu'il propose à 24,99 € au lieu de 39,99 €. Cette clé HDMI à brancher sur votre TV possède un processeur quadricoeur, 1 Go de RAM et 8 Go d'espace de stockage, le WiFi et le bluetooth. Une télécommande est fournie. Avec elle, vous allez pouvoir voir facilement Prime Video, Netflix, Disney+, YouTube, Spotify sur votre TV Full HD. Cette nouvelle version est désormais compatible Alexa et possède une télécommande améliorée (avec plus de boutons de contrôle).


> Voir l'offre
67,99 €Carte mémoire SDXC UHS-I U3 SanDisk Extreme 256 Go à 67,99 €
Valable jusqu'au 03 Juin

Amazon fait une promotion sur la carte mémoire SDXC UHS-I U3 SanDisk Extreme 256 Go qui passe à 67,99 €. La livraison est gratuite. Cette carte mémoire offre des vitesses jusqu'à 150 Mo/s et est idéale pour les caméras et appareils photo HD. On la trouve ailleurs à partir de 99 €.


> Voir l'offre

Sujets relatifs
Excel 2007 extraction feuille 1 dans feuille 2 avec mise en forme
Mise à jour feuilles selon entrée 1ère feuille
copier coller avec mise à jour des données
regrouper feuilles dans une feuille
Excel 2007 Copier/Coller d’une feuille à l’autre Dans un même classeur.
Copier le formatage d une feuille Calc sur 11 autres feuilles
Désactiver la mise à jour dans Ultraedit
Supprimer la confirmation de mise à jour des liens avec Excel
Mise à jour des liaisons Excel dans un PPS
PB mise à jour des données avec une formule
Plus de sujets relatifs à Copier feuille 1 dans feuilles 2 et 3 avec mise à jour
 > Tous les forums > Forum Bureautique