probleme sur une macro - VB/VBA/VBS - Programmation
Marsh Posté le 03-12-2014 à 23:48:31
Pas besoin de macro, suffit d'utiliser la mise en forme conditionnelle.
Marsh Posté le 04-12-2014 à 14:06:14
je suis debutant j ais essaye la mise en forme conditionnelle mais avec la tolerence cela ne marche pas si vous avez le modele avec les explication pour bien comprendre comment sa fonctionne avec les tolerence
cordialement
Marsh Posté le 04-12-2014 à 19:04:45
Disons qu'en voulant faire un all-in-one avec juste la colonne "côte tolérance" sans ajouter de colonne qui décompose cela ça complique un peu les choses mais ça reste largement faisable :
1- sélectionner la plage de données devant être mise en forme (C4)
2- onglet "accueil" --> "mise en forme conditionnelle" --> "Nouvelle règle..." --> "Utiliser une formule pour déterminer pour quelles cellules le format sera appliqué"
3- dans la barre de saisie de formule taper :
Code :
|
4- choisir la mise en forme voulue pour le cas où la valeur rentre dans côte+/-tolérance
5- refaire de même pour le cas contraire
Que dit la formule?
Si C4 est supérieur ou égale à la côte moins la tolérance et inférieure ou égale à la côte plus la tolérance alors on renvoie VRAI sinon FAUX.
CHERCHE("+/-";C3) : renvoie la position du caractère à partir duquel est trouvé le motif "+/-"
NBCAR(C3) : renvoie le nombre de caractères total contenu dans C3
CNUM(STXT(C3;1;CHERCHE("+/-";C3)-1)) : récupère les caractères avant le "+/-" grâce aux positions (départ : premier caractère / fin : position du caractère où le motif "+/-" est trouvé moins 1) et les convertit en nombre c'est la côte.
CNUM(STXT(C3;CHERCHE("+/-";C3)+3;NBCAR(C3)-CHERCHE("+/-";C3)+3)) : récupère les caractères après le "+/-" grâce aux positions (départ : position du caractère où le motif "+/-" est trouvé plus 3 / fin : nombre total de caractères moins position du caractère où le motif "+/-" est trouvé plus 3) et le convertit en nombre c'est la tolérance.
EDIT : Le point comme séparateur de décimale peut poser problème en fonction des paramètres régionaux choisis, il faut alors passer par l'outil de conversion des données pour préciser que dans ta cellule c'est le point qui sert de séparateur de décimales.
Marsh Posté le 05-12-2014 à 18:24:04
bonjour
je vous remercie de votre aide
mais j ais trouve avec la macro et sa marche
merci beaucoup
j aurai un autre probleme a vous soumettre je vous l enverer plus tard
cordialement
Marsh Posté le 07-12-2014 à 16:56:05
Bonjour
voici mon gros problème
je voudrai enregistrer mon classeur
dans un dossier ou il y a des sous dossiers
avec chacun une date 2015 , 2016 , 2017 , 2018 , 2019 , 2020 ect
et dans ses dossiers années il y a d autres sous dossiers
Apellés , STD , 0 a 10000 , 10001 a 15000 , 15001 a 15500 , 15501 a 20000 , 20001 a 30000 , 30001 a 40000 , 40001 a 50000 , 50001 a 60000 , 60001 a 70000 , 70001 a 80000 , 80001 a 90000 , 90001 a 100000
donc dans chaque dossier dans la cellule C1 de la sheet menu il y a l année en cours qui s’affichera automatiquement donc je voudrai déjà suivant la date dans C1 qu’ il choisisse le bon dossier date
exemple si dans C1 il y a 2015 donc le dossier 2015 et sélectionne
2 eme parties ensuite dans B1 sheet menu se trouvera la référence du produit entrée de le début du formulaire
Exemple : IS 14054 MA
Et en A1 sheet menu la date du jour exemple : 07/01/2015
Je voudrai que mon dossier a l enregistrement prenne comme nom IS 14054 MA-07/01/2015 se qui se trouve dans B1 et A1
Et que comme la référence en B1 est 14054 qu il choisisse le sous dossier 10001 a 15000 et si il n existe pas de dossier déjà crée 14054 il le créer dossier 14054 ou si il existe déjà qui s enregistre dedans
Merci de votre aide
Marsh Posté le 08-12-2014 à 00:53:19
filesystemobject est ton ami pour ce genre de chose (dont tu aura les détails en ajoutant comme référence 'microsoft scripting runtime' si je ne me trompe pas)
Et tu ne saura pas créer de fichiers avec des "/" dans le nom
Marsh Posté le 08-12-2014 à 09:35:23
merci de votre aide je vais essayer d étudier filesystemobject
mais sa alaire d être complique je vous tiendrai au courant
merci cordialement
Marsh Posté le 17-12-2014 à 14:15:34
bonjour
voici le code que j ais fais pour essayer d enregistrer mon fichier excel
au moment de l enregistrement le fichier doit prendre la date du jour+
se qui se trouve dans la cellule B1 de la feuille active
exemple ; 17-12-2014_IS 15210 MA.xltm
Sub trouverlechemindufichier()
On Error Resume Next
Dim Chemin As String, Fichier As String
Dim Nom As String
Dim Filename As String
Nom = Day(Date) & "-" & Month(Date) & "-" & Year(Date) & "_" & ActiveWorkbook.Name
Chemin = ThisWorkbook.Path
Fichier = Chemin & "\" & Range("B1" ) & ".xltm"
ActiveWorkbook.SaveAs Filename:=Fichier
ActiveWorkbook.SaveCopyAs ActiveWorkbook.Path & "\" & Nom
rep = MsgBox("Votre base de données est sauvegardée sous le nom : " & Nom, vbYes + vbInformation, "Copie sauvegarde classeur" )
Filename = Fichier
ActiveWorkbook.SaveAs Filename:= _
"C:\Users\A03GEN-10097\fiches de controle\Filename.xltm", FileFormat:= _
xlOpenXMLTemplateMacroEnabled, Password:="", WriteResPassword:="", _
ReadOnlyRecommended:=False, CreateBackup:=False
End Sub
mais le probleme N°1 c est qu il y a 3 fichiers qui s enregistre
le premier avec la date 17-12-2014. Filname
le deuxieme Filename
le troixieme IS 15210 MA
je n arrive pas a trouver je demande votre aide
je voudrai un seule fichier nome la date du jour + le resultat de B1 et .xltm pour prendre en compte les macro
merci
Marsh Posté le 17-12-2014 à 22:07:44
Un truc dans le genre?
chemin = thisworkbook.path & "\" & format("dd-mm-yyyy",date) & "_" & range("B1" ) & ".xlsm"
thisworkbook.saveas filename:=chemin
Sinon, quand tu crée des fichiers avec une date, je te conseille de plutôt utiliser "yyyy-mm-dd". Comme ça, les fichiers se classeront plus facilement par date.
Marsh Posté le 03-12-2014 à 16:38:35
voici mon probleme dans une feuil excel dans la cellule ("C3" ) j ais une cote tolerence exemple 12.00+/-0.10
dans la cellule ("C4" ) j ai une cote resultat donc je voudreis que si la cote dans C4 est dans la tolerence 11.90 a 12.10 la cote reste en noir
sinon si elle est hors tolerence exmple 11.85 ou 12.15 le resultat en rouge
voici mon code
Private Sub Worksheet_Change(ByVal Target As Range) 'code pour mettre soit une croix rouge ou une croix noir selon si ont est dans la tolerence du textbox et la cote trouve en rouge si ont est hors tolerence et une croix noir si ont est dans la tolerence
Dim Valeur As Double
Dim Tolerance As Double
bonjour
voila sur une feuille excel dans la cellule ("C3" ) j aurais une cote tolerence exemple 12.00+/-0.10
et dans la cellule (C"4" ) un resultat trouve mais je voudrais que le resultat si il est dans la tolerence exemple de 11.90 a 12.10 le resultat reste en noir
sinon si il est hors tolerence exemple 11.85 ou 12.15 le resultat en rouge
voici mon code mais cela ne marche pas
If (Target.Row = 4) And (Target.Column = 3) Then
'Assigner Valeur et Tolerance
Valeur = Left(Range("C3" ).Value, InStr(Range("C3" ).Value, "+" ) - 1)
Tolerance = Right(Range("C3" ).Value, (Len(Range("C3" ).Value) - InStr(Range("C3" ).Value, "-" )))
'Compare le contenu de target (F41) avec la valeur et tolerance
If (Target.Value > (Valeur + Tolerance)) Or (Target.Value < (Valeur - Tolerance)) Then
'Si c'est à l'extérieur de l'intervale
Range("C4" ).Font.Color = 255
Else
'sinon c'est à l'intérieur de l'intervale
Range("C4" ).Font.Color = 0
End If
End If
End Sub
merci pour votre aide urgent