XL 2010 Résolu par Marcel : une macro qui gêne un code dans la feuille

Usine à gaz

XLDnaute Barbatruc
Bonjour à toutes et à tous,

Me voici à nouveau à vous solliciter.
En fait, il y a longtemps que je souhaitais vous poser cette question et puis .... le temps passant, n'ayant pas eu vraiment besoin, j'avais oublié.

Aujourd'hui, j'ai besoin d'exécuter "pas à pas" un code qui est dans le code de ma feuille .
Voici une partie du code :
Code:
If Not Application.Intersect(Target, Range("q7:q20000")) Is Nothing Then
Application.EnableEvents = False
Application.ScreenUpdating = False
ActiveSheet.Unprotect Password:="Krameri"
   On Error Resume Next
   With Target
      ActiveSheet.PasteSpecial Format:="Texte", Link:=False, DisplayAsIcon:=False
      Call ClearClipboard
      Call sms
      ActiveCell.Offset(0, 1).Select
   End With

quand je veux déboyer pas à pas, hormis une sonnerie ..... rien ... nada qdal

Pourtant, j'ai besoin de voir ce qui se passe en détails car ce code fait référence à ma macro "sms".

- Quand j'exécute la macro "sms" direct, ça marche bien sans aucun problème.
- Quand je passe par le code de la feuille, la macro "sms" est exécutée n'importe comment et donc ça ne va plus.

Pourriez-vous me dire comment déboyer pas à pas à partir des codes feuilles ?
Je vous remercie encore une fois,
Amicalement,
Lionel,
 

TooFatBoy

XLDnaute Barbatruc
Tu ne savais pas comment mettre un point d'arrêt ? Il suffit de cliquer dans la marge gauche devant la ligne où l'on veut s'arrêter. ;)
En suite, pour exécuter pas à pas, il suffit d'appuyer sur la touche <F8>.

Pour lancer une macro directement en mode pas à pas, tu cliques sur une des lignes de code de ladite macro et tu lances son exécution en mode pas à pas en appuyant sur la touche <F8>.
Évidemment ça ne peut pas fonctionner avec toutes les macros, en particulier avec celles auxquelles on passe des paramètres.
 
Dernière édition:

TooFatBoy

XLDnaute Barbatruc
Quel est le problème que tu n'as pas solutionné ?

- Quand j'exécute la macro "sms" direct, ça marche bien sans aucun problème.
- Quand je passe par le code de la feuille, la macro "sms" est exécutée n'importe comment et donc ça ne va plus.
- Que veux-tu dire par "exécuter directement" la macro ?
- Que veux-tu dire par "passer par le code de la feuille" ?

N'est-ce pas simplement un problème d'accès aux données ?
Autrement dit, est-ce la bonne feuille qui est active lorsque tu "passes par le code de la feuille" ?
 

Usine à gaz

XLDnaute Barbatruc
Re- Marcel, le forum,

J'ai enfin réussi à faire un fichier test (extrait de mon classeur de travail)
Voici mon souci :
J'ai un code mis au point avec Hevé62 (plusssss par lui que par moi LOL) ... une partie du code :
Code:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
'efface espaces numéros et copie texte dans même cellule par Hervé62
If Not Application.Intersect(Target, Range("e7:e16")) Is Nothing Then
Application.EnableEvents = False
Application.ScreenUpdating = False
ActiveSheet.Unprotect Password:=""
   On Error Resume Next
   With Target
      ActiveSheet.PasteSpecial Format:="Texte", Link:=False, DisplayAsIcon:=False
      Call ClearClipboard
      ActiveCell.Offset(0, 1).Select
   End With
      If IsNumeric(Target) Then
    ActiveCell.Offset(0, -1).Select
    Selection.Copy
    ActiveCell.Offset(0, 4).Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    ActiveCell.Replace What:=" ", Replacement:="", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
    Selection.Copy
    ActiveCell.Offset(0, -4).Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
            Target = Range("e3") & Target
            If [Target] > 1 And [Target] < 100000000000# Then
            ActiveCell.Offset(0, 1).Select
            Else
            MsgBox "Erreur : vous n'avez pas copié 9 chiffres !", , "Oups"
'            Range("H1").Select
'            ActiveCell.FormulaR1C1 = "2 clics"
            Target = ""
            Target.Offset(0, 4) = ""
            Application.CutCopyMode = False
            Application.EnableEvents = True
            ActiveSheet.Protect Password:="", DrawingObjects:=True, Contents:=True, Scenarios:=True
            ActiveSheet.EnableSelection = xlNoRestrictions
            Exit Sub
            End If
            End If
            End If
ActiveSheet.Protect Password:="", DrawingObjects:=True, Contents:=True, Scenarios:=True
ActiveSheet.EnableSelection = xlNoRestrictions
Application.EnableEvents = True
Application.ScreenUpdating = True

Ce code me permet de copier 2 types d'informations sur le net :
1 - n° de tel en supprimant le 0 et les espaces et en y ajoutant le 33,
2 - en copiant des textes qui sont mis dans la même cellule sans passer par la barre de formule.

Ce code fonctionne super bien :)

J'ai également besoin d'envoyer des sms à partir de mon classeur.

Je me suis donc mis à l'écriture d'un code qui fonctionne grâce aux conseils et modifications de Marcel :)

Le souci est que ces 2 codes entrent en conflit ... plus justement, après l'exécution de la macro sms, le code précédent ne fonctionne plus.

Normalement, en espérant avoir été clair, le fichier joint contient les explications.

Auriez-vous une idée pour que les 2 codes fonctionnent sans "se gêner" ?

Avec mes remerciements,
Amicalement,
Lionel,
 

Pièces jointes

  • Format + 33 +Copier coller + sms test.xlsm
    113.7 KB · Affichages: 33
Dernière édition:

TooFatBoy

XLDnaute Barbatruc
Je pense que tu peux déjà commencer par simplifier ta macro en remplaçant le code :
VB:
    Selection.Copy
   ActiveCell.Offset(0, 4).Select
   Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
      :=False, Transpose:=False
   ActiveCell.Replace What:=" ", Replacement:="", LookAt:=xlPart, _
      SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
      ReplaceFormat:=False
   Selection.Copy
   ActiveCell.Offset(0, -4).Select
   Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
      :=False, Transpose:=False
   Target = Range("e3") & Target
par la ligne Target.Value = Range("E3") & Format(Replace(Target.Value, " ", ""), "#")
 

Usine à gaz

XLDnaute Barbatruc
LOL effectivement ..... tu viens à la maison pour me donner des cours ?
En revanche, j'ai remarqué un truc qui pourrait m'aider mais je ne comprends pas pourquoi ????
- Donc, après avoir exécuté la macro sms, le code de la feuille ne fonctionne plus ....
- mais si je ferme le classeur et que je l'ouvre à nouveau, le code fonctionne tant que je n'ai pas exécuté la macro sms
 

TooFatBoy

XLDnaute Barbatruc
Je ne sais pas... :(
Peut-être que ça vient de tes Application.EnableEvents = False

Pourquoi utilises-tu ça ?


De plus, je pense que tu as peut-être bien une erreur de plage dans ta ligne
If Not Application.Intersect(Target, Range("ek7:k16")) Is Nothing Then
Est-ce réellement EK7:K16 ou plutôt K7:K16 ?
 

Usine à gaz

XLDnaute Barbatruc
OUI, j'ai essayé sans effet.
As-tu vu mon message précédent ? :

En revanche, j'ai remarqué un truc qui pourrait m'aider mais je ne comprends pas pourquoi ????
- Donc, après avoir exécuté la macro sms, le code de la feuille ne fonctionne plus ....
- mais si je ferme le classeur et que je l'ouvre à nouveau, le code fonctionne tant que je n'ai pas exécuté la macro sms

petite précision : la macro sms empêche la bonne exécution du code de la feuille mais ne désactive pas les macros
 

Discussions similaires

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
314 645
Messages
2 111 536
Membres
111 184
dernier inscrit
amiko