Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Macro qui marche une fois sur dix.

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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.
 
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...
 
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.
 
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...
 
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.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
5
Affichages
612
Réponses
8
Affichages
614
Réponses
8
Affichages
244
Réponses
4
Affichages
471
Réponses
2
Affichages
345
Réponses
10
Affichages
457
Réponses
2
Affichages
154
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…