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 :

recherche info sur macro


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Homme Profil pro
    responsable formation
    Inscrit en
    Février 2015
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Isère (Rhône Alpes)

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

    Informations forums :
    Inscription : Février 2015
    Messages : 33
    Points : 22
    Points
    22
    Par défaut recherche info sur macro
    Bonsoir,

    J'aimerai savoir comment on peut essayer de trouver une information avant de vous poser une question et de vous embêter. Je lis beaucoup de discussion, certaines sont fortes intéressantes mais comme je ne comprends toutes les subtilités, je cherche quelque chose de tout fait.

    C'est simple, je cherche comment copier automatiquement (je viens de trouver le nom: faire une macro événementielle) dans des feuilles dont les noms commencent par client, une cellule a7 lorsqu'elle n'est pas vide dans une autre feuille appelée récap, idem pour la cellule a8 a9 etc jusqu'a A36 de chaque feuille client1 client2 etc. (je viens de trouver le nom: faire une macro événementielle)

    Pour le moment, j'ai une macro (pour laquelle vous m'avez aidé) qu'on doit lancer avant chaque changement de feuilles mais j'ai peur qu'on oublie de la lancer, voilà pourquoi je cherche un automatisme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sub copie1feuille()
            Range("A7:A36").Copy
        Sheets("recap").Range("a65536").End(xlUp).Offset(1, 0).PasteSpecial Paste:=xlValues
        ActiveWorkbook.Save
    End Sub
    Encore et toujours merci d'avance

  2. #2
    Expert éminent
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Points : 6 871
    Points
    6 871
    Par défaut
    Bonjour,

    A mettre dans le module du classeur (ThisWorkbook) :
    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
    24
    25
    26
     
    Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
     
        Dim Lgn As Long
     
        If Target.Count > 1 Then Exit Sub
        If Intersect(Target, Range("A7:A36")) Is Nothing Then Exit Sub
     
        If InStr(Sh.Name, "Client") <> 0 Then
     
            Application.EnableEvents = False
     
            With Sheets("recap")
     
                Lgn = .Cells(.Rows.Count, 1).End(xlUp).Row + 1
                .Range(.Cells(Lgn, 1), .Cells(Lgn + 29, 1)).Value = Range("A7:A36").Value
     
            End With
     
            Application.EnableEvents = True
     
        End If
     
        'ActiveWorkbook.Save
     
    End Sub

  3. #3
    Membre à l'essai
    Homme Profil pro
    responsable formation
    Inscrit en
    Février 2015
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Isère (Rhône Alpes)

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

    Informations forums :
    Inscription : Février 2015
    Messages : 33
    Points : 22
    Points
    22
    Par défaut
    bonjour et merci These d'avoir répondu.
    Le problème était que cette macro ne fonctionnait que sur le feuille nommée client01, mais pas sur les autres nommées client02 client03 etc (jusqu'à 250). J'ai modifié avec ce que j'ai pu trouver sur le site
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If InStr(1, Sh.Name, "Client0", 1) <> 0 Then
    Cela fonctionne mais est ce bon ?
    Deuxième problème, lorsque je saisis la cellule A7 dans la feuille client01, il écrit la réf dans la feuille "recap", mais il réécrit cette même réf dès que je saisis la cellule A8 dans la même feuille client , il écrit dans récap les réf de A7 et A8, et donc, en continuant, la saisie, il recopie dans récap les premières saisies +1 (la dernière référence) exemple de ma feuille récap

    ca14
    ca14
    cb02
    ca14
    cb02
    bz59

    Et si je peux abuser, si on vide une cellule dans une feuille, (exemple en A15 de la feuille client123) , ma feuille récap ne se met à à jour.

    Merci encore.

    Hervé

  4. #4
    Expert éminent
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Points : 6 871
    Points
    6 871
    Par défaut
    Bonjour,

    Le problème était que cette macro ne fonctionnait que sur le feuille nommée client01, mais pas sur les autres nommées client02 client03 etc (jusqu'à 250). J'ai modifié avec ce que j'ai pu trouver sur le site
    Avec ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    If InStr(1, Sh.Name, "Client0", 1) <> 0 Then
    tu n'iras pas plus loin que la feuille "Client09" car la feuille d'après, "Client10" ne répondra pas au critère !
    C'est pour cette raison que j'ai proposé ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    If InStr(Sh.Name, "Client") <> 0 Then
    Deuxième problème, lorsque je saisis la cellule A7 dans la feuille client01, il écrit la réf dans la feuille "recap", mais il réécrit cette même réf dès que je saisis la cellule A8 dans la même feuille client , il écrit dans récap les réf de A7 et A8, et donc, en continuant, la saisie, il recopie dans récap les premières saisies +1 (la dernière référence) exemple de ma feuille récap
    Dans ton code tu as cette ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Range("A7:A36").Copy
    Ceci veux dire que tu veux récupérer toute la plage et c'est pour cette raison que je t'ai posté ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    With Sheets("recap")
     
        Lgn = .Cells(.Rows.Count, 1).End(xlUp).Row + 1
        .Range(.Cells(Lgn, 1), .Cells(Lgn + 29, 1)).Value = Range("A7:A36").Value
     
    End With
    si tu ne veux récupérer que la valeur de Target, teste ça :
    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
    24
    25
    26
     
    Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
     
        Dim Lgn As Long
     
        If Target.Count > 1 Then Exit Sub
        If Intersect(Target, Range("A7:A36")) Is Nothing Then Exit Sub
     
        If InStr(Sh.Name, "Client") <> 0 Then
     
            Application.EnableEvents = False
     
            With Sheets("recap")
     
                Lgn = .Cells(.Rows.Count, 1).End(xlUp).Row + 1
                .Cells(Lgn, 1).Value = Target.Value
     
            End With
     
            Application.EnableEvents = True
     
        End If
     
        'ActiveWorkbook.Save
     
    End Sub

  5. #5
    Membre à l'essai
    Homme Profil pro
    responsable formation
    Inscrit en
    Février 2015
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Isère (Rhône Alpes)

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

    Informations forums :
    Inscription : Février 2015
    Messages : 33
    Points : 22
    Points
    22
    Par défaut
    Bonsoir These

    Cela fonctionne très bien mais uniquement sur la feuille client01, mais pas sur les autres feuilles client02 client03 etc.

    Par contre vous aviez raison, la correction que j'avais essayé de faire ne fonctionne plus sur les feuille dont le nom est supérieure à client09

    Que faire, svp ?

    Merci d'avance

  6. #6
    Expert éminent
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Points : 6 871
    Points
    6 871
    Par défaut
    Bonjour,

    Le mot "Client" n'est pas orthographié exactement pareil pour toutes les feuilles car dans Instr() les majuscules et minuscules ont leurs importances "Client" et "client" sont différents. J'ai apporté une modif au code regarde si ça convient :
    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
    24
    25
    26
     
    Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
     
        Dim Lgn As Long
     
        If Target.Count > 1 Then Exit Sub
        If Intersect(Target, Range("A7:A36")) Is Nothing Then Exit Sub
     
        If InStr(LCase(Sh.Name), "client") <> 0 Then
     
            Application.EnableEvents = False
     
            With Sheets("recap")
     
                Lgn = .Cells(.Rows.Count, 1).End(xlUp).Row + 1
                .Cells(Lgn, 1).Value = Target.Value
     
            End With
     
            Application.EnableEvents = True
     
        End If
     
        'ActiveWorkbook.Save
     
    End Sub

  7. #7
    Membre à l'essai
    Homme Profil pro
    responsable formation
    Inscrit en
    Février 2015
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Isère (Rhône Alpes)

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

    Informations forums :
    Inscription : Février 2015
    Messages : 33
    Points : 22
    Points
    22
    Par défaut
    bonsoir,

    J'ai peur de vous décevoir, mais cela ne fonctionne pas. Par contre, j'ai passé le nom de mes feuilles en clients avec un c minuscules en gardant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If InStr(Sh.Name, "client") <> 0 Then
    et maintenant tout fonctionne.

    GRANDS MERCIS et je clôture comme résolu

  8. #8
    Membre à l'essai
    Homme Profil pro
    responsable formation
    Inscrit en
    Février 2015
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Isère (Rhône Alpes)

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

    Informations forums :
    Inscription : Février 2015
    Messages : 33
    Points : 22
    Points
    22
    Par défaut
    Bonsoir These,

    Auriez vous une solution pour supprimer une référence dans l'onglet "recap" lorsque je la supprime d'une feuille client. En clair, si l'utilisateur se trompe ou si un client nous ramène un jouet, on modifie sa feuille client mais la réf dans l'onglet recap ne se supprime pas. Pas grave s'il reste une ligne vide dans recap à la place de la référence. Je ne sais pas s'il faut faire une autre macro ou s'il faut amender la votre


    Merci

  9. #9
    Expert éminent
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Points : 6 871
    Points
    6 871
    Par défaut
    Bonjour,

    Pour ça, tu peux utiliser la procédure évènementielle "Workbook_SheetChange" (dans le module du classeur). Comme je ne sais pas comment est structuré ton classeur, je ne peux te proposer aucun code.

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

Discussions similaires

  1. Recherche info sur page WEB via macro VB
    Par yeyeric dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 20/04/2020, 17h33
  2. Recherche info sur page WEB via macro VB
    Par boubou26 dans le forum Macros et VBA Excel
    Réponses: 26
    Dernier message: 20/07/2015, 17h33
  3. blocage pc si recherche info sur type de fichiers
    Par blandinais dans le forum Windows XP
    Réponses: 3
    Dernier message: 04/12/2006, 16h10
  4. [XSL] recherche infos sur xsl:key
    Par luta dans le forum XSL/XSLT/XPATH
    Réponses: 5
    Dernier message: 17/02/2006, 17h23
  5. [Vba]recherche infos sur tables
    Par Emcy dans le forum Access
    Réponses: 8
    Dernier message: 09/11/2005, 08h44

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