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

Probleme redaction Macro

sim

XLDnaute Occasionnel
Bonjour a tous!!!

Aujourd'hui mon souci est le suivant:

Grace au forum et l'enregistreur, j'ai reussi a creer les codes suivants:

Private Sub acceuil_Click()
Sheets("Brute").Select
Sheets("Brute").Copy Before:=Sheets(5)
Sheets("Brute (2)").Select
Sheets("Brute (2)").Name = "FX"
End Sub

Ce code fait une copie d'une feuille appelee Brute et la renomme FX

Apres je voudrait travailler FX avec le code suivant ( il fonctionne!!)

Sub supp()
Columns("I").Replace "-", "--->", LookAt:=xlPart
Dim dl As Integer
Dim x As Integer

dl = Range("I65536").End(xlUp).Row
For x = dl To 1 Step -1
If Cells(x, 9).Value = "" Or Cells(x, 13) < 0 Then Rows(x).Delete
Next x
End Sub

Ce code supprime les ligne qui on la cellule de la colonne I vide et les ligne ayant des valeur negative dans la colone M.
Elle remplace aussi tout les "-" par des "--->" dans "I"


Mais j'ai beau tourner le probleme dant tous les sens, je n'arrive pas a faire en sorte de faire executer les deux macros grace au bouton qui me permet l'execution d'une macro.
Si je devais reformuler

J'aimerai qu'en un click Ma feuille FX se cree et directement apres que la macro qui supprime les ligne se lance.

Merci d'avance!!!!!

Sim
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : Probleme redaction Macro

Bonjour Sim, bonjour le foroum,

Essaie comme ça :
Code:
Private Sub acceuil_Click()
Sheets("Brute").Copy Before:=Sheets(5)
ActiveSheet.Name = "FX"
Call supp
End Sub
 

Pierrot93

XLDnaute Barbatruc
Re : Probleme redaction Macro

Bonjour,

essaye peut être comme ceci :
Code:
Sub test()
Dim dl As Integer
Dim x As Integer

Sheets("Brute").Select
Sheets("Brute").Copy Before:=Sheets(5)
Sheets("Brute (2)").Select
Sheets("Brute (2)").Name = "FX"
Columns("I").Replace "-", "--->", LookAt:=xlPart

dl = Range("I65536").End(xlUp).Row
For x = dl To 1 Step -1
If Cells(x, 9).Value = "" Or Cells(x, 13) < 0 Then Rows(x).Delete
Next x
End Sub

préférable de mettre ce code dans un module standard et non dans le module de la feuille...

bonne journée
@+

Edition : bonjour Robert
 

noviceAG

XLDnaute Impliqué
Re : Probleme redaction Macro

Bonjour sim, le Forum,
Loin d'être u spécialiste des macros, je verrai :
Private Sub acceuil_Click()
Sheets("Brute").Select
Sheets("Brute").Copy Before:=Sheets(5)
Sheets("Brute (2)").Select
Sheets("Brute (2)").Name = "FX"
Call supp
End Sub
 

sim

XLDnaute Occasionnel
Re : Probleme redaction Macro

CHer Robert, Forum!!

Merci beaucoup pour cette reponse si rapide!!

Je voudrais juste quelques petites precisions:

Bon je colle ce que tu viens de me donner dans le code de mon bouton acceuil! Jusque la pas de probleme!! lol

Mais je vois ensuite que la macro "call" la macro supp:

Ou dois je coller le code de ma macro supp? J'aurai penser dans FX! Mais elle n'existe pas encore!! lol.....vous voyez ce que je veux dire??!!
 

sim

XLDnaute Occasionnel
Re : Probleme redaction Macro

Merci a tous pour vos reponse!!!!!

J'ai donc opte pour la solution suivante:

J'ai coller le code de Robert, dans le code du bouton "acceuil"

J'ai ensuite coller le code de la Macro Supp () dans un Module, a part! Merci Pierrot!!!

Ca marche parfaitement!! , bon comme vous avez pu remarquer la Macro Supp () fait une boucle qui verifie plus de 65000 lignes
ce qui a pour effet de voir excel travailler, n'y aurais t il pas une commande permettant de figer l'ecran pendant que la macro travail!!??
Et si c'est possible ou dois je le placer???!!!

Encore un grand merci...j'appel ca de l'efficacite et de l'altruisme!!
 

ROGER2327

XLDnaute Barbatruc
Re : Probleme redaction Macro

Bonjour à tous
Une autre .
Code du bouton :
VB:
Private Sub accueil_Click()
  Sheets("Brute").Copy Before:=Sheets(5)
  On Error Resume Next 'pour le cas où la feuille "FX" existerait
   ActiveSheet.Name = "FX"
  If Err.Number <> 0 Then
    ActiveSheet.Delete
    Sheets("FX").Activate
  End If
  On Error GoTo 0
  supp
End Sub
Dans un module standard :
VB:
Sub supp()
Dim dl As Integer
Dim x As Integer
  With Application: .ScreenUpdating = 0: .Calculation = -4135: .EnableEvents = 0: End With
  With ActiveSheet
    dl = .Range("I65536").End(xlUp).Row
    For x = dl To 1 Step -1
      If .Cells(x, 9).Value = "" Or .Cells(x, 13) < 0 Then .Rows(x).Delete
    Next x
  End With
  With Application: .ScreenUpdating = 1: .Calculation = -4105: .EnableEvents = 1: End With
End Sub
(Non testé faute de support…)​
ROGER2327
#5134


Samedi 28 Pédale 138 (Dédicace du Tripode, V)
2 Germinal An CCXIX
2011-W12-2T09:22:29Z
 
Dernière édition:

sim

XLDnaute Occasionnel
Re : Probleme redaction Macro

Bonjour Roger!, forum

Je suis vraiment desole de ne pas pouvoir fournir de support, mais mes donnes sont confidentielles et on sait tous ce que la charte dit!!

Bon cela ne fonctionne pas....ou peut etre que je n'arrive pas a le faire fonctionner, c'est dommage car le fait de tester si FX existe deja m'interesse beaucoup.

De plus je crois que la partie remplacement des "-" par "--->" a disparu.....

Mais j'aimerai vraiment qu'on reussisse a le faire fonctionner, meme sans support (DSL) crois tu qu'on puisse essayer?

Merci
 
Dernière édition:

ROGER2327

XLDnaute Barbatruc
Re : Probleme redaction Macro

Re…
Au temps pour moi ! (erreur de copié-collé).
VB:
Sub supp()
Dim dl As Integer
Dim x As Integer
  With Application: .ScreenUpdating = 0: .Calculation = -4135: .EnableEvents = 0: End With
  With ActiveSheet
    .Columns("I").Replace "-", "--->", LookAt:=xlPart
    dl = .Range("I65536").End(xlUp).Row
    For x = dl To 1 Step -1
      If .Cells(x, 9).Value = "" Or .Cells(x, 13) < 0 Then .Rows(x).Delete
    Next x
  End With
  With Application: .ScreenUpdating = 1: .Calculation = -4105: .EnableEvents = 1: End With
End Sub
ROGER2327
#5136


Samedi 28 Pédale 138 (Dédicace du Tripode, V)
2 Germinal An CCXIX
2011-W12-2T09:44:21Z
 

sim

XLDnaute Occasionnel
Re : Probleme redaction Macro

Roger, le Forum

Alors.....

J'ai fait des test separes:

Le code de la Macro Supp () fonctionne, meme si il n'y a plus de remplacement des "-" par "--->"

Donc le probleme viendrai du code qui cree la feuille FX.....

J'ai beau essayer de trouver, pas moyen...Une idee??
 

sim

XLDnaute Occasionnel
Re : Probleme redaction Macro

Roger, le forum

Bon rien y fait, mes competences ne permette pas de voir ou est l'erreur dans le code du bouton c'est dommage, car l'idee de roger etait super, parce que je suis sur que ca arrivera, un utilisateur trop presse qui oublie de supprimer FX.

Roger, vous n'avez vraiment aucune idee??

Merci beaucoup
 

ROGER2327

XLDnaute Barbatruc
Re : Probleme redaction Macro

Suite

Chez moi, avec un classeur comportant au moins cinq feuilles dont une est nommée "Brute", la procédure de création de feuille fonctionne.
Il me semble seulement qu'il faut la modifier un peu pour qu'elle ne traite pas deux fois une éventuelle feuille "FX" pré-existante :
VB:
Private Sub accueil_Click()
  Sheets("Brute").Copy Before:=Sheets("5")
  On Error Resume Next 'pour le cas où la feuille "FX" existerait
  ActiveSheet.Name = "FX"
  If Err.Number <> 0 Then
    Application.DisplayAlerts = 0
    ActiveSheet.Delete
    Application.DisplayAlerts = 1
    Sheets("FX").Activate
    Exit Sub
  End If
  On Error GoTo 0
  supp
End Sub
ROGER2327
#5137


Samedi 28 Pédale 138 (Dédicace du Tripode, V)
2 Germinal An CCXIX
2011-W12-2T10:02:08Z
 
Dernière édition:

sim

XLDnaute Occasionnel
Re : Probleme redaction Macro

Roger, le forum

Je viens de la tester et cela ne fonctionne pas,

Mon classeur contient mois aussi 5 feuilles...je ne comprend pas comment FX pourrait pre exister du fait que je la supprime avant de lancer la macro de creation de FX

De plus, si ma logique est bonne, avec votre code il ne devrait pas y avoir de probleme puis que l'on test si FX existe deja....

C'est horrible avant votre idee, je n'y pensais meme pas, mais je serai vraiment content si nous pouvions garder ce test d'existence de FX....

Du coup je sais pas quoi faire
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…