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 :

Liste de données à traiter


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Inscrit en
    Octobre 2007
    Messages
    111
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 111
    Points : 48
    Points
    48
    Par défaut Liste de données à traiter
    Bonjour,
    j'ai une feuille sous Excel où j'ai une liste de prénom.
    Il faut que je liste la feuille et que je verifie, pour chaque ligne, si une donnée est presente
    Si c'est le cas, je dois rapatrier qq données de la ligne dans une 2eme feuille
    qq'un aurait une idée?

  2. #2
    Inactif  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 054
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 054
    Points : 2 416
    Points
    2 416
    Par défaut
    bon, des idées ont en a plein...
    S'agirai seulement d'avoir un peu plus de précision.
    Toutefois tu devrais commencé par des boucles sur les endroit où pourrait éventuellement se trouvé des données et ensuite faire un transfert, toutes opérations qui en soit ne sont pas compliquées.
    Crée un début de code et ensuite montre nous les éventuels problèmes.
    A+

  3. #3
    Membre du Club
    Inscrit en
    Octobre 2007
    Messages
    111
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 111
    Points : 48
    Points
    48
    Par défaut
    Voici le code que j'ai fait mais qui ne fonctionne pas

    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 Macro1()
    Dim FL1 As Worksheet
    Dim FL2 As Worksheet
    Dim Plage As Range
    Dim Cell As Range
     
    Set FL1 = Worksheets("Tab saisie")
    Set FL2 = Worksheets("Synthèse")
     
    'FL1.Columns("BG").Activate
     
    Set Plage = FL1.Range(Cells(BG, 1))
        For Each Cell In Plage
     
            FL2.Cells(14, 1) = FL1.Range(Cells(BG, 1))
     
        Next
    End Sub
    Tab saisie: c'est mon premier tableau ou je dois verifier la colonne BG si la donnée 1 est présente
    Synthese: je dois y inserer à partir de la colonne 49,B les nom et prenom present ds le 1er tableau

  4. #4
    Inactif  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 054
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 054
    Points : 2 416
    Points
    2 416
    Par défaut
    1°)où est initialisé BG ou bien c'est quoi.
    2°) Quand tu met du code tu doit le mettre entre les balises Code
    Sélectionné le code et clic sur # au dessus de l'éditeur
    3°) Aucun test pour voir s'il y a une donnée valable n'est présente.
    edit: oublie le 1°) je vois pour la suite

  5. #5
    Inactif  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 054
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 054
    Points : 2 416
    Points
    2 416
    Par défaut
    Une approche
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Set Plage = FL1.Range("BG:" & Range("BG65536").End(xlUp).Row)
       For Each Cell In Plage
              If Cell <> "" Then
                   FL2.Cells(14, 1) = Cel
              End If
        Next
    Mais je suppose que tu doit transférer plus de données, explique

    EDIT:
    tu assigne
    adres = Adresse(FL1, Cell, Cell.Offset(0, 1))
    avant d'avoir initialisé FL1, bien que la ligne ne veux rien dire et qu'elle va te donné une erreur
    Combien de données ligne doivent être transférées sur la feuille 2 et où

  6. #6
    Membre du Club
    Inscrit en
    Octobre 2007
    Messages
    111
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 111
    Points : 48
    Points
    48
    Par défaut
    Donc, je dois tester dans la colonne BG l'existence de la donnée 1
    Si elle existe cela signifie que cette personne a eu une promotion et a change de statut (passage au statut cadre par exemple)
    Donc, je dois recuperer, le nom et prenom (colonne H), je dois tester dans la colonne AX son statut ( si cadre dans une colonne, sinon dans une autre) et recuperer le pourcentage de son augmentation de salaire (colonne BC) pour le mettre dans la colonne E dans mon 2eme tableau

  7. #7
    Inactif  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 054
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 054
    Points : 2 416
    Points
    2 416
    Par défaut
    tu aurais un exemple purgé des données confidentielles mais contenant des données farfelues valide pour les test ? et dans le feuilles 2, en manuel, au moins une ou 2 ligne de ce que tu veux
    Si oui, met le dans un poste

  8. #8
    Membre du Club
    Inscrit en
    Octobre 2007
    Messages
    111
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 111
    Points : 48
    Points
    48
    Par défaut
    J'en ai pas
    j'ai que des donnees confidentielles

  9. #9
    Inactif  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 054
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 054
    Points : 2 416
    Points
    2 416
    Par défaut
    Tu copie ton classeur sous un autre nom et tu remplace les données par des donnés fictives....Sinon, je vois pas comment ont pourrait s'en sortir

  10. #10
    Membre du Club
    Inscrit en
    Octobre 2007
    Messages
    111
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 111
    Points : 48
    Points
    48
    Par défaut
    c complique car il y a bcp de choses à changer et d'un point de vu confidentialité, c'est limite

  11. #11
    Inactif  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 054
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 054
    Points : 2 416
    Points
    2 416
    Par défaut
    Si c'est compliqué pour toi, qu'en est-il pour nous alors

  12. #12
    Membre du Club
    Inscrit en
    Octobre 2007
    Messages
    111
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 111
    Points : 48
    Points
    48
    Par défaut
    Voila ce que j'ai reussi à faire

    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 FL1 As Worksheet
    Dim FL2 As Worksheet
    Dim Plage As Range
    Dim Plage1 As Range
    Dim Cell As Range
    Dim Cell1 As Range
     
     
    Set FL1 = Worksheets("Tab saisie")
    Set FL2 = Worksheets("Synthèse")
     
    'FL1.Columns("BG").Activate
     
    Set Plage = FL1.Range("BG:BG")
    Set Plage1 = FL1.Range("H:H")
     
       For Each Cell In Plage
              If Cell = 1 Then
                    i = 48
                   FL2.Range("2:i") = FL1.Range("H:Indice")
                   i = i + 1
              End If
       Next

    ça me verifie bien si la donnée est egale à 1
    ce que je ne sais pas, c'est comment recuperer le numero de la ligne
    si j'y arrive, je pense reussir à regler mon probleme

  13. #13
    Membre éprouvé
    Avatar de fred65200
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    901
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 901
    Points : 1 207
    Points
    1 207
    Par défaut
    bonjour
    cette ligne de code ne doit pas donner ce que tu veux
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    FL2.Range("2:i") = FL1.Range("H:Indice")
    remplace la par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    FL2.Range("B:" & i) = FL1.Range("H:" & Indice)' ton i est toujours égale à 48,'
    vérifie si tu veux bien B
    il me semble quedevrait être placé avant la boucle.

    cordialement

  14. #14
    Membre du Club
    Inscrit en
    Octobre 2007
    Messages
    111
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 111
    Points : 48
    Points
    48
    Par défaut
    Merci beaucoup
    en fait indice doit etre egale à la ligne auquel il a trouve 1
    sais tu comment faire pour qie Indice soit egale à cette valeur?

  15. #15
    Inactif  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 054
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 054
    Points : 2 416
    Points
    2 416
    Par défaut
    Bonjour à tous,
    Avec un bout de code ça va déjà mieux bien que c'est pas encore bien clair
    Si j'ai bien compris..
    Le premier échange commence à la ligne 48 et est incrémenté, alors ton i=48 est mal placé.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Set Plage = FL1.Range("BG:BG")
    Set Plage1 = FL1.Range("H:H")
       i = 48
     
       For Each Cell In Plage
              If Cell = 1 Then
                      indice = Cell.Row
                      FL2.Range("2" & i) = FL1.Range("H" & Indice)
                   i = i + 1
              End If
       Next
    Un essai et tu dit

  16. #16
    Membre du Club
    Inscrit en
    Octobre 2007
    Messages
    111
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 111
    Points : 48
    Points
    48
    Par défaut
    J'ai essaye
    je recupere bien indice dans mon cas, le premier cas où je trouve cell = 1 est à la ligne 15
    ici, donc pas de probleme indice=15
    par contre pour la ligne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    FL2.Range("2" & i) = FL1.Range("H" & Indice)
    j'ai ce matin d'erreur:
    Erreur d'exécution '1004'
    La Méthode 'Range' de l'objet '_Worksheet' a échoué

    Qu'est que cela signifie svp?

  17. #17
    Membre du Club
    Inscrit en
    Octobre 2007
    Messages
    111
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 111
    Points : 48
    Points
    48
    Par défaut
    C'est bon, j'ai tout resolu
    Merci beaucoup

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

Discussions similaires

  1. [VBA-Exel2003]liste de données et formulaires
    Par stargates dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 13/08/2006, 20h53
  2. [VB] Envoyer une liste de données du serveur au client
    Par splouf dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 31/03/2006, 18h36
  3. [CR11]Formule et liste de données
    Par azertyuia dans le forum Formules
    Réponses: 4
    Dernier message: 15/03/2005, 12h14
  4. Limiter les 30dernière liste de données?
    Par SkyDev dans le forum Langage SQL
    Réponses: 11
    Dernier message: 08/03/2004, 17h01

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