Partage
  • Partager sur Facebook
  • Partager sur Twitter

fichier Excel fou / VBA

    13 mai 2015 à 19:23:04

    Bonjour à tous

    Je programme en VBA sous Excel depuis pas mal de temps et je n'ai jamais eu ce problème là

    Je crée un nouveau fichier et commence à développer un projet, il s'agit essentiellement de mettre en forme les cellules en fonction de ce qui s'y trouve écrit

    Par exemple, si dans la cellule, il y a les lettres "bgm", alors la macro "bordurise" les arêtes basse et droite de la cellule, et remplace son contenu par le texte "1000"

    La macro agit ainsi sur une plage 20*20, ensuite elle enregistre les valeurs de cette plage dans un fichier .txt, donc essentiellement des suites de 0 et de 1

    Tout fonctionne très bien, sauf que quand la macro a fini, il se passe des choses étranges sur la feuille active. Sans absolument rien toucher au clavier, je vois des cellules se sélectionner toutes seules, des menus se dérouler puis se fermer, Excel se miniaturiser et se maximiser, etc

    J'ai naturellement pensé à un virus, mais il s'avère qu'après un dépistage par Avast et Spybot - Search & Destroy, mon PC est clean

    De plus, je possède d'autres fichiers Excel comportant des macros, et ils ne sont pas affectés.

    J'ai aussi supprimer le fichier en question et l'ai recréé depuis le début (ça m'a d'ailleurs bien fait c#!% !!), mais dès que je fais fonctionner la macro, les même "phénomènes" se produisent.

    Quand j'ouvre ce fichier "hanté" maintenant lol, sans faire fonctionner la macro ni rien toucher, j'observe le même comportement au bout de quelques secondes

    Quelqu'un aurait-il une idée ou un début d'explication ? Pourrait-il s'agir d'un virus que même mes 2 logiciels cités précédemment ne peuvent détectés ?

    • Partager sur Facebook
    • Partager sur Twitter
      19 mai 2015 à 15:59:47

      Salut,

      il faudrait que tu nous montres ton code ou que tu mettes ton fichier en PJ pour que l'on puisse regarder. Mais j'avoue ne jamais avoir vu ça ^^

      • Partager sur Facebook
      • Partager sur Twitter
      "J'entends et j'oublie. Je vois et je me souviens. Je fais et je comprends."
        24 mai 2015 à 15:13:59

        Private Sub completion_Click()
        
        Dim ligneMin As Integer, ligneMax As Integer, colMin As Integer, colMax As Integer
        Dim n As Integer, m As Integer
        
        ligneMin = Selection.Row
        ligneMax = ligneMin + 19
        
        colMin = Selection.Column
        colMax = colMin + 19
        
        For n = ligneMin To ligneMax
            For m = colMin To colMax
                If InStr(1, Cells(n, m), "d") Then
                    With Cells(n, m).Borders(xlEdgeRight)
                        .LineStyle = xlContinuous
                        .Weight = xlThick
                        .ColorIndex = 6
                    End With
                End If
                If InStr(1, Cells(n, m), "g") Then
                    With Cells(n, m).Borders(xlEdgeLeft)
                        .LineStyle = xlContinuous
                        .Weight = xlThick
                        .ColorIndex = 6
                    End With
                End If
                If InStr(1, Cells(n, m), "h") Then
                    With Cells(n, m).Borders(xlEdgeTop)
                        .LineStyle = xlContinuous
                        .Weight = xlThick
                        .ColorIndex = 6
                    End With
                End If
                If InStr(1, Cells(n, m), "b") Then
                    With Cells(n, m).Borders(xlEdgeBottom)
                        .LineStyle = xlContinuous
                        .Weight = xlThick
                        .ColorIndex = 6
                    End With
                End If
                If InStr(1, Cells(n, m), "m") Then
                    With Cells(n, m).Interior
                        .ColorIndex = 53
                        .Pattern = xlGray75
                        .PatternColorIndex = xlAutomatic
                    End With
                    Cells(n, m).Value = "1000"
                    Cells(n, m).Font.ColorIndex = 53
                End If
                If InStr(1, Cells(n, m), "v") Then
                    Cells(n, m).Value = "0001"
                End If
            Next m
        Next n
        
        
        
        
        End Sub


        Voici la partie du code qui complète les cellules avec les "0"et "1" et les bordures

        Rien que cette partie suffit à provoquer les bizzareries

        Des suggestions ?

        • Partager sur Facebook
        • Partager sur Twitter
          27 mai 2015 à 13:15:49

          Re,

          Alors je ne vois pas exactement d'où peut venir l'erreur mais déjà un conseil, il faut éviter d'utiliser Selection. ou les trucs du style (activesheet, select...). Afin de vérifier que l'erreur ne vienne pas de là vérifie la valeur de tes variables pour les colonnes et les lignes.

          Edit : il faudrait également que tu lances ton code pas à pas pour voir à quel moment la macro effectue ces événements étranges :)

          Edit 2 : Par ailleurs il me semble que Instr ne restitue pas un booléen mais un entier donc tu devrais plutôt tester que le résultat est différent de 0

          -
          Edité par Yru4ma 27 mai 2015 à 13:19:57

          • Partager sur Facebook
          • Partager sur Twitter
          "J'entends et j'oublie. Je vois et je me souviens. Je fais et je comprends."

          fichier Excel fou / VBA

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
          • Editeur
          • Markdown