Se connecter avec
S'enregistrer | Connectez-vous

Besoin aide sur Macro Excel....

Dernière réponse : dans Programmation
Lassé par la pub ? Créez un compte
Expert Programmation

Oui, c'est possible ....

Encore une fois, pour réaliser une macro Excel, il y a une méthode infaillible :

1°) Décomposer en étapes simples
2°) Enregister chacune de ces étapes en ayant pris le soin de démarrer l'enregistreur de macro.
3°) Lire le code généré, le comprendre.

La troisième étape est la plus délicate.
Je propose :
Réfléchir
Lire d'aide
Réfléchir
Demander de l'aide sur PPC avec un exemple précis
Réfléchir

Comme tu peux le constater en lisant d'autres topiks sur le sujet Excel (ou autres), j'ai (ou d'autres) toujours eu plaisir à aider les PPCistes en difficulté pourvu qu'ils aient avancé dans la "méthode infaillible".

Je t'invite donc à découvrir par toi même comment :
Choisir une cellule
Appliquer une logique
Supprimer un contenu

Poste-nous vite tes tentatives, avec le bout de code associé, tu auras bientôt une macro complète et fonctionnelle.

Voila mon probleme,

J'ai reussie jusqu'ici a faire ma macro, ca donne ceci:

Sub lundi()
If Range("w41") = 1 Then
If Range("w43") = 2 Then
Range("e6,e8:e11,e13:e14,e16,e18,e19,e21,e23,e25,e27:e28").Select
Selection.ClearContents
Range("A1").Select
End If
End If
End Sub

Sub mardi()
If Range("w41") = 1 Then
If Range("w43") = 2 Then
Range("i6,i8:i11,i13:i14,i16,i18,i19,i21,i23,i25,i27:i28").Select
Selection.ClearContents
Range("A1").Select
End If
End If
End Sub

Sub mercredi()
If Range("w41") = 1 Then
If Range("w43") = 2 Then
Range("m6,m8:m11,m13:m14,m16,m18,m19,m21,m23,m25,m27:m28").Select
Selection.ClearContents
Range("A1").Select
End If
End If
End Sub

Sub jeudi()
If Range("w41") = 1 Then
If Range("w43") = 2 Then
Range("q6,q8:q11,q13:q14,q16,q18,q19,q21,q23,q25,q27:q28").Select
Selection.ClearContents
Range("A1").Select
End If
End If
End Sub

Sub vendredi()
If Range("w41") = 1 Then
If Range("w43") = 2 Then
Range("u6:u16,u18,u20:u21,u23:u30,u32:u35,u37:u39,u41:u47").Select
Selection.ClearContents
Range("A1").Select
End If
End If
End Sub

Sub samedi()
If Range("w41") = 1 Then
If Range("w43") = 2 Then
Range("y6:y16,y18,y20:y21,y23:y30,y32:y35,y37:y39,y41:y47").Select
Selection.ClearContents
Range("A1").Select
End If
End If
End Sub

Sub dimanche()
If Range("w41") = 1 Then
If Range("w43") = 2 Then
Range("ac6:ac16,ac18,ac20:ac21,ac23:ac30,ac32:ac35,ac37:ac39,ac41:ac47").Select
Selection.ClearContents
Range("A1").Select
End If
End If
End Sub

Sub absence()
If Range("w41") = 1 Then
If Range("w43") = 2 Then
Range("ag6:ag16,ag18,ag20:ag21,ag23:ag30,ag32:ag35,ag37:ag39,ag41:ag47").Select
Selection.ClearContents
Range("A1").Select
End If
End If
End Sub

Sub a()
Call lundi
Call mardi
Call mercredi
Call jeudi
Call vendredi
Call samedi
Call dimanche
Call absence
End Sub

Mon probleme est le suivant: j'ai 8 feuilles avec le meme fonction ci haut. je voudrais faire une fonction de CALL qui rappelle le dernier SUB de chaque feuille (sub a(), sub b() , ect jusqu'a sub h()) pour que c'elle-ci s'execute a l'ouverture de mon dossier mais la fonction CALL semble vouloir prendre qu'une seule donnée. Aussitot que je lui ajoute une deuxieme donnée, ca bogue. Voici ou j'en suis...

Private Sub Workbook_Open()
Call Feuil22.a
Call Feuil23.b
Call Feuil24.c
Call Feuil25.d
Call Feuil28.e
Call Feuil29.f
Call Feuil31.g
Call Feuil33.h
End Sub

Je crois que c'est complet...... :sarcastic: 


Merci a tous
Expert Programmation

Mais pourquoi diable utilises-tu CALL ?
As-tu lu l'aide sur CALL ? Alors fais-le et vire moi ces CALL en connaissance de cause.

Où est ton problème ? C'est pas du code très propre mais ça devrait fonctionner.

Tu parles d'avoir ce code dans chacune de tes feuilles ! Euh, tu peux tout mettre dans le code du Workbook. Et ne pas avoir à dupliquer n fois ton code.
Expert Programmation

En espérant que ça t'aide :
  1. Private Sub EffacerUnJour (Feuille as Worksheet, Jour as Integer)
  2. Dim PlageASuppr As Variant
  3. PlageASuppr = Array("e6,e8:e11,e13:e14,e16,e18,e19,e21,e23,e25,e27:e28", _
  4. "i6,i8:i11,i13:i14,i16,i18,i19,i21,i23,i25,i27:i28", _
  5. "m6,m8:m11,m13:m14,m16,m18,m19,m21,m23,m25,m27:m28", _
  6. "q6,q8:q11,q13:q14,q16,q18,q19,q21,q23,q25,q27:q28", _
  7. "u6:u16,u18,u20:u21,u23:u30,u32:u35,u37:u39,u41:u47", _
  8. "y6:y16,y18,y20:y21,y23:y30,y32:y35,y37:y39,y41:y47", _
  9. "ac6:ac16,ac18,ac20:ac21,ac23:ac30,ac32:ac35,ac37:ac39,ac41:ac47", _
  10. "ag6:ag16,ag18,ag20:ag21,ag23:ag30,ag32:ag35,ag37:ag39,ag41:ag47" )
  11. If Feuille.Range("w41") = 1 And Feuille.Range("w43") = 2 Then
  12. Feuille.Range(PlageASuppr(Jour)).ClearContents
  13. End If
  14. End Sub
  15.  
  16. Private Sub EffacerTousLesJours (Feuille as Worksheet)
  17. Dim i As Integer
  18. For i = 0 to 7
  19. EffacerUnJour Feuille, i
  20. Next
  21. End Sub
  22.  
  23. Private Sub Workbook_Open()
  24. EffacerTousLesJours Feuil22
  25. EffacerTousLesJours Feuil23
  26. EffacerTousLesJours Feuil24
  27. EffacerTousLesJours Feuil25
  28. EffacerTousLesJours Feuil28
  29. EffacerTousLesJours Feuil29
  30. EffacerTousLesJours Feuil31
  31. EffacerTousLesJours Feuil33
  32. End Sub

Voici la clé de mon probleme: :bounce: 


Private Sub workbook_open()
If Worksheets("1 Nuit1").Range("w41") = 1 Then
If Worksheets("1 Nuit1").Range("w43") = 2 Then
Sheets(Array("1 Nuit1", "1 Jour1")).Select
Range("e6:ag28").Select
Selection.ClearContents
Range("A1").Select
Sheets(Array("1 Nuit1", "1 Jour1")).Select
Range("e6:ag47").Select
Selection.ClearContents
Range("A1").Select
End If
End If
If Worksheets("1 Nuit2").Range("w41") = 1 Then
If Worksheets("1 Nuit2").Range("w43") = 2 Then
Sheets(Array("1 Nuit2", "1 Jour2")).Select
Range("e6:ag28").Select
Selection.ClearContents
Range("A1").Select
Sheets(Array("1 Nuit2", "1 Jour2")).Select
Range("e6:ag47").Select
Selection.ClearContents
Range("A1").Select
End If
End If
End Sub

Merci a tous

bobmcgee
Lassé par la pub ? Créez un compte