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 :

Récupérer quelques cellules fixes dans un classeur contenant beaucoup d'onglets ! [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Femme Profil pro
    Inscrit en
    Juin 2011
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Juin 2011
    Messages : 8
    Points : 4
    Points
    4
    Par défaut Récupérer quelques cellules fixes dans un classeur contenant beaucoup d'onglets !
    Bonjour tout le monde,

    J’ai un problème de taille sur Excel pour aller trouver des données et les coller au bon endroit.

    Je m’explique.

    J’ai un classeur Excel avec de nombreux onglets, nommés selon la date à laquelle l’onglet a été créé. Actuellement, le fichier démarre au 3 janvier et va jusqu’au 3 juin. Les onglets sont nommés au format date : 3 janvier est « 03-01 » et 3 juin est « 03-06 », chronologiquement de gauche à droite. De façon aléatoire, une journée ou plusieurs manquent parfois, et l’on peut donc sauter du 4 mai « 05-04 » au 9 mai « 05-09 ». Chaque jour en théorie, un onglet est rajouté au fichier. Il y’a d’autres onglets dans le classeur qui n’ont rien à voir, avant le début de la série des dates et également après.

    J’ai créé un onglet « collecte », et je voudrais une macro qui fonctionne dessus de la manière suivante :

    1/ on demande à l’utilisateur une date de début et une date de fin (la date de début doit donc être supérieure ou égale au 03-01)
    2/ en fonction de cette plage de date, la macro va aller récupérer 3 contenus de cellule fixe dans tous les onglets concernés, et les coller dans l’onglet « collecte ». Les cellules concernées sont toujours au même endroit :
    - « poids » dans la cellule $F$14
    - « Volume » dans la cellule $E$8
    - « Prix » dans la cellule $F$9

    Merci beaucoup d’avance si quelqu’un peut m’aider avec ça !

    Laure

  2. #2
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut heu!!
    bonjour

    tout depend si tes sheets sont dans lordre ou pas meme si il y a des trou dans les dates si c'est le cas un boucle fera l'affaire


    au plaisir
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  3. #3
    Expert éminent sénior
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Points : 11 274
    Points
    11 274
    Par défaut
    Salut,pourquoi ne pas avoir opté pour une feuille Modele que l'on reprendrait chaque jour dans une feuille disons Données
    Cette feuille Données serait ensuite copiée dans une feuille d'archivage, avec les infos sur une seule ligne ( 1048576 lignes sur Excel 2007 et bien plus sur 2010 )
    Cela permettrait d'alléger le classeur final avec une navigation plus facile.C'est juste une idée mais c'est ce que j'ai été amené à faire pour une facturation d'association

  4. #4
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    rebonjour

    bon voila!!!!!

    alors tu ajoute un bouton dans ton sheets("collecte")

    tu met les cellules d1 et d2 au format text

    dans la macro du bouton tu ca:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Private Sub CommandButton1_Click()
     
    If Sheets("collecte").Range("D1").Value = "" Or Sheets("collecte").Range("D2").Value = "" Then
     
    MsgBox "il manque une date"
    Else
    colecte_des_donnees Sheets("collecte").Range("D1").Value, Sheets("collecte").Range("D2").Value
    End If
    End Sub
    et dans un module standard tu met cette fonction ci:

    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
     
    Function colecte_des_donnees(premiere_date As Variant, derniere_date)
    Dim DerniereLigne As Long
    Dim debut As Long, fin As Long
     
    debut = Sheets(premiere_date).Index
     fin = Sheets(derniere_date).Index
    DerniereLigne = Sheets("collecte").Range("A" & Rows.Count).End(xlUp).Row ' ici on determine la derniere ligne a chaque tour
     
     
    For i = debut To fin
    DerniereLigne = DerniereLigne + 1
    'et voila le transfert des trois cellules des sheets 03.01 à 18.06 tout simplement
    Sheets("collecte").Range("a" & DerniereLigne) = Sheets(i).Name
    Sheets("collecte").Range("B" & DerniereLigne) = Sheets(i).Range("f14")
    Sheets("collecte").Range("c" & DerniereLigne) = Sheets(i).Range("E8")
    Sheets("collecte").Range("D" & DerniereLigne) = Sheets(i).Range("f9")
    Next
    MsgBox "transfert terminé"
    End Function
    voila dorénavant en notant la première date en d1 du sheets collecte
    et la dernière date en d2 du sheets collecte

    et en cliquant sur le bouton le transfert se faira

    je le répète ça fonctionnera a la seule condition que tes sheet soit dans l'ordre même avec des écart de dates


    que ça te soit bien utile

    au plaisir
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  5. #5
    Candidat au Club
    Femme Profil pro
    Inscrit en
    Juin 2011
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Juin 2011
    Messages : 8
    Points : 4
    Points
    4
    Par défaut
    merci beaucoup Patrick je vais tester ta soluce et j'édite ma réponse !

    edit : bon alors je suis vraiment une quiche...

    tout d'abord, oui les sheets sont bien ds l'ordre

    je suis en train de regarder comment insérer un bouton et une macro liée au bouton, c'est idiot mais je l'ai jamais fait

    ensuite de quoi parles tu quand tu dis "module standard" ?.. une autre macro?

    Laure

  6. #6
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    bonjour


    procédons par ordre

    tout dabors quelle version a tu d'excel

    si c'est 2007

    tu qlique sur le logo windows en haut a gauche

    tu vas aen bas de la petite fenetre "option excel"

    tu clique et tu clique sur "afficher longlet developpeur dans le ruban


    a partir de la tu a la possibilité de te ballader dans l'editeur VBE

    tu ouvre vbe
    et tu va a insertion

    module

    et tu met la macro dedans

    ensuite pour le bouton

    dans le ruban apres avoir cliquer sur developpeur
    tu a insertion et tu aura la boite a outil (controls)
    tu ajoute le bouton et tu double clique dessus
    tu ateindra l'endroit ou tu dois metre le code du control


    voila au plaisir
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  7. #7
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    bonjour

    tiens reprend ton fichier
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  8. #8
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    bonjour je ne sais pas si c'est ton fichier


    si c'est le cas tu aurais pu prevenir qu'il y avait un commandbar perso

    je n'arrive pas a m'en débarasser maintenant
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  9. #9
    Candidat au Club
    Femme Profil pro
    Inscrit en
    Juin 2011
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Juin 2011
    Messages : 8
    Points : 4
    Points
    4
    Par défaut
    Bon, j'ai pas réussi à faire la manip, du coup j'ai essayé de simplifier ma demand :

    J’ai ce classeur Excel avec de nombreux onglets. Certains onglets contiennent une date en cellule $G$2, au format anglais du type 03/24/2011. Ce sont ces onglets qui m'intéressent. Les onglets sont triés chronologiquement, en général on passe d'un jour à l'autre de gauche à droite, mais parfois il y'a des trous. Chaque jour, je rajoute un onglet/jour sur mon fichier.

    J’ai créé un onglet « collecte », et je voudrais une macro qui fonctionne dessus de la manière suivante :

    1/ on demande à l’utilisateur une date au format anglais de début et une date de fin (la date de début doit donc être supérieure ou égale au 01/03/2011)

    2/ en fonction de cette plage de date, la macro va aller récupérer 3 contenus de cellule fixe dans tous les onglets concernés par des dates en $G$2, et les coller dans l’onglet « collecte ». Les cellules concernées sont toujours au même endroit :
    - « poids » dans la cellule $F$14
    - « Volume » dans la cellule $E$8
    - « Prix » dans la cellule $F$9

    Il faut donc que par défaut, l'onglet "collecte" n'affiche rien a part éventuellement un bouton de macro...

    Merci encore...
    Fichiers attachés Fichiers attachés

  10. #10
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    bonjour
    bon sens!!! a tu recupéré ton fichier que je t'ai renvoyé il est parfaitement fonctionel
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  11. #11
    Candidat au Club
    Femme Profil pro
    Inscrit en
    Juin 2011
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Juin 2011
    Messages : 8
    Points : 4
    Points
    4
    Par défaut
    salut patrick,
    désolée je viens de me rendre compte que j'avais un pb sur mon ordi (rafraichissement des pages sur IE??) j'ai pris connaissance de toutes tes réponses seulement après avoir renvoyé mon dernier message.
    Ca ne m'affichait rien avant.
    Je suis en train de tester ton fichier, merci encore :p

    (pour la commandbar... je ne sais pas ce que c'est ... )

    laure

  12. #12
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    rre

    ca n'est pas grave essaie mon fichier et dis moi ce que tu en pense
    si ca te conviens
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  13. #13
    Candidat au Club
    Femme Profil pro
    Inscrit en
    Juin 2011
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Juin 2011
    Messages : 8
    Points : 4
    Points
    4
    Par défaut
    testé!

    bon alors c'est très proche, mais c'est cette version d'excel 2010 en anglais qui me rend maboule

    lorsque les dates s'affichent ds le tableau, elles sont automatiquement lues au format US, et même en mettant en forme au format date FR, ça ne change rien...

    par exemple 03-01 est toujours le 1er mars, au lieu du 3 janvier...

    je ne sais pas s'il y'a moyen de rectifier ça
    ce que je disais ds mon précédent post, c'est essayer de contourner cette difficulté en oubliant totalement les dates en français (on ne passe plus par la date au format fr des onglets) et en passant par la case G2, date au format US
    comme ça on a plus que du US, et plus de mélange

    Merci bcp

  14. #14
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    re
    mais ma cher laure je ne t'ai pas dis de metre les cellules au format date (fr)
    mais tout simplement au format text
    cela dis si tu a essayé mon fichier il dois fonctionner chez toi aussi
    et la ca fonctionnera
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  15. #15
    Candidat au Club
    Femme Profil pro
    Inscrit en
    Juin 2011
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Juin 2011
    Messages : 8
    Points : 4
    Points
    4
    Par défaut
    j'ai pas été super claire je crois :
    les 2 cellules de saisie sont bien au format texte, et la macro se lance bien, le souci c'est l'affichage des résultats, il y'a une incohérence ds l'affichage car les dates se mélangent entre francais et anglais,

    exemple :

    je lance la macro de 03-01 (format texte) au 03-06 (format texte)
    ces dates correspondent au 3 janv et 3juin, car les onglets sont malheureusement nommés au format fr

    la macro me fait apparaitre tous les bons onglets, mais en les nommant
    1-Mar au lieu de 3-Janv
    1-Apr au lieu de 4- Janv
    1-May etc.
    3-Feb etc.
    5-Jun etc.
    6-Jan etc.
    6-Mar au lieu de 3-juin



    edit : c'est pour contourner ce pb de mélange de format entre les onglets en FR et office en US que je proposais de passer par la case G2, comme ça on est tout en US

  16. #16
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    ou alors un truc tout simple

    tu met ltoute la colonne "a" du sheets "collecte" au format text

    rien deplus simple


    au plaisir
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  17. #17
    Candidat au Club
    Femme Profil pro
    Inscrit en
    Juin 2011
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Juin 2011
    Messages : 8
    Points : 4
    Points
    4
    Par défaut
    ...
    ...

    ... ça marche !!! merci bcp patrick tu déchires.
    merci pour la patience.

    Je note le sujet clôt !


    a+
    Laure

  18. #18
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    je dechire ?????????????

    j'ignorais que l'on pouvais dechirer les feuilles excel que l'on se servait plus



    a la bonne heure !!!!!!

    au plaisir
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

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

Discussions similaires

  1. Verrouiller une plaque de cellule dynamique dans un classeur partagé
    Par Nicko29 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 09/02/2015, 14h47
  2. Réponses: 1
    Dernier message: 26/09/2013, 14h05
  3. Fusion de cellules (fixes) dans TStringGrid
    Par pjtuloup dans le forum C++Builder
    Réponses: 0
    Dernier message: 03/06/2010, 14h08
  4. Récupérer la cellule sélectionne dans un tableau
    Par mongilotti dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 10/05/2010, 13h51
  5. remplir des cellules fixes dans une colone
    Par tahri_1989 dans le forum Bases de données
    Réponses: 1
    Dernier message: 11/01/2006, 16h06

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