Besoin aide sur Macro Excel....

  • Auteur de la discussion bobmcgee
  • Date de début

bobmcgee

Nouveau membre
Bonjour a tous,

Je suis tres novice dans la réalisation de macro dans excel. Je recherche un moyen de faire effacer le contenue des certaines cellules choisies quand une logique est appliqué. Ex: si c4 est plus petit que c5 alors efface a1, d4, e5, f2. Est-ce possible.


Merci a tous pour votre aide !!!

bobmcgee
 

zeb

Modérateur
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.
 

bobmcgee

Nouveau membre
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
 

zeb

Modérateur
Balise
Code:
 stp !!!!!!!!!!!!!!

Clique sur [url=www.presence-pc.com/forum/ppc/Programmation/editer-2927-19022-1.htm#formulaire][img]http://img.presence-pc.com/forum/themes_static/images_forum/1/edit.gif[/img][/url], et utilise le bouton [img]http://img.presence-pc.com/forum/icones/message/c.gif[/img] pour mettre ton code en forme.
 

zeb

Modérateur
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.
 

zeb

Modérateur
En espérant que ça t'aide :
Code:
Private Sub EffacerUnJour (Feuille as Worksheet, Jour as Integer)
	Dim PlageASuppr As Variant 
	PlageASuppr = Array("e6,e8:e11,e13:e14,e16,e18,e19,e21,e23,e25,e27:e28", _
                            "i6,i8:i11,i13:i14,i16,i18,i19,i21,i23,i25,i27:i28", _
                            "m6,m8:m11,m13:m14,m16,m18,m19,m21,m23,m25,m27:m28", _
                            "q6,q8:q11,q13:q14,q16,q18,q19,q21,q23,q25,q27:q28", _
                            "u6:u16,u18,u20:u21,u23:u30,u32:u35,u37:u39,u41:u47", _
                            "y6:y16,y18,y20:y21,y23:y30,y32:y35,y37:y39,y41:y47", _
                            "ac6:ac16,ac18,ac20:ac21,ac23:ac30,ac32:ac35,ac37:ac39,ac41:ac47", _
                            "ag6:ag16,ag18,ag20:ag21,ag23:ag30,ag32:ag35,ag37:ag39,ag41:ag47" )
	If Feuille.Range("w41") = 1 And Feuille.Range("w43") = 2 Then 
		Feuille.Range(PlageASuppr(Jour)).ClearContents
	End If
End Sub

Private Sub EffacerTousLesJours (Feuille as Worksheet)
	Dim i As Integer
	For i = 0 to 7
		EffacerUnJour Feuille, i
	Next
End Sub

Private Sub Workbook_Open()
	EffacerTousLesJours Feuil22
	EffacerTousLesJours Feuil23
	EffacerTousLesJours Feuil24
	EffacerTousLesJours Feuil25
	EffacerTousLesJours Feuil28
	EffacerTousLesJours Feuil29
	EffacerTousLesJours Feuil31
	EffacerTousLesJours Feuil33
End Sub
 

bobmcgee

Nouveau membre
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
 
Vous devez vous inscrire ou vous connecter pour répondre ici.
Derniers messages publiés
Statistiques globales
Discussions
730 098
Messages
6 717 058
Membres
1 586 285
Dernier membre
LeFront
Partager cette page
Haut