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 :

Extraction automatique de données


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 12
    Points : 8
    Points
    8
    Par défaut Extraction automatique de données
    Bonjour à tous,

    Voilà je me suis fait un petit tableau Excel dans lequel le fait de rentrer une valeur dans une cellule (par exemple "B1") modifie une multitude de données (par le biais de formules)se trouvant bien évidemment dans d'autres cellules (par exemple "C3" et "C4").

    Il se trouve que j'ai environ 150 valeurs à rentrer dans "B1", et je voudrai, à chaque valeur de "B1", copier et coller "C3" et "C4" dans un nouvel onglet, pour en faire une sorte de synthèse.

    Mes capacités en VBA me limitent terriblement et je ne me sent pas non plus d'attaque pour le faire à la main...

    Si il y a quelqu'un pour m'aider, je suis preneur...

    merci d'avance

    A+

  2. #2
    Expert éminent Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Points : 9 548
    Points
    9 548
    Par défaut
    Bonjour,
    il faudrait savoir si tu executes ton code à partir d'un bouton ou d'un évènement de la feuille (ex : evenement change), dans quelles cellules de la nouvelle feuille veux-tu copier les données de c3, c4, etc.,

  3. #3
    Membre expérimenté Avatar de laetitia
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    1 281
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 281
    Points : 1 512
    Points
    1 512
    Par défaut
    bonjour beast l'ami casefayere le forum par une evenementiel peut etre mais il faut savoir comment on les ranges + savoir si on exporte que les valeurs ect..
    un ex: basique

    Option Explicit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Application.Intersect(Target, Range("b1")) Is Nothing Then
    Range("c3").Copy Destination:=Sheets(2).Range("A65536").End(xlUp)(2)
    Range("c4").Copy Destination:=Sheets(2).Range("b65536").End(xlUp)(2)
    End If
    End Sub

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 9
    Points : 10
    Points
    10
    Par défaut
    Bonjour !
    Je ne suis pas sure d'avoir tout compris mais voici une proposition de code (mais il faut appeler ce code, par un bouton, par exemple, voir à la fin du post) :
    Il ouvre à chaque fois une feuille, du nom de la valeur attribuée à B1 et y place les valeurs de B1, C3 et C4.

    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
    Sub essai()
     
    Valeur = InputBox("Valeur de B1")
    Range("B1").Value = Valeur
     
    C3 = Range("C3").Value
    C4 = Range("C4").Value
    Sheets.Add
    ActiveSheet.Name = "" & Valeur
    Range("A1").Value = "B1="
    Range("B1").Value = Valeur
    Range("A2").Value = "C3="
    Range("A3").Value = "C4="
    Range("B2").Value = C3
    Range("B3").Value = C4
    Sheets(1).Select
     
    End Sub
    Pour le bouton d'appel de ce code, voici une proposition de code à mettre en feuille 1 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub nouvelle_valeur()
    'Nouveau bouton pour entrer les valeurs de B1
     
    ActiveSheet.Buttons.Add(9.75, 3.75, 87.75, 36).Select
    Selection.OnAction = "essai"
    ActiveSheet.Shapes("Button 1").Select
    Selection.Characters.Text = "Nouvelle valeur"
     
    End Sub
    J'espère avoir pu t'aider.

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 12
    Points : 8
    Points
    8
    Par défaut
    Merci à tous pour vos réponses,

    En fait, pour préciser un peu les choses, peu importe où les données vont être copiées.

    L'idée directrice de la macro est de faire tourner mes 150 valeurs dans la cellule B1 et de copier à chaque fois les cellules C3 et C4 pour faire une sorte de listing.
    L'objectif est que je n'ai pas à rentrer à la main les 150 valeurs et copier-coller à chaque fois les cellules C3 et C4...

    Je pense qu'il doit y avoir une boucle derrière ça mais je ne vois pas comment l'appliquer

    J'espère avoir été un peu plus clair dans mes explications

    Encore un grand merci à vous

  6. #6
    Membre expérimenté Avatar de laetitia
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    1 281
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 281
    Points : 1 512
    Points
    1 512
    Par défaut
    re le fil tes 150 valeurs c'est quoi!! une idee je rentre en b1 de 1 a 150 avec une boucle

    Option Explicit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sub essai()
    Dim i As Byte
    For i = 1 To 150
    [b1] = i
    Next i
    End Sub

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 9
    Points : 10
    Points
    10
    Par défaut
    re
    désolée pour le code précédent. Je croyais que tu voulais créer un nouvel onglet pour chaque nouvelle valeur de B1.
    Les valeurs contenues dans c3 et c4 peuvent-elles être entrées dans un seul onglet les unes à la suite des autres ? ou dans deux colonnes différentes ?

  8. #8
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 12
    Points : 8
    Points
    8
    Par défaut
    En fait, données de C3 peuvent être mis sur une colonne et celle de C4 sur une autre (celle d'à coté)

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

    Informations forums :
    Inscription : Mars 2009
    Messages : 9
    Points : 10
    Points
    10
    Par défaut
    Autre proposition : B1, C3 et C4 sont sur un onglet appelé "Feuil1" et le récapitulatif de tes valeurs vont se mettre sur un onglet appelé "Données".

    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
    Sub essai()
    Sheets.Add
    ActiveSheet.Name = "Données"
    Sheets("Feuil1").Activate
     For i = 1 To 150
    Valeur = InputBox("Valeur de B1")
    Range("B1").Value = Valeur
     
    C3 = Range("C3").Value
    C4 = Range("C4").Value
    Sheets("Données").Activate
    Range("A1").Value = "Valeurs B1"
    Range("B1").Value = "Valeur C3"
    Range("C1").Value = "Valeur C4"
    [A1].End(3).Select
    ActiveCell.Offset(1, 0).Select
    Selection.Value = Valeur
    ActiveCell.Offset(0, 1).Select
    Selection.Value = C3
    ActiveCell.Offset(0, 1).Select
    Selection.Value = C4
    Sheets("Feuil1").Activate
    Next i
     
     
    End Sub
    J'espère avoir pu t'aider...

    Edit: Zut.
    C'est la première fois que je veux aider sur le forum mais ça ne me réussit pas.
    Je suis désolée il y a une erreur dans le code à la ligne :
    [A1].End(3).Select
    Je cherche à la modifier.

  10. #10
    Expert éminent Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Points : 9 548
    Points
    9 548
    Par défaut
    tu sais Nanou, le premier code à Laetitia suffisait largement, il ne reste plus qu'a savoir ou sont les 150 valeurs (à mon avis)

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 9
    Points : 10
    Points
    10
    Par défaut
    OK
    Bon, tant pis...
    Pour finir, je veux quand même dire qu'il faut remplacer la ligne :
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheets("Données").Range("A6000").End(xlUp).Select
    Voilà !

  12. #12
    Membre expérimenté Avatar de laetitia
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    1 281
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 281
    Points : 1 512
    Points
    1 512
    Par défaut
    re, si je peus me permettre je vais le faire a la facon de mon ami ucfoutu.
    que veus tu faire excatement comme cela on va pas avancer developpe un peu plus eventuellement zip une partie de ton fichier sans donnees confid...
    pour voir tes besoins!! avec explications!!!!

Discussions similaires

  1. Réponses: 3
    Dernier message: 22/12/2006, 18h10
  2. [MySQL] Suppression automatique des données
    Par Angelik dans le forum PHP & Base de données
    Réponses: 10
    Dernier message: 14/12/2006, 23h06
  3. Réponses: 5
    Dernier message: 20/07/2006, 17h01
  4. extraction d'une donnée d'une chaine de caractères.
    Par LESOLEIL dans le forum Langage
    Réponses: 10
    Dernier message: 20/04/2006, 13h00
  5. Réponses: 2
    Dernier message: 27/03/2006, 22h17

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