Copier un tableau dans une centaine de feuilles et créer des liens hypertextes automa

ckoebel5

XLDnaute Junior
Bonjour,
Je suis débutant en VBA mais je compte bien m’améliorer !
Par contre je suis impatient d’avoir quelques réponses, et pour l’instant je préfère demander de l’aide plutôt que d’apprendre pas à pas… mais cela va venir.

Voilà j’ai une feuille « liste des élèves » composée de plus d’une centaine de lignes (des élèves) dans la feuil3, la colonne C (prénoms).

1) J’aimerais affecter un lien à chaque prénom Cn pour qu’il renvoie à une feuille Feuiln du même classeur.
J’ai déjà crée ces feuilles qui portent le prénom de chaque élève (grâce à une macro
trouvée chez vous mais que j’ai sans doute maladroitement modifiée, mais ça marche ) qui pour l’instant sont vierges.

2) Dans chaque feuille Feuiln, j’aimerais coller un tableau « modèle » identique pour tous au départ, (et que ce tableau s’affiche en zoom plein écran (ça ça serait la cerise sur le gateau), sauf que sur chaque feuille j’aimerais aussi un lien qui renvoie à la « ligne » n du tableau liste des élèves et que les valeurs de ce tableau soient aussi recopiées à la ligne n.

Vous avez sans doute deviné que je suis enseignant (au collège), mais pas d’informatique !!!!

Je ne sais si une personne aura la grande âme de m’aider, en tout cas, je la remercie d’avance pour sa contribution:) et ça m’aidera franchement à être plus efficace surtout lorsque je travaillerai avec une tablette PC.

Christophe
 

Dranreb

XLDnaute Barbatruc
Re : Copier un tableau dans une centaine de feuilles et créer des liens hypertextes a

Mais je ne vois rien dans votre programmation qui ressemble à ce que je vous conseille de faire.
Regardez un peu la structure de début de la programmation de UfEffCls: son affichage est réalisé grâce à une procédure Afficher
Dans celle de votre UfFicheÉlv vous y garnirez tous vos contrôles un peu comme je l'ai fait pour le Label qui indique la classe en haut à gauche par l'instruction: Me.LbClasse.Caption = "Classe " & FCtrl.[LaClasse].Value
VB:
Option Explicit
Dim LÉlv As Long
'

Public Sub Afficher()
LÉlv = FCtrl.[LgnÉlv].Value
Me.LbNomÉlv.Caption = FLstÉlv.[Prénom].Rows(LÉlv).Value & " " & FLstÉlv.[Nom].Rows(LÉlv).Value
Me.TbxInsol.Text = FLstÉlv.[Insolence].Rows(LÉlv).Value
' Pareil pour tous les autres contrôles
Me.Show
End Sub
Et dans les procédure des boutons vous travaillerez non plus dans la feuille liste des élèves mais dans le TextBox associé.
Vous prévoirez un bouton de validation pour enregistrez vos modifications ou vous ferez les affectations inverses de celles de Afficher.
 

ckoebel5

XLDnaute Junior
Re : Copier un tableau dans une centaine de feuilles et créer des liens hypertextes a

Bonsoir,
J'ai commencé à refaire la programmation dont voici le début.
Code:
Option Explicit
Dim LÉlv As Long
'

Public Sub Afficher()
LÉlv = FCtrl.[LgnÉlv].Value
Me.LbNomÉlv.Caption = FLstÉlv.[Prénom].Rows(LÉlv).Value & " " & FLstÉlv.[Nom].Rows(LÉlv).Value
Me.LbNaissance.Caption = FLstÉlv.[Naissance].Rows(LÉlv).Value
Me.LbTélÉlv.Caption = FLstÉlv.[Téléphone].Rows(LÉlv).Value
Me.TbxInsol.Text = FLstÉlv.[Insolences].Rows(LÉlv).Value
Me.TbxRtrd.Text = FLstÉlv.[Retards].Rows(LÉlv).Value
Me.TbxAbs.Text = FLstÉlv.[Absences].Rows(LÉlv).Value
Me.TbxParticiPls.Text = FLstÉlv.[Participation].Rows(LÉlv).Value
Me.TbxDnl.Text = FLstÉlv.[DNL].Rows(LÉlv).Value
Me.TbxQuestPls.Text = FLstÉlv.[Implica].Rows(LÉlv).Value
Me.TbxQuestMns.Text = FLstÉlv.[QuestMoins].Rows(LÉlv).Value
Me.TbxEcout.Text = FLstÉlv.[Écoute].Rows(LÉlv).Value
Me.TbxBav.Text = FLstÉlv.[Bavard].Rows(LÉlv).Value
Me.TbxTravPls.Text = FLstÉlv.[TravPlus].Rows(LÉlv).Value
Me.TbxTravMns.Text = FLstÉlv.[TravClas].Rows(LÉlv).Value
Me.TbxCnr.Text = FLstÉlv.[CNR].Rows(LÉlv).Value
Me.TbxMatos.Text = FLstÉlv.[Matériel].Rows(LÉlv).Value
Me.TbxDevPls.Text = FLstÉlv.[DPlus].Rows(LÉlv).Value
Me.TbxDnr.Text = FLstÉlv.[DNR].Rows(LÉlv).Value
Me.TbxDevMns.Text = FLstÉlv.[DiOuF].Rows(LÉlv).Value
Me.TbxDnf.Text = FLstÉlv.[DNF].Rows(LÉlv).Value
Me.TbxPuni.Text = FLstÉlv.[Punitions].Rows(LÉlv).Value
Me.TbxPuniCum.Text = FLstÉlv.[CumulPu].Rows(LÉlv).Value
Me.TbxCol.Text = FLstÉlv.[Colles].Rows(LÉlv).Value
Me.TbxColCum.Text = FLstÉlv.[CumulCo].Rows(LÉlv).Value
Me.TbxCarnet.Text = FLstÉlv.[Carnet].Rows(LÉlv).Value
Me.TbxCarnetCum.Text = FLstÉlv.[CumulCa].Rows(LÉlv).Value
Me.Show
End Sub

Private Sub BtAbs_Click()
Me.TbxAbs.Text = Me.TbxAbs.Text + 1
End Sub

Private Sub BtAbsDécr_Click()
Me.TbxAbs.Text = Me.TbxAbs.Text - 1
Me.TbxRtrd.Text = Me.TbxRtrd.Text + 1
End Sub

Private Sub BtBav_Click()
Me.TbxBav.Text = Me.TbxBav.Text + 1
End Sub

Private Sub BtPuni_Click()
Me.TbxPuni.Text = Me.TbxPuni.Text + 1
Me.TbxPuniCum.Text = Me.TbxPuniCum.Text + 1
End Sub

J'ai deux questions:
1) Lorsque j' execute le code, il ne se passe rein dans l'uf, les données de l'élève de la liste ne sont pas chargées. Pourquoi?
2) Le code "Me.TbxPuni.Text = Me.TbxPuni.Text + 1" va-t-il être accepté puisque là je demande de faire des calculs avec du texte ?

Merci,
Cordialement
 

Dranreb

XLDnaute Barbatruc
Re : Copier un tableau dans une centaine de feuilles et créer des liens hypertextes a

Bonsoir
Lorsque j' execute le code, il ne se passe rein dans l'uf, les données de l'élève de la liste ne sont pas chargées. Pourquoi?
Si vous parlez juste d'un essai d'affichage de l'UF, c'est normal. Mais si vous remaniez comme suit la fin de la procédure SélectionDansSalle du module MÉvènSalle, il devrait déjà commencer à se passer quelque chose.
VB:
ElseIf P2 > 0 And L2 > 0 Then
   FCtrl.[LgnÉlv].Value = L2 + dL
   UfEffCls.SélectÉlv
   If UfEffCls.OpbFiche.Value Then
      UfFichÉlv.Afficher
      UfEffCls.Raffraîchir
   ElseIf UfEffCls.OpbSoutien.Value Then
      ModifierSoutien
      UfEffCls.Raffraîchir
   Else
      End If
Else
   UfEffCls.Désélectionner
   End If
End Sub
Le code "Me.TbxPuni.Text = Me.TbxPuni.Text + 1" va-t-il être accepté puisque là je demande de faire des calculs avec du texte ?
Oui. Mais c'est bien de vous en inquiéter. En revanche quand vous réécrirez son contenu il serait souhaitable d'écrire = CDbl(ME.TbxPuni.Text) pour être sur d'éviter que le nombre ne soit enregistré en tant que texte dans la cellule.
P.S. On risque toutefois peut être un petit problème quand c'est d'abord vide. On verra, c'est du détail de mise au point, rien d'insurmontable.
À+
 
Dernière édition:

ckoebel5

XLDnaute Junior
Re : Copier un tableau dans une centaine de feuilles et créer des liens hypertextes a

Bonjour,
Deux questions pour la reprise: j'ai avancé avec le code des textbox, par contre j'essaie vainement dans la listBox Soutien de la fiche élève de faire afficher les soutiens auxquels l'élève est inscrit...Pour Noël, c'est décidé, je m'offre un livre de programmation!

Voici ce que j'ai écrit en essayant maladroitement de m'inspirer de votre code...

Private Sub LbxSoutÉlv_Click()
Dim Sout As String, PlgSout As Range, Z As String, P As Long, C As String, L As Long, i As Integer
Set PlgSout = FLstÉlv.[Soutiens].Rows(LÉlv)
Z = PlgSout.Value
L = Len(Z) / 3 'fonctionne tant qu'il y a moins de 100 soutiens car num soutien à 2 chiffres +1 pour a ou b
For i = 0 To L - 1
C = Mid$(Z, i * 3, 2)
P = CDbl(C)
LbxSoutÉlv.AddItem (FSoutien.[ListSout].Rows(P + 1))
Next
End Sub


2ème Problème: Si j'insère un soutien dans la feuille liste des soutiens, la listBox de l'UfSoutien est bien modifiée mais...le numéros des soutiens suivants est incrémenté de 1 (puisque j'ai inséré) or les élèves précédemment séléctionnés au soutien 30 par exemple vont rester au soutien 30 alors qu'en réalité il devraient l'être au 31 après insertion....
Le problème c'est que cette liste n'est pas figée en début d'année, elle évolue en pratique.
Comment contourner ce problème? Rajouter le soutien à la fin? Mais alors les niveaux vont être mélangés.

Cordialement.
 

Pièces jointes

  • GestClasseÉcole2.xls
    259 KB · Affichages: 93

Dranreb

XLDnaute Barbatruc
Re : Copier un tableau dans une centaine de feuilles et créer des liens hypertextes a

Bonjour.
Je vois déjà des choses intéressantes avant d'ouvrir votre classeur:
Vous avez bien compris l'organisation et le mécanisme d'enregistrement des soutiens, et ce que vous avez écrit (dans un nouvel UF je suppose) devrait à priori marcher à un détail près. Heu... à réécrire plutôt comme ça:
VB:
For i = 1 To Len(Z) - 2 Step 3
   P = CLng(Mid$(Z, i, 2))
   LbxSoutÉlv.AddItem FSoutien.[ListSout].Rows(P)
   Next i
Pour le second point, eh, oui c'est un peu ce que je craignais.
Le plus simple serait d'insérer en début d'année quelques lignes "*** Réservé ***" dans chaque niveau.
Sinon il faut confier l'insertion ou la suppression d'une ligne à une macro qui change tous les numéros qui suivent cette ligne dans la colonne "Soutiens". L'enregistrement d'une macro qui le ferait pour un numéro donnerait un bon squelette. Une boucle le ferait pour tous les numéros concernés (commencer par la fin avec Step -1 dans le For pour une insertion et utiliser Format(NSout,"00") pour les avoir en texte)
Ça resterait plus simple de faire comme ça, je crois, que d'adjoindre une clé ou de prévoir un ordre mélangé possible des numéros.

Je vais maintenant regarder l'ensemble de votre travail.
Cordialement.

Il manque aussi juste avant la boucle: LbxSoutÉlv.Clear
Par ailleurs je crois que LbxSoutÉlv_Click ne se déclenche pas si la liste est vide, parce que son but est plutôt de réagir à la sélection d'une de ses lignes.
Appelons cette procédure ListerSoutiens juste avant le Me.Show dans Afficher.
Récapitulons, à partir de la pré-antépénultième instruction de Afficher :
VB:
If Me.TbxDnr.Text = "" Then Me.TbxDnr.Text = 0
ListerSoutiens
Me.Show
End Sub

Private Sub ListerSoutiens()
Dim Z As String, P As Long
Z = FLstÉlv.[Soutiens].Rows(LÉlv).Value
LbxSoutÉlv.Clear
For P = 1 To Len(Z) - 2 Step 3
   LbxSoutÉlv.AddItem FSoutien.[ListSout].Rows(CLng(Mid$(Z, P, 2))).Value & " (" & Mid$(Z, P + 2, 1) & ")"
   Next P
End Sub

Petite recommandation: Dans Vue_ItemClick, derrière UfFichÉlv.Afficher :
VB:
   Raffraîchir
pour que la vue fasse état des modifications qui ont pu être apportées à la ligne de l'élève depuis la fiche.
Autre chose, j'ignore pourquoi j'ai laissé un coup en commentaire la dernière procédure
Private Sub UserForm_QueryClose
Enlevez les cotes devant. C'est une sécurité au cas ou on demande à fermer l'UfEffCls, pour ne pas perdre son contenu.

À +
 
Dernière édition:

ckoebel5

XLDnaute Junior
Re : Copier un tableau dans une centaine de feuilles et créer des liens hypertextes a

Bonsoir!
Je suis entrain de tester une formule très provisoire de calcul de "note d'effort", j'ai mis cette formule dans un private Sub et non dans la feuille de calcul "Liste des élèves", la note s'affiche dans l'UfFichElv, par contre je n'ai pas réussi à la faire se modifier "en direct" c'est à dire qu'elle se modifie instantanément dans le textbox à chaque modif (bouton activé) effectuée sur la fiche. Y a-t-il un moyen simple?

Code:
Me.TbxOralMoy1.Text = FLstÉlv.[OralMoy1].Rows(LÉlv).Value
ListerSoutiens
NotEff
Me.Show
End Sub     'fin du public sub afficher

Private Sub NotEff()
Dim NotEffort, trav, quest, attidclasse, particip, insol As Long, dev, mat As Long, pucoca
trav = FLstÉlv.[TravPlus].Rows(LÉlv).Value - FLstÉlv.[TravClas].Rows(LÉlv).Value
quest = FLstÉlv.[Implica].Rows(LÉlv).Value - FLstÉlv.[QuestMoins].Rows(LÉlv).Value
particip = FLstÉlv.[Participation].Rows(LÉlv).Value - FLstÉlv.[DNL].Rows(LÉlv).Value
attidclasse = trav + quest + particip - (FLstÉlv.[Écoute].Rows(LÉlv).Value + FLstÉlv.[Bavard].Rows(LÉlv).Value)
If attidclasse > 8 Then attidclasse = 8
If attidclasse < 0 Then attidclasse = 0
If FLstÉlv.[Insolences].Rows(LÉlv).Value > 1 Then insol = 0 Else If FLstÉlv.[Insolences].Rows(LÉlv).Value = 1 Then insol = 1 Else insol = 2
dev = 5 + FLstÉlv.[DPlus].Rows(LÉlv).Value * 0.5 - (FLstÉlv.[DNR].Rows(LÉlv).Value + 0.5 * FLstÉlv.[DiOuF].Rows(LÉlv).Value + FLstÉlv.[DNF].Rows(LÉlv).Value)
If dev > 5 Then dev = 5
If dev < 0 Then dev = 0
If FLstÉlv.[Matériel].Rows(LÉlv).Value > 3 Then mat = 0 Else If FLstÉlv.[Matériel].Rows(LÉlv).Value > 1 Then mat = 1 Else mat = 2
pucoca = 3 - (FLstÉlv.[Colles].Rows(LÉlv).Value + FLstÉlv.[Punitions].Rows(LÉlv).Value + 0.5 * FLstÉlv.[Carnet].Rows(LÉlv).Value)
If pucoca < 0 Then pucoca = 0
NotEffort = attidclasse + insol + dev + mat + pucoca
Me.TbxNotEff1 = NotEffort
End Sub

Dans chaque private sub Bt j'ai mis NotEff à la fin mais je ne sais pas quoi écrire de plus pour actualiser la tbxNotEff1

Cordialement.
 

Dranreb

XLDnaute Barbatruc
Re : Copier un tableau dans une centaine de feuilles et créer des liens hypertextes a

Bonsoir.
À priori votre calcul ne s'appuie pas sur des éléments changés par les boutons, mais sur des valeurs de cellules qui ne sont modifiées qu'à la validation.
Cordialement.
 

ckoebel5

XLDnaute Junior
Re : Copier un tableau dans une centaine de feuilles et créer des liens hypertextes a

Oui vous avez raison, j'ai fait cela pour effectuer les calculs avec des "valeurs" car par exemple
trav = CDbl(Me.TbxTravPls.Text) - CDbl(Me.TbxTravMns.Text) n'est pas accepté
et trav = Me.TbxTravPls.Text - Me.TbxTravMns.Text non plus...
Est-ce un problème de définition de trav(défini comme variant)? Ou plutôt y a t il une fonction autre que cdbl adaptée à ce que je souhaite?


Ok, j'ai trouvé: trav = Val(Me.TbxTravPls.Text) - Val(Me.TbxTravMns.Text)
Désolé pour le dérangement.

Cordialement.
 
Dernière édition:

ckoebel5

XLDnaute Junior
Re : Copier un tableau dans une centaine de feuilles et créer des liens hypertextes a

Bonjour,
Une autre question: Je réfléchis à la mise en place d'un module "compétences" basé sur le même principe que le soutien. Pour m'entraîner j'ai travaillé avec le code du module MSoutien afin d' avoir quatre niveaux A,B,C et D., et l'ai légèrement modifié ainsi:
Code:
Sub ModifierSoutien() 'change la chaine de charact des soutiens dans la liste des élèves
Dim LÉlv As Long, Sout As String, PlgSout As Range, Z As String, P As Long, C As String * 1
LÉlv = FCtrl.[LgnÉlv].Value
Sout = FCtrl.[SoutSél].Value
If Sout = "" Then
   MsgBox "Aucun soutien n'est sélectionné", vbCritical, "Modification soutien"
   Exit Sub
   End If
Set PlgSout = FLstÉlv.[Soutiens].Rows(LÉlv)
Z = PlgSout.Value
P = InStr(Z, Sout)
If P = 0 Then
   Z = Z & Sout & "d"
Else
   C = Mid$(Z, P + 2, 1)
   If C > "a" Then
      Mid$(Z, P + 2, 1) = Chr$(Asc(C) - 1)
      End If
   End If
PlgSout.Value = Z
End Sub

Pour les mises en forme conditionnelles des cases, avec quatre niveaux de couleurs, j'arrive à les faire case par case mais c'est fastidieux...J'ai essayé aussi par collage spécial de coller la mefc vers d'autres cellules, mais il faut néanmoins transformer la formule en remettant le bon numéro de place. Y a t il une méthode globale pour travailler avec l'ensemble des cellules de plan classe?

A+
 

Dranreb

XLDnaute Barbatruc
Re : Copier un tableau dans une centaine de feuilles et créer des liens hypertextes a

Bonjour
Voyez ce que vous pouvez faire avec UfEffCls.OpbNuméros_Change
Il y a le remplacement de la formule par le numéro de place qu'on a pu y trouver,
Et la mise en place d'une MeFC pour chaque place.
Cordialement.
 

ckoebel5

XLDnaute Junior
Re : Copier un tableau dans une centaine de feuilles et créer des liens hypertextes a

Bonjour,
Avant toutes choses je tenais à vous souhaiter un joyeux Noël! Et vous remercier encore pour votre disponibilité et votre patience. Vous me faites avancer, il y a deux mois je n'y connaissais presque plus rien en programmation (j'avais quelques bases effacées depuis la fac), à présent, j'y connais toujours presque rien mais j'ai le plaisir d'apprendre. Donc MERCI.

Je suis en train d'écrire quelques "petits" codes inspirés de divers sites mais le résultat me laisse perplexe.... L'un des codes concerne une macro pour dupliquer le fichier "GestClassEcole" en le renommant "GestClassEcole 2ème trimestre" ou "GestClassEcole 3ème trimestre" selon le nom du fichier initiale. Le code ne marche pas tout à fait comme je veux mais fonctionne. Premier point déficient: il créer les deux fichiers, alors que je n'en voudrais qu'un (celui du trimestre à venir). Deuxième problème, le fichier crée ressemble en tout point au fichier initial (même fonctionnement, même apparence... en tout cas je n'ai pas encore remarqué de différence) sauf que sa taille est de 220 ko alors que celle du fichier de départ est 692 ko !!!!? Donc je m'interroge sur ce mystère.:confused:
Voici le code en question:
Code:
Sub CopierFichier()
Dim racine As String
racine = Workbooks(ActiveWorkbook.Name).Path
Dir Workbooks(ActiveWorkbook.Name).Path
ChDir racine 'se place sur le repertoire du fichier
If ActiveWorkbook.Name Like "*1*" Then
ActiveWorkbook.Save
ActiveWorkbook.SaveAs Filename:="GestClasseÉcole 2ème trimestre.xls", FileFormat:= _
xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False
End If
If ActiveWorkbook.Name Like "*2*" Then
ActiveWorkbook.Save
ActiveWorkbook.SaveAs Filename:="GestClasseÉcole 3ème trimestre.xls", FileFormat:= _
xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False
End If
End Sub

Point positif: je peux vous envoyer le fichier obtenu sans avoir à le réduire!!!:)

J'aimerai compléter la macro pour qu'elle me vide le contenu de certaines plages (de la plage RDV à la plage C_3 de le feuille liste des élèves), j'y réfléchis...

A+
 

Pièces jointes

  • GestClasseÉcole 2ème trimestre.xls
    219.3 KB · Affichages: 83

Dranreb

XLDnaute Barbatruc
Re : Copier un tableau dans une centaine de feuilles et créer des liens hypertextes a

Bonjour.
Joyeux Noël à vous aussi.
Si le but est toujours de n'avoir qu'un classeur, je ne vois pas l'intérêt de changer son nom.
Je n'ai pas de réponse concernant la diminution de taille, si ce n'est qu'on peut en déduire que la taille initiale était aberrante.
Remarque: Je n'arrive pas à ouvrir le classeur joint: il ne peut pas reconnaître le format du fichier.
Pour le meilleur codage d'un effacement, ceci me semble faire l'affaire:
VB:
FLstÉlv.[RDV:C_3].Rows(2).Resize(500).ClearContents
À +
 

ckoebel5

XLDnaute Junior
Re : Copier un tableau dans une centaine de feuilles et créer des liens hypertextes a

Bonjour,
Concernant le classeur, le but est de n'en avoir qu'un pour chaque trimestre. Au début du deuxième trimestre par exemple, je remets les données propres au premier trimestre à zéros sauf les bilans (colonnes jaunes du tableau) et les colonnes "constantes" (tél, naissance, place dans la salle..) et la colonne soutiens bien sûr.
Donc les moyennes (colonnes jaunes) temporaires du trimestre doivent s'inscrire dans la colonne deuxième trimestre (car il y a un 2 dans le titre du fichier créé...)
C'était l'idée de ma macro, de préparer le fichier du trimestre suivant en appuyant simplement sur un bouton, mais n'étant pas pro je me doute qu'il y a d'autres façons de faire, mais je voulais garder la trace complète du premier trimestre, donc c'était cette idée que je voulais écrire en code .

Pour ce qui est de la taille et du format, je pense que le logiciel fait de façon invisible une sauvegarde au format propre à Excel 2007, qui est plus compact que la version "mode de compatibilité"avec laquelle je travaille d'habitude mais dont les sauvegardes occupent trois fois plus de place mémoire. Je pense que la sauvegarde au format "caché" peut expliquer le fait que vous n'arriviez pas à l'ouvrir. A l'ouverture chez moi du fichier ainsi crée apparait une msgbox "le format du fichier que vous tentez d'ouvrir....est différent de celui spécifié par l'extension de fichier....blabla... Souhaitez vous ouvrir le fichier maintenant? Oui NON Aide " Je clique "Oui" et ça s'ouvre. Par contre lorsque je l'enregistre en faisant "enregistrer sous" et que je choisis excel97 2003 alors il enregistre mais la taille du fichier est à nouveau de presque 600 ko et d'où mon problème à moi ... d'envoi. Voilà.

J'ai écrit d'autres macros, mais franchement pas très pros, les dernières étant pour pouvoir effectuer des soutiens tout en modifiant en conséquence le string soutien de chaque élève . Echec pour l'instant...
Code:
Sub InsertSout() 'change la chaine de charact des soutiens dans la liste des élèves car la liste des soutiens évolue
Dim L As Long, Sinsert As String, Sout As String, PlgSout As Range, Z As String, P As Long, C As String * 1, k As Integer
Sinsert = TbxInsert.Text   'voir dans l UfSoutInsert , correspond au num précédent le num du soutien inséré
For L = 2 To FLstÉlv.Rows.Count - 1
    Set PlgSout = FLstÉlv.[Soutiens].Rows(L)
    Z = PlgSout.Value
        For k = Len(Z) - 2 To 1 Step -3
            If Val(Mid$(Z, k, 2)) > Sinsert.Value Then
            Z = Left$(Z, k - 1) & Chr$(Val(Mid$(Z, k, 2)) + 1) & Mid$(Z, k + 2)
            End If
        Next k
    End If
    FLstÉlv.[Soutiens].Rows(L) = Z
Next L
End Sub

et aussi
Code:
Sub SupprSout()  'change la chaine de charact des soutiens dans la liste des élèves car la liste des soutiens évolue
Dim L As Long, Sout As String, PlgSout As Range, Z As String, P As Long, C As String * 1, k As Integer
     'voir l'UfSoutSuppr
'Remarque: pour l'instant je ne me suis pas préoccupé d'
'utiliser Format(NSout,"00") pour les avoir en texte
'donc probable que ça bloque
For L = 2 To FLstÉlv.Rows.Count - 1
    Set PlgSout = FLstÉlv.[Soutiens].Rows(L)
    Z = PlgSout.Value
    P = InStr(Z, Ssuppr)
    If Not P = 0 Then Z = Left$(Z, P - 1) & Mid$(Z, P + 3)
    For k = 1 To Len(Z) - 2 Step 3
        If Val(Mid$(Z, k, 2)) > Val(Ssuppr) Then
            Z = Left$(Z, k - 1) & Chr$(Val(Mid$(Z, k, 2)) - 1) & Mid$(Z, k + 2)
            End If
    ' end if not ??
    Next k
    FLstÉlv.[Soutiens].Rows(L) = Z
Next L
End Sub

Je vous laisse mon email, car j'ai du mal à réduire suffisamment mon fichier, donc si vous voulez bien me laisser le vôtre, je me ferais un plaisir de vous envoyer la chose.

Cordialement.
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re : Copier un tableau dans une centaine de feuilles et créer des liens hypertextes a

Bonsoir à tous [EDIT]Bonsoir Dranreb[/EDIT]

Si j'étais moi, j'éviterai de publier mon email sur un forum
(sauf à vouloir par cet acte "insensé" rendre hommage au célèbre sketch du Flying Circus ;) )
[video=youtube;M_eYSuPKP3Y]http://youtu.be/M_eYSuPKP3Y[/video]
Pour réduire un fichier, c'est simple supprimer tout ce qu'il contient sauf les données brutes et le code VBA
et respecter la structure du classeur dans le fichier exemple (puis zipper ce fichier exemple)

Un fichier exemple ne devrait jamais dépasser 200ko.
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Re : Copier un tableau dans une centaine de feuilles et créer des liens hypertextes a

Bonsoir.
Pourquoi n'avez vous pas essayer de le pour faire pour un numéro avec Excel pendant l'enregistrement d'une nouvelle macro ? Vous auriez ainsi eu un modèle d'application de la méthode Excel permettant de remplacer en une fois dans toute la colonne une chaine par une autre ! À faire ensuite avec Format(...,"00") obligatoirement, et en bouclant sur tous les N° de soutiens >= à celui supprimé ou ajouté, en commençant par le dernier en cas d'ajout, sinon ils vont se retrouver à la même valeur maxi à force de finir par être tous changés successivement !
À +
 

Discussions similaires

Statistiques des forums

Discussions
312 220
Messages
2 086 381
Membres
103 198
dernier inscrit
CACCIATORE