code dans workbook ou dans un module pour 45 feuilles d'un classeur excel 2007

nasser

XLDnaute Nouveau
Bonjour
Aidez-moi à appliquer aux 45 premières feuilles d’un classeur excel 2007, le code suivant qui marche bien pour une feuille.
Merci


Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'Date du jour'
Range("I1").Value = "Date :"
Range("J1").Value = Format(Date, "dddd dd mmmm yyyy")


Range("A1") = "SITUATION D'UNE LIGNE BUDGETAIRE "
Range("A3") = "Ministère :"
Range("a4") = "Imputation :"
Range("a5") = "Crédit annuel :"
Range("A6") = "Taux :"
Range("a7") = "Crédit autorisé :"
Range("K12") = "Cumul Avances :"
Range("M12") = "Cumul Reliquats :"
Range("D9") = "Nbre O M :"
Range("A8") = "Taux necessaire :"
Range("i9") = "GRANDE SITUATION"
Range("k9") = "PETITE SITUATION"
Range("m9") = "RELIQUAT "
Range("i10") = "Cons. Ant. "
Range("i11") = "Disponible "
Range("k10") = "Dép.ant./Solde "
Range("k11") = "Disponible "
Range("A13") = "Date "
Range("b13") = "Bénéficiaire "
Range("c13") = "Destination "
Range("d13") = "Groupe "
Range("e13") = "N° O M "
Range("i13") = "Durée "
Range("j13") = "Montant "
Range("k13") = "Durée "
Range("l13") = "Montant "
Range("m13") = "Durée "
Range("n13") = "Montant "
Range("o13") = "Observation"
Range("f13") = "Décision "
Range("g13") = "Zone "
Range("h13") = "Taux "
Range("A13:R13").Font.Bold = True
Range("I9:M9").Font.Bold = True


Range("L12").Formula = "=sum(L14:L100)"
Range("N12").Formula = "=sum(N14:N100)"
Range("J10").Formula = "=sum(j14:j100)"
Range("J11").Formula = "=c7-j10"
'dépenses antérieures'
Range("L10").Formula = "=sum(L14:L100)+sum(N14:N100)"
'Petite situation disponible'
Range("L11").Formula = "=c7-(sum(L12+N12))"

'cumul avance'
Range("L12").Formula = "=sum(L14:L100)"
'cumul reliquat'
Range("N12").Formula = "=sum(N14:N100)"
'Nombre d'O M'
Range("E9").FormulaLocal = "=NBVAL(E14:E100)"
'Ministère en MAJUSCULES'
Range("B3") = UCase(Range("B3"))
'Plage des Bénéficiaires et Destination en MAJUSCULES'
Dim cell As Range
Dim Maplage As Range
Set Maplage = Range("B14:B99,C14:C99")
For Each cell In Maplage
cell.Value = UCase(cell.Value)
Next cell



'formule C=A*B
Range("J14:J99").FormulaR1C1 = "=RC[-2]*RC[-1]"
Range("L14:L99").FormulaR1C1 = "=RC[-1]*RC[-4]"
Range("N14:N99").FormulaR1C1 = "=RC[-1]*RC[-6]"

'credit autorisé'
Range("C7") = Range("C5") * Range("C6")
'taux necessaire'
Range("b8") = "Consommat° antérieure/Crédit autorisé"

If Range("B" & Target.Row).Value <> 0 Then
Lig = Target.Row

' Inscrit la date
Range("A" & Lig).Value = Now()
' Réactive les évènements dans le classeur
Application.EnableEvents = True


End If



End Sub
 

nasser

XLDnaute Nouveau
Re : code dans workbook ou dans un module pour 45 feuilles d'un classeur excel 2007

Bjr,
après avoir appliquer, veuillez jeter un coup d'oeil. ensute aidez moi car l'exécution est lente or j'en ai besoin pour 45 feuilles du même classeur.
ci joint mon travail.
A bientot.
 

Pièces jointes

  • Copie de ok cette nuit.xlsm
    53.6 KB · Affichages: 38

Staple1600

XLDnaute Barbatruc
Re : code dans workbook ou dans un module pour 45 feuilles d'un classeur excel 2007

Bonjour nasser


Ça fait plaisir de voir que tu as pris le temps d'essayer la proposition de mon précédent message.
Tu as pu voir ainsi que le temps d’exécution est très rapide (même avec 45 feuilles)
 

nasser

XLDnaute Nouveau
Re : code dans workbook ou dans un module pour 45 feuilles d'un classeur excel 2007

Bjr, en fait je souhaite que tu me reprenne en application de ton exemple . je nè pas vraiment réussi. la première feuille peut servir de modèle pour les 45 feuilles. a toute à l heure. je serai content de voir ton travail sur la base de mon fichier en tenant compte de mes codes dans le module et dans la feuille.
Merci.



QUOTE=Staple1600;1180819]Bonjour nasser


Ça fait plaisir de voir que tu as pris le temps d'essayer la proposition de mon précédent message.
Tu as pu voir ainsi que le temps d’exécution est très rapide (même avec 45 feuilles)[/QUOTE]
 

Staple1600

XLDnaute Barbatruc
Re : code dans workbook ou dans un module pour 45 feuilles d'un classeur excel 2007

Bonjour

Tu as testé ou pas ma macro exemple?
Je pense que le fonctionnement de la macro a est trés facile à comprendre
et comme je te le disais
(c'est cette macro qu'il te faudra ensuite adapter à ta problématique)

Il te suffit de créer une feuille MODELE, de déterminer les adresses des plages de cellules à recopier
et d’utiliser plusieurs fois cette ligne (en changeant à chaque les plages de cellules à recopier)
Worksheets(arrWSN).FillAcrossSheets Worksheets("MODELE").Range("A1:B4") ' ici adapter l'adresse de la plage de cellules

Je te laisse essayer de le faire toi-même.

EDITION: En fait, une seule ligne suffit (je viens de tester sur ton fichier exemple)
Worksheets(arrWSN).FillAcrossSheets Worksheets(1).Range("A1:O400") ' ici adapter l'adresse de la plage de cellules
 
Dernière édition:

Statistiques des forums

Discussions
314 629
Messages
2 111 349
Membres
111 110
dernier inscrit
chergui