Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2503 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  probleme sur une macro

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

probleme sur une macro

n°2244769
atlantis89​0
Posté le 03-12-2014 à 16:38:35  profilanswer
 

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

mood
Publicité
Posté le 03-12-2014 à 16:38:35  profilanswer
 

n°2244808
MaybeEijOr​Not
but someone at least
Posté le 03-12-2014 à 23:48:31  profilanswer
 

Pas besoin de macro, suffit d'utiliser la mise en forme conditionnelle. :??:

n°2244903
atlantis89​0
Posté le 04-12-2014 à 14:06:14  profilanswer
 

:) 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

n°2244963
MaybeEijOr​Not
but someone at least
Posté le 04-12-2014 à 19:04:45  profilanswer
 

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 :
  1. =SI(ET(C4>=(CNUM(STXT(C3;1;CHERCHE("+/-";C3)-1))-CNUM(STXT(C3;CHERCHE("+/-";C3)+3;NBCAR(C3)-CHERCHE("+/-";C3)+3)));C4<=(CNUM(STXT(C3;1;CHERCHE("+/-";C3)-1))+CNUM(STXT(C3;CHERCHE("+/-";C3)+3;NBCAR(C3)*CHERCHE("+/-";C3)+3))));VRAI;FAUX)


 
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.


Message édité par MaybeEijOrNot le 04-12-2014 à 19:17:02
n°2245102
atlantis89​0
Posté le 05-12-2014 à 18:24:04  profilanswer
 

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 ;)

n°2245225
atlantis89​0
Posté le 07-12-2014 à 16:56:05  profilanswer
 

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
:)

n°2245260
Arl Guhr
Posté le 08-12-2014 à 00:53:19  profilanswer
 

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 ;)


Message édité par Arl Guhr le 08-12-2014 à 00:58:30

---------------
il s'appel le ronge me doute
n°2245272
atlantis89​0
Posté le 08-12-2014 à 09:35:23  profilanswer
 

merci de votre aide je vais essayer d étudier filesystemobject
mais sa alaire d être  complique je vous tiendrai au courant  
merci cordialement :)

n°2246340
atlantis89​0
Posté le 17-12-2014 à 14:15:34  profilanswer
 

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() :bounce:  
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

n°2246406
Arl Guhr
Posté le 17-12-2014 à 22:07:44  profilanswer
 

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.


---------------
il s'appel le ronge me doute

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  probleme sur une macro

 

Sujets relatifs
Problème Macro excel 2007probleme sur replace dans une macro
Probleme macro excellProbleme sur Macro Excel 2010
Probléme syntaxe macro excel 4Probleme compatibilité macro Excel 2003 -vers Excel 2010
macro VBA sous excell 2000 probleme avec excell 2007Macro Excel - Problème avec ActiveCell.Font.ColorIndex
problème macro import fichier text excelproblème macro VBA
Plus de sujets relatifs à : probleme sur une macro


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR