Macro qui marche une fois sur dix.

azerty123

XLDnaute Nouveau
Bonjour,

Voici mon problème. J'ai fait une maccro de tri qui analyse des données, et est censé me donné des équivalences condensés. Ma macro marche à merveille. Le problème, c'est qu'elle ne marche qu'une fois à l'ouverture du .xls et encore. De temps en temps elle marche, souvent elle ne marche pas.

Il n'y a jamais de bug, juste qu'elle ne fait pas ce qu'elle devrait, et les informations que je devrais retrouvé en début de pages, sont effacées ou inexistante, éparpillé partout. C'est vraiment enervant, car quand elle marche, elle fait exactement ce que je souhaite !!

Je souhaiterais donc que les plus experts d'entre vous scrutent mon code afin de déceler les incohérences, ou les erreurs qui font que mon code n'est pas correctement traité, ou pas entièrement traité par excel. (je pensais aux variables qui n'étaient pas reset entre chaque utilisation, ou un truc du genre, mais les "end" sont bien présents).



Code:
Sub Bouton100_QuandClic()

'--------------------------------------------------------------------
    Dim i As Long
  
    Application.ScreenUpdating = False
  
    For i = 1 To Cells(Rows.Count, 1).End(xlUp).Row
    If Cells(i, 1) Like "*BLABLA*" Then Cells(i, 2) = Cells(i + 2, 1)
    Next i
  
    For i = 1 To Cells(Rows.Count, 1).End(xlUp).Row
    If Not Cells(i, 1) Like "*BLABLA*" Then Cells(i, 1) = ""
    Next i
  
    Selection.SpecialCells(xlCellTypeBlanks).Delete Shift:=xlUp
 
    For i = 1 To Cells(Rows.Count, 1).End(xlUp).Row
    If Not Cells(i, 2) Like "*&amp*" Then Cells(i, 2) = ""
    Next i
  
    For i = 1 To Cells(Rows.Count, 1).End(xlUp).Row
    If Not Cells(i, 2) Like "*target*" Then Cells(i, 1) = ""
    Next i
    
    Selection.SpecialCells(xlCellTypeBlanks).Delete Shift:=xlUp
  
'--------------------------------------------------------------------
    Dim C As Range
  
    For Each C In Range("A1", Range("A65536").End(xlUp))
    If Len(C) > 1 Then C = Right(C, Len(C) - 28)
    Next C
  
    For Each C In Range("B1", Range("B65536").End(xlUp))
    If Len(C) > 1 Then C = Right(C, Len(C) - 17)
    Next C
  
    For Each C In Range("B1", Range("B65536").End(xlUp))
    If Len(C) > 1 Then C = Left(C, Len(C) - 10)
    Next C
    
'--------------------------------------------------------------------
    Dim Pos As Integer
    Dim j As Long
 
    For j = 1 To Range("A" & Rows.Count).End(xlUp).Row
    With Range("A" & j)
    Pos = InStr(.Value, "resname")
        If Pos <> 0 Then
        .Value = Left(.Value, InStr(.Value, "resname") - 3)
        End If
    End With
    Next j
    
End Sub


Merci d'avance,

Cordialement.
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : Macro qui marche une fois sur dix.

Bonjour Azerty, bonjour le forum,

je trouve étrange que tu utilises Selection car dans le code rien ne propose une sélection. Cela signifie que tu dois effectuer la sélection d'une plage avant de lancer cette macro. Peut-être le problème vient-il de là ?
Sinon, sans fichier en pièce jointe il nous sera difficile de comprendre ton problème...
 

azerty123

XLDnaute Nouveau
Re : Macro qui marche une fois sur dix.

Bonjour Robert,

J'utilise
Code:
Selection.SpecialCells(xlCellTypeBlanks).Delete Shift:=xlUp
afin d'effacer toute les cellules vides. J'avais trouvé cette information je ne sais plus ou. Est ce une erreur ?

Je ne peut malheuresement vous transmettre mon .xls, pour des raisons de confidentialités.

Cordialement.

EDIT : Retirer cette ligne ne résoud pas le problème.
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : Macro qui marche une fois sur dix.

Bonjour Azerty, bonjour le forum,


Code:
Selection.SpecialCells(xlCellTypeBlanks).Delete Shift:=xlUp
supprime toutes les cellules vides de la plage sélectionnée en faisant remonter vers le haut
si tu veux le faire pour toutes les cellules de l'onglet ce serait plustôt :
Code:
Cells.SpecialCells(xlCellTypeBlanks).Delete Shift:=xlUp
Sinon, il est très facile de rendre ton fichier anonyme en remplaçant une colonne de nom par Nom1 puis en tirant la poignée de recopie par exemple... Il suffit de nous montrer une poignée de donnés pour comprendre le code. Mais si toi tu as la flemme de le faire, imagine moi...
 

azerty123

XLDnaute Nouveau
Re : Macro qui marche une fois sur dix.

Bonjour Robert,



Et bien la bonne nouvelle, c'est que c'était la séléction qui effectivement plantait le truc. De temps en temps, je séléctionnais directement la colonne pour copier mes données, et donc au clic de ma maccro, la séléctino etait la bonne. J'ai seulement eu à rajouté un
Code:
range("....").select
devant chaque selection.


Conscernant mon .xls, ce n'est pas le document le soucis, mais les données à traiter qui sont confidentiels. Je m'escuse par avance, et te remercie de ton attention,


Cordialement.
 

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
312 756
Messages
2 091 734
Membres
105 060
dernier inscrit
DEDJAN Gaston