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 VBA - fonction "Cells.Select" [XL-2003]


Sujet :

Macros et VBA Excel

  1. #1
    Membre Expert Avatar de hunteshiva
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Février 2010
    Messages
    1 069
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2010
    Messages : 1 069
    Par défaut Macro VBA - fonction "Cells.Select"
    Bonjour,

    je suis en train de refaire une macro pas trés propre,
    seulement je me heurte à la fin à une fonction que je connais pas,
    impossible se savoir ce qu'elle fait...

    par exemple il y avait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    'Code projet
        Sheets("DATA").Select
        Range("C10").Select
        sel = ActiveCell
        Sheets("RESULTAT").Select
        Range("B7:C7").Select
        ActiveCell = sel
    que j'ai simplement remplacé par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    'Code projet
        Sheets("RESULTAT").Range("B7:C7") = Sheets("DATA").Range("C10")
    pour moi beaucoup plus simple à lire,
    et le code est 5 voir six fois moins long

    Le soucis c'est qu'a la fin il y a ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
        ' Effacement de la feuille de recupération
        Sheets("DATA").Select
        Cells.Select
        Selection.ClearContents
     
        ' Remise à l'état initiale des cellules de la feuille
        Cells.Select
        Selection.NumberFormat = "General"
    j'ai peur qu'il prenne toutes les cellules qui ont étaient sélectionnées de la feuille DATA
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Sheets("DATA").Select
    Cells.Select
    et qu'il les efface
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Selection.ClearContents
    aprés je ne sais pas ce qu'il fait par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Selection.NumberFormat = "General"
    Voila si quelqu’un peut m'éclairer,
    j'ai l'impression que se problème n'est pas compliqué mais je ne trouve pas d'explications sur
    et aussi d’où sort le format "Général" ? on peut définir des formats?

  2. #2
    Expert confirmé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    6 814
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Décembre 2007
    Messages : 6 814
    Par défaut
    J'ai joué un peu avec l'enregistreur de macro, j'ai selectionné toute la feuille, j'ai appuyé sur [suppr], puis j'ai été dans format-cellule, et j'ai mis un format standard. Résultat :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
        Cells.Select
        Selection.ClearContents
        Selection.NumberFormat = "General"
    je suppose que ça te donne un début de piste.....

  3. #3
    Membre Expert Avatar de hunteshiva
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Février 2010
    Messages
    1 069
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2010
    Messages : 1 069
    Par défaut
    Ok, merci beaucoup el_slapper pour "l'enregistreur de macro" *j'ai découvert grâce à toi*

    effectivement je confirme pour deux codes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Selection.ClearContents ' efface le contenu des cellules *évident*
    Selection.NumberFormat = "General" ' Définit le format de cellules comme standart
    le premier, "Cells.Select",
    je pense qu'il reprend toutes les cellules qui on étés sélectionnées *ça m'arrange pas mais bon*
    je confirme ça dès que je peux

  4. #4
    Expert confirmé
    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
    Par défaut
    Bonjour,

    Je me mêle un peu ;o))

    Je pense qu'il n'est pas nécessaire de travailler sur toutes les cellules de la feuille, seule la zone utilisée doit être modifiée. Donc, je pense que ceci serait mieux approprié que Cells :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    With Sheets("DATA").UsedRange
        .clearcontent
        .NumberFormat = "General"
    End With
    Hervé.

  5. #5
    Expert confirmé
    Avatar de Didier Gonard
    Homme Profil pro
    Formateur Office et développeur VBA en freelance
    Inscrit en
    Février 2008
    Messages
    2 805
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Formateur Office et développeur VBA en freelance

    Informations forums :
    Inscription : Février 2008
    Messages : 2 805
    Par défaut
    bonjour,

    je suis en train de refaire une macro pas trés propre
    => je veux faire propre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        ' Effacement de la feuille de recupération
        Sheets("DATA").Select
        Cells.Select
        Selection.ClearContents
    est très sale...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub toto()
        Worksheets("Data").Cells.ClearContents
    End Sub
    Fait la même chose en ne demandant même pas que la feuille cible soit celle active, on gagne encore un Select..

    Voir les tutoriels DVP dans la section adéquate pour les bons conseils comme :

    • Connaître la différence entre Sheets et Worksheeets (... Si le document actif n'est pas une feuille de calcul, cette propriété échoue (aide VBA à Cells.)
    • La propriété Cells (collection de Range)
    • l'instruction With qui permet de poursuivre sur les formats en code propre cf : Theze


    cordialement,

    PS : l'enregistreur de macro n'est pas un mauvais élève, il ne fait que transcrire les actions manuelles effectuées, rien à voir avec un code optimisé

    Didier

  6. #6
    Membre Expert Avatar de hunteshiva
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Février 2010
    Messages
    1 069
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2010
    Messages : 1 069
    Par défaut
    Citation Envoyé par Ormonth Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        ' Effacement de la feuille de recupération
        Sheets("DATA").Select
        Cells.Select
        Selection.ClearContents
    est très sale...
    Tout à fait d'accord

    c'est le code que j’essayais de comprendre mais en voyant ta ligne de code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Worksheets("Data").Cells.ClearContents
    tout est claire maintenant, en fesant le paralléle avec ce qu'a dit el_slapper
    j'ai sélectionné toute la feuille
    Le code devient simplement: *ludique*
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
        ' Effacement de la feuille de recupération
        Sheets("DATA").Cells.ClearContents
     
        ' Remise à l'état initiale des cellules de la feuille
        Sheets("DATA").Cells.NumberFormat = "General"
    Merci beaucoup les gars !!!

    PS: je suis contre les select, c'est comme les GoTo, c'est à bannir

  7. #7
    Expert confirmé
    Avatar de Didier Gonard
    Homme Profil pro
    Formateur Office et développeur VBA en freelance
    Inscrit en
    Février 2008
    Messages
    2 805
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Formateur Office et développeur VBA en freelance

    Informations forums :
    Inscription : Février 2008
    Messages : 2 805
    Par défaut
    Le code devient simplement: *ludique*
    ... cf Hervé

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sub MrPropre()
    With Sheets("DATA").Cells
        .ClearContents ' Effacement de la feuille de recupération
        .NumberFormat = "General" ' Remise à l'état initiale des cellules de la feuille
    End With
    End Sub
    cordialement,

    Didier

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

Discussions similaires

  1. [VBA-E] Lancement d'une macro en fonction du contenu d'une cellule
    Par Zak Blayde dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 30/01/2007, 15h13
  2. [VBA-E] macro avec fonction "TRANSPOSE"
    Par Ardeciel dans le forum Macros et VBA Excel
    Réponses: 20
    Dernier message: 12/06/2006, 16h11
  3. [VBnet][Access] Requete imbriquee "insert + select"
    Par Fab62_ dans le forum Windows Forms
    Réponses: 3
    Dernier message: 06/03/2006, 13h58
  4. probleme de selection aleatoire sur excel avec macro vba
    Par guillaume sors dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 21/10/2005, 10h51

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