IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Utilisation code unichar dans un code VBA


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    470
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2009
    Messages : 470
    Par défaut Utilisation code unichar dans un code VBA
    Bonjour la Communauté,

    J'ai écrit une petite macro vba mais depuis mon tableau excel affiche une lenteur incroyable. J'ai l'impression que j'ai une partie du programme qui tourne inutilement mais je ne sais où.
    Quelqu'un pourrait-il me dire ce qui ralentit mon tableur?

    Le code fonctionne.

    Merci d'avance

    Habiler

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    Sub colonneOO()
        Dim ws As Worksheet
        Dim wb1 As Workbook
        Dim ws1 As Worksheet
        Dim lastRow As Long
        Dim i As Long
        Dim directoryPath As String
        Dim unicodeChar As String
     
       ' unicodeChar = "=Unichar(9989)"
    '
        ' Spécifiez la feuille de calcul que vous souhaitez utiliser
     
        Set ws = ThisWorkbook.Sheets("2023")
     
        lastRow = ws.Cells(ws.Rows.Count, "B").End(xlUp).Row
     
        directoryPath = "c:\MesFichiers\"
     
        ' Parcourir les cellules de la colonne C à partir de C2
     
         Range("O:P").ClearContents
     
            For i = 2 To lastRow
            Dim cellValue As Long
            Dim AN As String
            Dim Avis As String
            Dim Avis2023 As String
            cellValue = ws.Cells(i, "M").Value
     
     
            AN = Right(ws.Cells(i, "n"), 4) & " " & Mid(ws.Cells(i, "n"), 4, 2) & " " & Left(ws.Cells(i, "n"), 2)
            Avis = "Avis n° " & cellValue & " - " & AN & ".pdf"
            'Avis2023 = Len(Dir(directoryPath & Avis))
            Avis2023 = Dir(directoryPath & Avis)
            IfAvisExists = Not IsFileExist(Avis2023)
     
                    If ws.Cells(i, "k").Value > #1/1/1900# Then   ' If 2
     
                            If ws.Cells(i, "L").Value > 0 Then        ' If 3
     
                                       If ws.Cells(i, "M").Value > 0 Then
                                                If Not IfAvisExists Then 'If 1
                                                         ws.Cells(i, "P") = "Publication stoppée"
                                                         ws.Cells(i, "P").Font.Color = RGB(255, 0, 0)
                                                         ws.Cells(i, "P").Font.Bold = True
     
     
                                                Else
                                                         ws.Cells(i, "P") = "Publié"
                                                         ws.Cells(i, "P").Font.Color = RGB(85, 107, 47)
                                                         ws.Cells(i, "P").Font.Bold = True
                                                End If
     
                                       Else
     
                                            ws.Cells(i, "P") = "Signé mais non Publié"
                                            ws.Cells(i, "P").Font.Color = RGB(255, 0, 0)
                                            ws.Cells(i, "P").Font.Bold = True
                                        End If
                            Else
                            ws.Cells(i, "P") = "A la signature du CEO"
                            ws.Cells(i, "P").Font.Color = RGB(70, 130, 180)
                             ws.Cells(i, "P").Font.Bold = True
                            End If
                            Else
                            ws.Cells(i, "P") = "En préparation"
                            ws.Cells(i, "P").Font.Color = RGB(0, 0, 255)
                            ws.Cells(i, "P").Font.Bold = True
                            End If
                   Next i
    End Sub
     
     
    Function IsFileExist(FullName As String) As Boolean
      ' Vérifie l'existence d'un fichier
      IsFileExist = Dir(FullName) <> ""
    End Function
     
    'Private Sub Worksheet_Change(ByVal Target As Range)
    '    If Not Intersect(Target, Range("M:M")) Is Nothing Then colonneOO
    'End Sub

  2. #2
    Membre émérite
    Homme Profil pro
    Responsable des études(en disponibilité)
    Inscrit en
    Juin 2007
    Messages
    367
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable des études(en disponibilité)
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 367
    Par défaut
    Bonjour.

    As tu des macros événementielles sur ta feuille.

    si oui.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.EnableEvents = False
    en début de procédure

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.EnableEvents = True
    en fin de procédure.

    dans ta boucle:

    il me semble que tu pourrais déclarer les vaviables avant le for
    pour ne pas les redéclarer à chaque ligne.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    470
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2009
    Messages : 470
    Par défaut Utilisation code unichar dans un code VBA
    Bonjour la communauté,

    Quelqu'un pourrait-il m'expliquer pourquoi lorsque j'insère le code suivant entre la la ligne 50 et 51 ou 44 et 45 (par ex) ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ws.Cells(i, "P") = "=Unichar(9989)"
    Toutes les cellules (colonne P) du tableau se remplissent avec ce code Unichar et non les cellules réservèes à cette partie de code.

    Un grand merci d'avance

    Habiler

Discussions similaires

  1. Tracer un tableau via une macro
    Par Drey242 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 05/01/2011, 00h10
  2. Modifier un tableau suite à une macro
    Par jetset30 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 24/11/2009, 14h04
  3. [XL-2003] mise en forme de tableau via une macro
    Par sebastienmarche dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 08/10/2009, 10h39
  4. Création d'un tableau dans une macro
    Par Flynt dans le forum Macro
    Réponses: 3
    Dernier message: 03/06/2008, 09h37
  5. Réponses: 1
    Dernier message: 07/02/2008, 00h10

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo