Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Microsoft 365 deux macros succesives et un bouton

MICHAEL

XLDnaute Occasionnel
Bonjour,
je souhaiterai executer à l'aide d'un sel bouton et dans cet ordre les marcros suivantes: macro4 et macroAlpha.

macro 4
Sub Macro4()
'
' Macro4 Macro
'

ActiveSheet.Unprotect
Range("l6").Select
Range("d1").Select

End Sub

puis macro Alpha
Sub Alpha()
ActiveSheet.Unprotect
Application.ScreenUpdating = False
Range("k1").Select
ActiveWindow.ScrollColumn = 2
ActiveWindow.ScrollColumn = 3
ActiveWindow.ScrollColumn = 4
ActiveWindow.ScrollColumn = 5
ActiveWindow.ScrollColumn = 6
Application.CutCopyMode = False
ActiveSheet.Unprotect
Range("o6125").Select
Selection.Copy
ActiveWindow.ScrollColumn = 7
ActiveWindow.ScrollColumn = 6
ActiveWindow.ScrollColumn = 5
ActiveWindow.ScrollColumn = 4
ActiveWindow.ScrollColumn = 2
ActiveWindow.ScrollColumn = 1
ActiveWindow.SmallScroll Down:=-117
Range("D6125").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
ActiveWindow.SmallScroll Down:=-113
Range("D6:k125").Select
Application.CutCopyMode = False
ActiveWorkbook.Worksheets("Membres").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Membres").Sort.SortFields.Add2 Key:=Range( _
"D6125"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortNormal
With ActiveWorkbook.Worksheets("Membres").Sort
.SetRange Range("D6:k125")
.Header = xlGuess
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
Range("k1:k118").Select
Range("k118").Activate
ActiveWindow.ScrollColumn = 4
ActiveWindow.ScrollColumn = 3
ActiveWindow.ScrollColumn = 2
Range("d1,k1,f5,g5,k5,l5").Select

Selection.ClearContents
Range("A1").Select

ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:= _
False, AllowFormattingCells:=True
ActiveSheet.Protect
End Sub

Merci de votre aide
 

Phil69970

XLDnaute Barbatruc
Bonjour @MICHAEL

Ta 1ere macro ne sert absolument à rien !!!
Pourquoi :
Je traduis ta macro
Sub Macro4()
' Macro4 Macro
ActiveSheet.Unprotect
Range("l6").Select
Range("d1").Select
End Sub

'puis macro Alpha
Sub Alpha()
ActiveSheet.Unprotect
Application.ScreenUpdating = False
Range("k1").Select

La macro 4
ActiveSheet.Unprotect ==> je déprotège la feuille active
Range("l6").Select ==> je vais dans la cellule I6
Range("d1").Select ==> je vais dans la cellule D1 donc je ne suis plus dans la cellule I6

puis macro Alpha
ActiveSheet.Unprotect ==> je déprotège la feuille active mais c'est déjà fait
Application.ScreenUpdating = False ==> je bloque l'affichage
Range("k1").Select ==> je vais dans la cellule K1 donc je ne suis plus dans la cellule D6

Donc tu t'es promené dans la cellule I6 puis D6 et enfin K1 et tu as déprotégé 2 fois la même feuille !!!
Est ce utile toute cette promenade !!!

Et tout le reste de ta macro est du même genre plus de 60 lignes de promenade .... qui devrait tenir en moins de 10 lignes .....

Si tu mettais ton fichier avec les explications que tu veux faire .
 

Phil69970

XLDnaute Barbatruc
@MICHAEL

Sans fichier donc non testé je te propose cette macro

VB:
Sub test()
Application.ScreenUpdating = False
ActiveSheet.Unprotect
Range("D6:D125") = Range("O6:O125").Value
Range("D6:k125").Sort Key1:=Range("D6:D125"), Order1:=xlAscending, Header:=xlNo
Range("d1,k1,f5,g5,k5,l5").ClearContents
ActiveSheet.Protect
End Sub

Si cela ne fonctionne pas fourni ton fichier
Merci de ton retour
 
Dernière édition:

MICHAEL

XLDnaute Occasionnel
Désolé, je reviens.
la macro 4 sert a valider une ligne, car je ne sais pas enregistrer une cellule sans en saisir une autre.
pour le reste, sur que l'on pourrait nettoyer un peu celle ci.
je prends note de tes remarques et t'en remercie
 

MICHAEL

XLDnaute Occasionnel
je ne peux pas fournir ce fichier, celui ci comporte des données confidentiels
(noms adresses et num telephone)
 

Phil69970

XLDnaute Barbatruc
@MICHAEL

Je maintiens que ta macro 4 ne sert à rien
Ton curseur va successivement dans la cellule I6 puis dans la cellule D6 il n'y a aucune validation en se promenant de cellule en cellule.

Fourni ton fichier avec les explications pour ce que tu veux faire

Rappel les "select" et les "activate" sont à proscrire dans 99% des cas

je ne peux pas fournir ce fichier, celui ci comporte des données confidentiels
(noms adresses et num telephone)

Rien ne t’empêche de fournir un fichier représentatif

C'est quoi représentatif ?

- représentatif, même organisation des lignes et des colonnes, mêmes libellés, même nom des TS, mêmes noms de feuilles...
- anonymisé, pas de données personnelles réelles tels nom, n° sécu, adresse ... remplacé par Nom1, Nom2 etc ....
- simplifié, une quinzaine de lignes reproduisant l'ensemble des différents cas envisageables (Avec le résultat souhaité éventuellement)

Si cela fonctionne sur le fichier fourni et pas sur le vrai fichier c'est qu'il n'est en rien représentatif ou que tu n'as pas su transposer ce qui devrait être un simple copier coller du code.
 

Phil69970

XLDnaute Barbatruc
Certaines de tes macros ne sont pas "ergonomique' voir exotique je voudrais essayer de tout remettre dans l'ordre.

Dit autrement :
Le postier pourrait faire le tour du monde pour livrer ton courrier (tu aurais bien ton courrier) mais il irait plus vite si il allait directement à ton adresse pour mettre le courrier dans ta boite .
 
Dernière édition:

Phil69970

XLDnaute Barbatruc
Tu veux le même principe que ce fichier ?


Et pour les autres macros elle font quoi ?
 

Discussions similaires

Réponses
3
Affichages
798
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…