VBA couleur de variable

Arpette

XLDnaute Impliqué
Bonjour à toutes et à tous,
je bloque sur un problème de couleur de variable. Dans le code ci-dessous, j'enregistre un fichier et je créé un dossier si il n'existe pas. Le dossier créé
Code:
NomRep = NomClient & " " & Lieu
par ex: Arpette Autun, pour différencier si il y a un Arpette à Autun et Arpette à Paris:), donc 2 dossiers. Mon problème est que si il n'y a rien dans "Lieu" je mets "x", çà fonctionne mais ce que je souhaiterais c'est que le "x" soit à blanc et ne se voit pas. J'espère que je suis clair dans mon explication.
Merci de votre aide.
Code:
Sub Enregister()
    ' Enregistrer Sous
 Application.EnableEvents = False
    Dim Lechemin As String
    Dim LeFichier As String
    Dim NomRep As String
    
   '\***************************************************************************************************************************
    Application.DisplayAlerts = False
    Application.ScreenUpdating = False
    Lechemin = ActiveWorkbook.Path
            
    Nom = Cells(4, 3)
        
    NomClient = Cells(35, 11).Value
    
    NumParc = Cells(12, 8).Value
    
    Lieu = Cells(40, 11).Value
    
    If Lieu <> "" Then
        Lieu = "x"
        Else
    End If
    
    NomRep = NomClient & " " & Lieu
    
    Marque = Cells(9, 8).Value
    
    Numserie = Cells(11, 8).Value
              
    Jour = Format(Cells(45, 9), "dd-MM-YYYY")
    
    LeFichier = Nom & " _ " & NumParc & " _ " & NomClient & " _ " & Marque & " _ " & Numserie & " _ " & Jour
   '\***************************************************************************************************************************
    Lechemin = "C:\Documents and Settings\JFL CONTROLE\Bureau\Trames\CONTROLES CLIENTS\"
    
    If Dir(Lechemin & NomRep, 16) = "" Then MkDir Lechemin & NomRep
       
    ActiveWorkbook.SaveAs Lechemin & NomRep & "\" & LeFichier

    ActiveWorkbook.ActiveSheet.Select
    Cells.Select
    Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=False
   '\***************************************************************************************************************************
   Application.ScreenUpdating = True
   Application.EnableEvents = True
  ThisWorkbook.Close SaveChanges:=True
End Sub
 

Etienne2323

XLDnaute Impliqué
Re : VBA couleur de variable

Salut Arpette,
en fait, de mon côté, je n'ai aucune idée de ce que tu cherches à obtenir. Par contre, je me suis dit que je pourrais mettre un peu d'ordre dans la macro, pour le plaisir de la chose !

Deux petites remarques :
1) Pourquoi tu renseignes la variable "Lechemin" pour l'overwriter plus loin ?
2) Je crois que tu avais fait une erreur dans ta condition avec la variable "Lieu". Si tu conserves le "<>", alors tu dis la chose suivante : Si la variable lieu est différente de vide (donc qu'elle contient quelque chose), remplace la par x"

VB:
Option Explicit

Sub Enregister()
    ' Enregistrer Sous
    
    Dim Lechemin As String, LeFichier As String, NomRep As String, Nom As String, NomClient As String, Lieu As String
    Dim NumParc, Numserie
    Dim Marque As String
    Dim Jour As Integer
    
    With Application
        .EnableEvents = False
        .DisplayAlerts = False
        .ScreenUpdating = False
    End With
    
    'Lechemin = ActiveWorkbook.Path   'Pourquoi renseigner cette variable ici pour l'overwriter plus loin ?
    Nom = Cells(4, 3).Value
    NomClient = Cells(35, 11).Value
    NumParc = Cells(12, 8).Value
    Lieu = Cells(40, 11).Value
    If Lieu = "" Then Lieu = "x"
    NomRep = NomClient & " " & Lieu
    Marque = Cells(9, 8).Value
    Numserie = Cells(11, 8).Value
    Jour = Format(Cells(45, 9), "dd-MM-YYYY")
    
    
    LeFichier = Nom & " _ " & NumParc & " _ " & NomClient & " _ " & Marque & " _ " & Numserie & " _ " & Jour
    Lechemin = "C:\Documents and Settings\JFL CONTROLE\Bureau\Trames\CONTROLES CLIENTS\"
    
    If Dir(Lechemin & NomRep, 16) = "" Then MkDir Lechemin & NomRep
    ActiveWorkbook.SaveAs Lechemin & NomRep & "\" & LeFichier

    ActiveWorkbook.ActiveSheet.Select
    With Cells
        .Copy
        .PasteSpecial Paste:=xlPasteValues
    End With
    
    With Application
        .EnableEvents = True
        .DisplayAlerts = True
    End With
    
    ThisWorkbook.Close SaveChanges:=True
End Sub

Pour pouvoir t'aider davantage, j'aurai besoin de plus d'infos !

À te relire pour plus !

Cordialement,

Étienne
 
Dernière édition:

Arpette

XLDnaute Impliqué
Re : VBA couleur de variable

Salut Etienne, merci de ton aide, ce n'est pas compliqué de te joindre les deux fichiers, mais c'est le chemin, le demandeur a lesprit un peu tordu, mais bon :).
Je te joints un de ses fichiers, mais je doute que celà puisse t'aider.
Merci pour ton aide
@+
 

Pièces jointes

  • CHARIOT ELEVATEUR.xls
    195.5 KB · Affichages: 1 083

Gorfael

XLDnaute Barbatruc
Re : VBA couleur de variable

Salut Arpette et le forum
Juste lu ton premier poste. Je suppose que tu veux colorier en blanc le X de lieu dans
Code:
  If Lieu <> "" Then
        Lieu = "x"
        Else
    End If
Si c'est ça, tu n'as pas besoin du else, vu que tu ne l'utilises pas.
Code:
  Sub test()
Dim Lieu As Range
.........
Set Lieu = Cells(40, "K")
If Lieu <> "" Then
    Lieu = "x"
    Lieu.Font.ColorIndex = 2
End If
End Sub
Pourrait être une solution. Personnellement, je préfère :
Code:
Sub test()
Dim Lieu As Range
............
Set Lieu = Cells(40, "K")
If Lieu <> "" Then
    Lieu = "x"
    Lieu.NumberFormat = ";;;"
End If
End Sub
La différence t'apparaîtra en faisant une multisélection.

Petite remarque sur ton code : Si tu déclares Lieu en string, c'est une variable informatique qui reste au niveau du VBA et elle est invisible.
Si tu déclares Lieu en range, c'est la cellule avec ses propriétés et ses méthodes, donc par exemple, sa valeur ou la couleur de sa police.
A+
 

Arpette

XLDnaute Impliqué
Re : VBA couleur de variable

Salut Gorfael, merci pour ta réponse. J'ai essayé les deux solutions et j'ai un bug sur cette ligne
Code:
 ActiveWorkbook.SaveAs Lechemin & NomRep & "\" & LeFichier
.
Le module 4 (enregistré), prend la variable "NomRep" qui est composée de "NomClient" et "espace" et "Lieu". Quand j'enregistre, si "NomRep" qui est un dossier n'existe pas dans le chemin je le créé, tout fonctionne bien. Mon problème est que si lieu est vide dans la table client çà bug, donc je me suis dit je vais le remplacer par "x", çà fonctionne mais c'est pas très joli ex "Arpette x", c'est pour cette raison que je veux qu'il soit en blanc.
Merci pour ton aide
@+
 

Gorfael

XLDnaute Barbatruc
Re : VBA couleur de variable

Salut Arpette et le forum
Difficile de comprendre avec ton code !
Tu veux que le nom comporte une lettre blanche/transparente dans Windows ? Je ne crois pas que ce soit possible. Remplace ta lettre par autre chose que Windows reconnaît comme correct dans le nom d'un fichier/Dossier.
A+
 

Discussions similaires

Statistiques des forums

Discussions
312 348
Messages
2 087 508
Membres
103 568
dernier inscrit
NoS