IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

macro impossible sur toutes les feuilles [XL-2003]


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 51
    Points : 19
    Points
    19
    Par défaut
    Bonsoir à tous,

    impossible de faire appliquer ma macro à l'ensemble de s mes feuilles ... je vois pas d'où cela peut venir ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    Private Sub bouton1()
     
     
    Dim i As Long
    Dim Ws As Worksheet
     
    For Each f In ActiveWorkbook.Sheets
    f.Activate
    f.Select
        For i = Range("A100").End(xlUp).Row To 1 Step -1
            If Cells(i, 1).Value = "toto" Then Rows(i).Delete
        Next i
    Next f
     
     
    End Sub
    merci

    je lui demande de me trouver dans ma colonne A les lignes qui commencent par toto et si il les trouve alors il efface la ligne ...
    il le fait bien pour la feuille 1 mais il balaie les autres feuilles sans rien faire ...

  2. #2
    Expert éminent Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 754
    Points : 9 396
    Points
    9 396
    Par défaut
    Bonjour,

    Essais comme cela.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    Private Sub bouton1()
     
    Dim i As Long
    Dim Ws As Worksheet
     
    For Each Ws In ActiveWorkbook.Sheets
        For i = Ws.Range("A" & Rows.Count).End(xlUp).Row To 1 Step -1
            If Ws.Cells(i, 1).Value = "toto" Then Ws.Rows(i).Delete
        Next i
    Next
     
    End Sub
    Tu as déclaré une variable Ws mais ne l'utilise pas

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 51
    Points : 19
    Points
    19
    Par défaut
    Merci mais j'ai testé et nada en feuille 2 et autres ...

    Je confirme, il ne fait rien de plus en feuille 2 ... zut ... comment c'est possible ?
    je lance la macro via un bouton présent sur la feuille 1 pour info.

  4. #4
    Expert éminent Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 754
    Points : 9 396
    Points
    9 396
    Par défaut
    Oui, on peut boucler sur les fichiers d'un répertoire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    Dim fso As Object
    Dim FsoRepertoire As Object
    Dim FsoFichier As Object
    Dim i As Long
     
    Dim str() As String
     
    Set fso = CreateObject("Scripting.FileSystemObject")
     
    'Répertoire à lire
    Set FsoRepertoire = fso.GetFolder("C:\")
     
    'Boucle sur fichiers du repertoire
    i = 1
    For Each FsoFichier In FsoRepertoire.Files
        'Test l'extension du fichier
        str = Split(FsoFichier.Name, ".")
        If str(UBound(str)) = "xls" Then
           'Ajoute dans la colonne A le nom du fichier
            Range("A" & i).Value = FsoFichier.Name
            i = i + 1
        End If
    Next

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 51
    Points : 19
    Points
    19
    Par défaut
    merci
    as tu une réponse pourquoi ça ne marche pas ma macro sur les autres onglets de mon fichier ?

  6. #6
    Membre expérimenté Avatar de nchal
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    512
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2012
    Messages : 512
    Points : 1 656
    Points
    1 656
    Par défaut
    Salut,

    As tu utiliser le code de jfontaine ? Je viens de l'essayer et il marche très bien.

  7. #7
    Expert éminent Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 754
    Points : 9 396
    Points
    9 396
    Par défaut
    Il n'y pas de raison que le code ne passe pas sur toutes les feuilles

    Ajoute la ligne msgbox pour être sur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Private Sub bouton1()
     
    Dim i As Long
    Dim Ws As Worksheet
     
    For Each Ws In ActiveWorkbook.Sheets
        msgbox ws.name
        For i = Ws.Range("A" & Rows.Count).End(xlUp).Row To 1 Step -1
            If Ws.Cells(i, 1).Value = "toto" Then Ws.Rows(i).Delete
        Next i
    Next
     
    End Sub

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 51
    Points : 19
    Points
    19
    Par défaut
    oui testé et pas moyen ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    Private Sub CommandButton2_Click()
    Dim i As Long
    Dim Ws As Worksheet
     
    For Each Ws In ActiveWorkbook.Sheets
        For i = Ws.Range("A" & Rows.Count).End(xlUp).Row To 1 Step -1
    If Ws.Cells(i, 1).Value = "ztzet" Or Ws.Cells(i, 1).Value = "plp" Or Ws.Cells(i, 1).Value = "ztzt" Or Ws.Cells(i, 1).Value = "tee" Or Ws.Cells(i, 1).Value = "taez" Or Ws.Cells(i, 1).Value = "TATA" Or Ws.Cells(i, 1).Value = "tata" Or Ws.Cells(i, 1).Value = "titio" Or Ws.Cells(i, 1).Value = "totoS" Then Rows(i).Delete
        Next i
     
    Next
     
     
     
     
     
    End Sub

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 51
    Points : 19
    Points
    19
    Par défaut
    me demande si ça vient pas de mes "or" à outrance ...
    sinon bizarre, quand je lance plusieurs fois le bouton macro, il m'efface tout de ma feuille 1 ... même si je ne suis pas dans les conditions définies dans ma macro ... ?

    avec msgbox ws.name pourtant je change bien d'onglet ...

  10. #10
    Expert éminent Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 754
    Points : 9 396
    Points
    9 396
    Par défaut
    Comme je n'ai pas ton fichier pour tester je ne peux te dire pourquoi ce na fonctionne pas sur les autres feuillez.
    Par contre, tu peux rendre plus lisible ton code comme cela
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
       For i = Ws.Range("A" & Rows.Count).End(xlUp).Row To 1 Step -1
            Select Case Ws.Cells(i, 1).Value
                Case "ztzet", "plp", "ztzt", "tee", "taez", "TATA", "tata", "titio", "totoS"
                    Ws.Rows(i).Delete
            End Select
        Next i
    EDIT : j'ai trouvé, tu n'as pas mis Ws sur la ligne du delete

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 51
    Points : 19
    Points
    19
    Par défaut
    merci c'est plus clair effectivement mais j'arrive pas à comprendre pourquoi ça merde, mon fichier est tout simple en plus

    UP : oui bingo, bien vu !!!! merci encore !!!

  12. #12
    Membre expérimenté Avatar de nchal
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    512
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2012
    Messages : 512
    Points : 1 656
    Points
    1 656
    Par défaut
    Re-Bonjour

    Après plusieurs test sur ton code, j'avais la même erreur. Et je me suis aperçu que tu avais oublié de mettre le Ws lors du delete alors que jfontaine l'avais mis sur son premier code.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Ws.Cells(i, 1).Value = "ztzet" Or Ws.Cells(i, 1).Value = "plp" Or Ws.Cells(i, 1).Value = "ztzt" Or Ws.Cells(i, 1).Value = "tee" Or Ws.Cells(i, 1).Value = "taez" Or Ws.Cells(i, 1).Value = "TATA" Or Ws.Cells(i, 1).Value = "tata" Or Ws.Cells(i, 1).Value = "titio" Or Ws.Cells(i, 1).Value = "totoS" Then Ws.Rows(i).Delete
    EDIT: jfontaine a trouvé avant moi et en plus il propose une amélioration avec un Case Pauvre de moi!

  13. #13
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 51
    Points : 19
    Points
    19
    Par défaut
    merci les gars pour votre aide bonne soirée à vous

  14. #14
    Expert éminent Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 754
    Points : 9 396
    Points
    9 396
    Par défaut
    nchal

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. macro rechercher/remplacer sur toutes les feuilles
    Par gti64 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 03/03/2015, 11h25
  2. [XL-2007] Operations tableaux et boucle sur toutes les feuilles
    Par undercorejay dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 24/01/2010, 23h16
  3. Mise en page avant impression sur toutes les feuilles du classeur
    Par fribelle dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 12/11/2008, 09h48
  4. Récuperer le clique sur toutes les feuilles
    Par faube dans le forum Excel
    Réponses: 6
    Dernier message: 03/08/2007, 10h17
  5. Action sur toutes les feuilles d'un classeur
    Par beurnoir dans le forum Macros et VBA Excel
    Réponses: 14
    Dernier message: 23/12/2005, 15h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo