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 :

Problème d'extraction de données


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Superviseur en transport
    Inscrit en
    Août 2019
    Messages
    104
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Superviseur en transport
    Secteur : Transports

    Informations forums :
    Inscription : Août 2019
    Messages : 104
    Par défaut Problème d'extraction de données
    Bonsoir,

    Je tente de faire une macro qui extrait les données de 3 colonnes la "A", "B" et "C" en fonction des valeurs en "D" pour en faire trois autres listes en "E", "F" et "G". Donc les valeurs en "A" qui se retrouve en "D" sont effacé de la liste "A" pour créer une liste "E", "B" en "F" et "C" en "G". Pour la colonnes "A" tout semble fonctionner. La "B" ne fonctionne pas. La "C" se fait extraire la valeur mais n'efface pas la valeur. Pouvez-vous m'aider à trouver ce qui ne vas pas?
    Voici mon code:
    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
    27
    28
    29
    30
    31
    Sub Extrairelesdoublons()
        Dim f1 As Worksheet
        Dim i As Long, DerLig_D As Long, DerLig_E As Long, DerLig_F As Long, DerLig_G As Long
        Dim Valeur As String
        Dim C As Object
     
        Set f1 = Sheets("Calcule")
        Application.ScreenUpdating = False
        DerLig_D = f1.[D100000].End(xlUp).Row
        For i = 3 To DerLig_D
            Valeur = f1.Cells(i, "D")
            Set C = f1.Columns("A:C").Find(Valeur, LookIn:=xlValues, lookat:=xlWhole)
            If Not C Is Nothing Then
                If C.Column = 1 Then
                    DerLig_E = f1.[E100000].End(xlUp).Row
                    f1.Cells(DerLig_E + 1, "E") = f1.Cells(C.Row, "A")
                    f1.Cells(C.Row, "A").Delete
                ElseIf C.Column = 2 Then
                    DerLig_F = f1.[F100000].End(xlUp).Row
                    f1.Cells(DerLig_F + 1, "F") = f1.Cells(C.Row, "B")
                    f1.Cells(C.Row, "B").Delete
                ElseIf C.Column = 3 Then
                    DerLig_G = f1.[G100000].End(xlUp).Row
                    f1.Cells(DerLig_G + 1, "G") = f1.Cells(C.Row, "C")
                    f1.Cells(C.Row, "C").Delete
                End If
            End If
        Next i
        Set f1 = Nothing
        Set C = Nothing
    End Sub

  2. #2
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Bonjour

    Lorsque l'on parcourt de haut en bas en modifiant le nombre des lignes suivantes (ce qui est le cas que ce soit en supprimant ou en ajoutant une/des ligne(s)), on en bouleverse forcément la numérotation.
    Pour éviter cela, on parcourt de bas en haut (For ... to ... step -1)

    Commence par appliquer ce principe

    Je ne suis par ailleurs pas certain d'avoir totalement cerné le but à atteindre, mais appelle à toutes fins ton attention sur le fait que la destruction d'une ligne étant celle des cellules de toutes ses colonnes, tu "perds" par exemple une occurrence en colonne Y d'une valeur qui, déjà trouvée en colonne X, a donné lieu à la suppression de la ligne en cours.

  3. #3
    Membre confirmé
    Homme Profil pro
    Superviseur en transport
    Inscrit en
    Août 2019
    Messages
    104
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Superviseur en transport
    Secteur : Transports

    Informations forums :
    Inscription : Août 2019
    Messages : 104
    Par défaut
    Bonjour,

    Merci unparia pour ta réponse. Je dois t'avouer que je suis encore débutant en VBA. Je comprends ce que tu me dis, mais, je ne sais comment l'appliquer. Pourrais-tu me donné un exemple ou me joindre un tuto qui me permettrais d'apprendre comment formuler afin de partir de bas en haut?

    Pour ce que je tente de faire, je veux 3 colonnes ayant des valeurs entre 600 et 700 qui si, il se retrouve dans une autre colonne spécifique, ces donné sont extraite pour créer trois autres colonnes tout en les effaçant de leur colonne d'origine. J’espère être plus précis.

Discussions similaires

  1. Problème d'extraction de données avec jointure
    Par didier.M dans le forum Développement
    Réponses: 2
    Dernier message: 16/07/2008, 14h28
  2. Problème d'extraction de données sur DD Toshiba
    Par Valentinik35 dans le forum Composants
    Réponses: 2
    Dernier message: 03/06/2008, 21h10
  3. [MySQL] Problème d'extraction de données d'un tableau
    Par cyberdevelopment dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 12/04/2007, 13h11
  4. [XML][tinyXML] Problême d'extraction de données XML ac tinyxml
    Par Jahprend dans le forum Bibliothèques
    Réponses: 1
    Dernier message: 19/03/2007, 09h35
  5. problème d'extraction de données html
    Par spootnic22 dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 01/11/2006, 13h24

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