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 de données d'un fichier vers un autre


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 117
    Par défaut Extraction de données d'un fichier vers un autre
    Bonjour,

    Je voudrai extraire des données issues d'un fichier (Plan d'action SMQ) vers un autre (Tableau de suivi actions) et celà sous certaines conditions (je joins le fichier word explicatif).

    J'ai rédigé ce code mais je pense qu'il ne fonctionnera pas. Pouvez-vous m'aider ?

    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
    32
    33
    34
    35
    Private Sub CommandButton1_Click()
    Dim Wb As Workbook
    Feuil1.Select  'Feuil1(nom de gauche en projet)
    Chemin = "G:\S - ISO\"
    Fichier = TextBox1.Text & ".xls"
    On Error Resume Next
    Set Wb = GetObject(Chemin & Fichier)
    If Err <> 0 Then MsgBox "Fichier Absent": Exit Sub
     
    Workbooks.Open (fichierAOuvrir)
    Set Wb = ActiveWorkbook
    Windows(WbPrincipal.Name).Activate
        With Wb.Sheets("Feuil1")
        For k = 10 To .[A65536].End(3).Row
            If .Range("A" & k) <> "" Then
            lig = [I65536].End(3).Row + 1
                If Range("W10").Value = "" Then
                    If Range("U10").Value < aujourdhui() Then GoTo extract
                    End If
                End If
                If Range("AD10").Value = "" Then
                    If Range("AA10").Value < aujourdhui() Then GoTo extract
                    End If
                End If
                Exit Sub
    extract:
            Range("D" & lig).Value = .Range("T" & k).Value
            Range("F" & lig).Value = .Range("A" & k).Value
            Range("G" & lig).Value = .Range("G" & k).Value
            Range("H" & lig).Value = .Range("P" & k).Value
            Range("I" & lig).Value = .Range("M" & k).Value
            Range("J" & lig).Value = .Range("H" & k).Value
            Range("J" & lig).Value = .Range("O" & k).Value
            End If
        Next
    Fichiers attachés Fichiers attachés

  2. #2
    Membre Expert Avatar de rvtoulon
    Homme Profil pro
    Agent Technique
    Inscrit en
    Mars 2009
    Messages
    1 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Agent Technique
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 042
    Par défaut
    bonjour,
    J'ai rédigé ce code mais je pense qu'il ne fonctionnera pas.
    l'as tu essayé?
    apparemment non, comment on fait nous pour savoir?
    essaye le et dit nous ou sa bloque

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 117
    Par défaut
    Bjr rvtoulon

    cela bloque dans le mot "aujourdhui" de la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Range("U10").Value < aujourdhui() Then GoTo extract
    Merci.

  4. #4
    Membre Expert Avatar de rvtoulon
    Homme Profil pro
    Agent Technique
    Inscrit en
    Mars 2009
    Messages
    1 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Agent Technique
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 042
    Par défaut
    slt essaye en remplaçant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Range("U10").Value < aujourdhui() Then GoTo extract
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Range("U10").Value < Date Then GoTo extract
    ou Date donne la date du jour.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 117
    Par défaut
    Merci rvtoulon j'ai modifié en même temps j'ai repris tout le code et voici le nouveau malheureusement il me marque :
    Erreur de compilation End sub attendu
    et me met en surbrillance la lettre "O" dans la ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("J" & lig).Value = .Range("O" & k).Value

  6. #6
    Membre Expert Avatar de rvtoulon
    Homme Profil pro
    Agent Technique
    Inscrit en
    Mars 2009
    Messages
    1 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Agent Technique
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 042
    Par défaut
    j'ai repris tout le code et voici le nouveau
    peux-tu mettre le nouveau code?
    mais ce doit etre une erreur de copie je vois le début de la routine "Private sub ()"
    mais pas le "End Sub" à la fin. l'erreur vient de là tu dois finir la macro par "End Sub"

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 117
    Par défaut
    Ci-joint le code complet :
    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
    32
    Private Sub CommandButton1_Click()
    Dim Wb As Workbook
    Feuil1.Select  'Feuil1(nom de gauche en projet)
    Chemin = "G:\S - ISO\"
    Fichier = TextBox1.Text & ".xls"
    On Error Resume Next
    Set Wb = GetObject(Chemin & Fichier)
    If Err <> 0 Then MsgBox "Fichier Absent": Exit Sub
     
    Workbooks.Open (fichierAOuvrir)
    Set Wb = ActiveWorkbook
    Windows(WbPrincipal.Name).Activate
        With Wb.Sheets("Feuil1")
        For k = 10 To .[A65536].End(3).Row
            If .Range("A" & k) <> "" Then
            lig = [I65536].End(3).Row + 1
                If Range("W10").Value = "" Then
                    If Range("U10").Value < Date Then GoTo extract
                    End If
                End If
                If Range("AD10").Value = "" Then
                    If Range("AA10").Value < Date Then GoTo extract
                    End If
                Exit Sub
    extract:
            Range("D" & lig).Value = .Range("T" & k).Value
            Range("F" & lig).Value = .Range("A" & k).Value
            Range("G" & lig).Value = .Range("G" & k).Value
            Range("H" & lig).Value = .Range("P" & k).Value
            Range("I" & lig).Value = .Range("M" & k).Value
            Range("J" & lig).Value = .Range("H" & k).Value
            Range("J" & lig).Value = .Range("O" & k).Value

  8. #8
    Membre Expert Avatar de rvtoulon
    Homme Profil pro
    Agent Technique
    Inscrit en
    Mars 2009
    Messages
    1 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Agent Technique
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 042
    Par défaut
    slt, termine ton code comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     Range("J" & lig).Value = .Range("O" & k).Value
    End Sub 'Si tu met pas ceci il ce produit ton erreur
    de plus peut-être peux-tu remplacer ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    If Range("W10").Value = "" Then
                    If Range("U10").Value < Date Then GoTo extract
                    End If
                End If
    par ceci par exemple qui a mon sens veux dire la même chose, si la premiere condition est remplie et si la deuxieme est aussi remplie alors je vais à extract:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Range("W10").Value = "" And Range("U10").Value < Date Then GoTo extract
    idem pour les lignes d'en dessous

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 117
    Par défaut
    Revoici le code modifié en fonction de tes conseils

    Le message d'erreur suivant apparaît :
    Code complet modifié
    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
    Private Sub CommandButton1_Click()
    Dim Wb As Workbook
    Feuil1.Select  'Feuil1(nom de gauche en projet)
    Chemin = "G:\S - ISO\"
    Fichier = TextBox1.Text & ".xls"
    On Error Resume Next
    Set Wb = GetObject(Chemin & Fichier)
    If Err <> 0 Then MsgBox "Fichier Absent": Exit Sub
     
    Workbooks.Open (fichierAOuvrir)
    Set Wb = ActiveWorkbook
    Windows(WbPrincipal.Name).Activate
        With Wb.Sheets("Feuil1")
        For k = 10 To .[A65536].End(3).Row
            If .Range("A" & k) <> "" Then
            lig = [I65536].End(3).Row + 1
                If Range("W10").Value = "" And Range("U10").Value < Date Then GoTo extract
                If Range("AD10").Value = "" Then
                    If Range("AA10").Value < Date Then GoTo extract
                    End If
                Exit Sub
    extract:
            Range("D" & lig).Value = .Range("T" & k).Value
            Range("F" & lig).Value = .Range("A" & k).Value
            Range("G" & lig).Value = .Range("G" & k).Value
            Range("H" & lig).Value = .Range("P" & k).Value
            Range("I" & lig).Value = .Range("M" & k).Value
            Range("J" & lig).Value = .Range("H" & k).Value
            Range("J" & lig).Value = .Range("O" & k).Value
    End Sub

  10. #10
    Membre Expert Avatar de rvtoulon
    Homme Profil pro
    Agent Technique
    Inscrit en
    Mars 2009
    Messages
    1 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Agent Technique
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 042
    Par défaut
    essaye en remplaçant ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    If .Range("A" & k) <> "" Then
            lig = [I65536].End(3).Row + 1
                If Range("W10").Value = "" And Range("U10").Value < Date Then GoTo extract
                If Range("AD10").Value = "" Then
                    If Range("AA10").Value < Date Then GoTo extract
                    End If
                Exit Sub
    par:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    If .Range("A" & k) <> "" Then
         lig = [I65536].End(3).Row + 1
           If Range("W10").Value = "" And Range("U10").Value < Date Then GoTo extract
           If Range("AD10").Value = "" And Range("AA10").Value < Date Then GoTo extract
           Exit Sub
    End If 'il faut finir ton 1er bloc If par End If

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 117
    Par défaut
    OK modifications faites voir ci-dessous le code complet mais cette fois il me marque l'anomalie :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Erreur de compilation : For sans Next
    Code complet :
    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
    Private Sub CommandButton1_Click()
    Dim Wb As Workbook
    Feuil1.Select  'Feuil1(nom de gauche en projet)
    Chemin = "G:\S - ISO\"
    Fichier = TextBox1.Text & ".xls"
    On Error Resume Next
    Set Wb = GetObject(Chemin & Fichier)
    If Err <> 0 Then MsgBox "Fichier Absent": Exit Sub
     
    Workbooks.Open (fichierAOuvrir)
    Set Wb = ActiveWorkbook
    Windows(WbPrincipal.Name).Activate
        With Wb.Sheets("Feuil1")
        For k = 10 To .[A65536].End(3).Row
            If .Range("A" & k) <> "" Then
            lig = [I65536].End(3).Row + 1
                If Range("W10").Value = "" And Range("U10").Value < Date Then GoTo extract
                If Range("AD10").Value = "" And Range("AA10").Value < Date Then GoTo extract
                Exit Sub
            End If
    extract:
            Range("D" & lig).Value = .Range("T" & k).Value
            Range("F" & lig).Value = .Range("A" & k).Value
            Range("G" & lig).Value = .Range("G" & k).Value
            Range("H" & lig).Value = .Range("P" & k).Value
            Range("I" & lig).Value = .Range("M" & k).Value
            Range("J" & lig).Value = .Range("H" & k).Value
            Range("J" & lig).Value = .Range("O" & k).Value
    End Sub

  12. #12
    Membre Expert Avatar de rvtoulon
    Homme Profil pro
    Agent Technique
    Inscrit en
    Mars 2009
    Messages
    1 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Agent Technique
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 042
    Par défaut
    slt
    j'ai revu ton premier code et je n'ai pas fait attention: il manque le next pour fermer la boucle for et le End with.
    donc remplace tout ceci:
    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
    With Wb.Sheets("Feuil1")
        For k = 10 To .[A65536].End(3).Row        If .Range("A" & k) <> "" Then
            lig = [I65536].End(3).Row + 1
                If Range("W10").Value = "" And Range("U10").Value < Date Then GoTo extract
                If Range("AD10").Value = "" And Range("AA10").Value < Date Then GoTo extract
                Exit Sub
            End If
    extract:
            Range("D" & lig).Value = .Range("T" & k).Value
            Range("F" & lig).Value = .Range("A" & k).Value
            Range("G" & lig).Value = .Range("G" & k).Value
            Range("H" & lig).Value = .Range("P" & k).Value
            Range("I" & lig).Value = .Range("M" & k).Value
            Range("J" & lig).Value = .Range("H" & k).Value
            Range("J" & lig).Value = .Range("O" & k).Value
    End Sub
    par tout cela:
    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
    With Wb.Sheets("Feuil1")
        For k = 10 To .[A65536].End(3).Row
            If .Range("A" & k) <> "" Then
            lig = [I65536].End(3).Row + 1
                If Range("W10").Value = "" And Range("U10").Value < Date Then GoTo extract
                If Range("AD10").Value = "" And Range("AA10").Value < Date Then GoTo extract
                Exit Sub
     
    extract:
            Range("D" & lig).Value = .Range("T" & k).Value
            Range("F" & lig).Value = .Range("A" & k).Value
            Range("G" & lig).Value = .Range("G" & k).Value
            Range("H" & lig).Value = .Range("P" & k).Value
            Range("I" & lig).Value = .Range("M" & k).Value
            Range("J" & lig).Value = .Range("H" & k).Value
            Range("J" & lig).Value = .Range("O" & k).Value
            End If
        Next k
    End With
    End Sub

  13. #13
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 117
    Par défaut
    La avec le dernier code il n'y a plus de message d'erreur sauf que maintenant il me copie aucune valeur issues du fichier Plan d'action SMQ

    Je joint les deux fichiers. C'est dans le fichier Suivi des actions en retards que je saisi le nom du fichier intitulé Plan d'action SMQ par l'intermédiaire du bouton.

    Mais les deux lignes ne sont pas recopiées dans le fichier Suivi des actions en retards.
    Fichiers attachés Fichiers attachés

  14. #14
    Membre Expert Avatar de rvtoulon
    Homme Profil pro
    Agent Technique
    Inscrit en
    Mars 2009
    Messages
    1 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Agent Technique
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 042
    Par défaut
    j'ai ouvert tes fichierset j'ai essayé de mettre ton code à jour.
    remplace le code de ton bouton par celui 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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    Private Sub CommandButton1_Click()
    Dim Wb1 As Workbook, wb2 As Workbook, Chemin As String, Fichier As String
    Dim wb As Workbook
     
    Application.ScreenUpdating = False
     
    'j'initialize le premier classeur ici: tableau suivi action en retard
    Set Wb1 = ThisWorkbook
     
    'j'indique le chemin et le nom du deuxième classeur
    Chemin = "G:\S - ISO\"
    Fichier = Chemin & TextBox1.Text & ".xls"
     
    On Error Resume Next
     
    'je vérifie si le classeur est présent
    Set wb = GetObject(Fichier)
    If Err <> 0 Then MsgBox "Fichier Absent": Exit Sub
     
    'j'ouvre le classeur: plan d'actions SMQ
    Workbooks.Open Fichier
     
    'j'initialize le deuxieme classeur
    Set wb2 = ActiveWorkbook
     
    lig = Wb1.Sheets("Feuil1").[D65536].End(3).Row + 1
     
        With wb2.Sheets("Feuil1")
        For k = 10 To .[A65536].End(3).Row
            If .Range("A" & k) <> "" Then
                'si les conditions sont remplies alors je vais à extract
                If Range("W10").Value = "" And Range("U10").Value < Date Then GoTo extract
                If Range("AD10").Value = "" And Range("AA10").Value < Date Then GoTo extract
                Exit Sub
     
    extract:
     
            Wb1.Sheets("Feuil1").Range("D" & lig).Value = .Range("T" & k).Value
            Wb1.Sheets("Feuil1").Range("F" & lig).Value = .Range("A" & k).Value
            Wb1.Sheets("Feuil1").Range("G" & lig).Value = .Range("G" & k).Value
            Wb1.Sheets("Feuil1").Range("H" & lig).Value = .Range("P" & k).Value
            Wb1.Sheets("Feuil1").Range("I" & lig).Value = .Range("M" & k).Value
            Wb1.Sheets("Feuil1").Range("J" & lig).Value = .Range("H" & k).Value
            Wb1.Sheets("Feuil1").Range("J" & lig).Value = .Range("O" & k).Value
            lig = lig + 1
            End If
        Next k
    End With
     
    'je referme le classeur plan d'action sans sauvegarder
    wb2.Close
     
    'j'active le classeur tableau suivi
    Wb1.Sheets("Feuil1").Activate
     
    Application.ScreenUpdating = True
     
    'je referme l'userform
    Unload UserForm1
     
    End Sub

  15. #15
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 117
    Par défaut
    Merci et dsl pour le retour réponse.

    Malheureusement rien ne se passe. Voici le code complet.
    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
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    Fichier = Chemin & TextBox1.Text & ".xls"
     
    On Error Resume Next
     
    'je vérifie si le classeur est présent
    Set wb = GetObject(Fichier)
    If Err <> 0 Then MsgBox "Fichier Absent": Exit Sub
     
    'j'ouvre le classeur: plan d'actions SMQ
    Workbooks.Open Fichier
     
    'j'initialize le deuxieme classeur
    Set wb2 = ActiveWorkbook
     
    lig = Wb1.Sheets("Feuil1").[D65536].End(3).Row + 1
     
        With wb2.Sheets("Feuil1")
        For k = 10 To .[A65536].End(3).Row
            If .Range("A" & k) <> "" Then
                'si les conditions sont remplies alors je vais à extract
                If Range("W10").Value = "" And Range("U10").Value < Date Then GoTo extract
                If Range("AD10").Value = "" And Range("AA10").Value < Date Then GoTo extract
                Exit Sub
     
    extract:
     
            Wb1.Sheets("Feuil1").Range("D" & lig).Value = .Range("T" & k).Value
            Wb1.Sheets("Feuil1").Range("F" & lig).Value = .Range("A" & k).Value
            Wb1.Sheets("Feuil1").Range("G" & lig).Value = .Range("G" & k).Value
            Wb1.Sheets("Feuil1").Range("H" & lig).Value = .Range("P" & k).Value
            Wb1.Sheets("Feuil1").Range("I" & lig).Value = .Range("M" & k).Value
            Wb1.Sheets("Feuil1").Range("J" & lig).Value = .Range("H" & k).Value
            Wb1.Sheets("Feuil1").Range("J" & lig).Value = .Range("O" & k).Value
            lig = lig + 1
            End If
        Next k
    End With
     
    'je referme le classeur plan d'action sans sauvegarder
    wb2.Close
     
    'j'active le classeur tableau suivi
    Wb1.Sheets("Feuil1").Activate
     
    Application.ScreenUpdating = True
     
    'je referme l'userform
    Unload UserForm1
    End Sub

  16. #16
    Membre Expert Avatar de rvtoulon
    Homme Profil pro
    Agent Technique
    Inscrit en
    Mars 2009
    Messages
    1 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Agent Technique
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 042
    Par défaut
    bonjour, le dernier code que je t'ai donné fonctionne parfaitement avec tes fichiers mis en ligne.
    j'ai mis tes fichiers dans le même dossier et les lignes sont copiées/collées.

    tu dis:
    Malheureusement rien ne se passe


    Examine ton code en appuyant sur F8 pour voir le déroulement pas à pas du code et voir pourquoi rien ne se passe.

    de plus le code que tu as mis n'est pas complet..... tu as fait un copier coller partiel du code que je t'ai mis.

    je répète : Remplace le code complet de ton bouton OK par le code que j'ai mis précédemment.

    si tu ne dis pas ce qui ne vas pas je ne serais pas en mesure de t'aider plus car comme je te l'ai dis ce code fonctionne avec tes fichiers.

  17. #17
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Bonsoir
    Sans l'userform et directement à partir du bouton de ta feuille (j'ai éliminé le chemin en dur dans le 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
    32
    33
    34
    35
    Private Sub CommandButton1_Click()
    Dim aWb As Workbook, Wb As Workbook
    Dim Fichier As Variant
    Dim k As Long, Lig As Long
     
    Application.ScreenUpdating = False
    Fichier = Application.GetOpenFilename("Excel Files (*.xls), *.xls")
    If Fichier <> False Then
        Set aWb = ThisWorkbook
        Set Wb = Workbooks.Open(Fichier)
        Lig = aWb.Sheets("Feuil1").[D65536].End(3).Row + 1
        With Wb.Sheets("Feuil1")
            For k = 10 To .[A65536].End(3).Row
                If .Range("A" & k) <> "" Then
                    If (.Range("W" & k).Value = "" And .Range("U" & k).Value < Date) Or (.Range("AD" & k).Value = "" And .Range("AA" & k).Value < Date) Then
                        aWb.Sheets("Feuil1").Range("D" & Lig).Value = .Range("T" & k).Value
                        aWb.Sheets("Feuil1").Range("F" & Lig).Value = .Range("A" & k).Value
                        aWb.Sheets("Feuil1").Range("G" & Lig).Value = .Range("G" & k).Value
                        aWb.Sheets("Feuil1").Range("H" & Lig).Value = .Range("P" & k).Value
                        aWb.Sheets("Feuil1").Range("I" & Lig).Value = .Range("M" & k).Value
                        aWb.Sheets("Feuil1").Range("J" & Lig).Value = .Range("H" & k).Value
                        aWb.Sheets("Feuil1").Range("J" & Lig).Value = .Range("O" & k).Value
                        Lig = Lig + 1
                    End If
                End If
            Next k
        End With
        Wb.Close
        Set Wb = Nothing
        Set aWb = Nothing
        MsgBox "Extraction terminée"
    Else
        MsgBox "Action annulée"
    End If
    End Sub

  18. #18
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 117
    Par défaut
    Bonjour et merci rvtoulon et mercatog pour votre aide.

    Les conditions suivantes sont ok et fonctionnent
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    If Range("W10").Value = "" And Range("U10").Value < Date Then GoTo extract
                If Range("AD10").Value = "" And Range("AA10").Value < Date Then GoTo extract
    J'aimerai suite à une demande rajouter d'autres conditions mais ça plante avec les "OR". Merci de votre aide.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    If Range("W10").Value <> "" And Range("M10").Value = "Audit blanc ISO" or "Audit blanc IFS" or "Audit blanc BRC" or "Audit interne ISO" or "Audit interne IFS" or "Audit interne BRC" or "Audit Certif ISO" or "Audit Certif IFS" or "Audit Certif BRC" And Range ("AD10").Value = "" And Range ("AA10").Value < Date Then GoTo extract
     
     If Range("W10").Value <> "" And Range("M10").Value = "Audit blanc ISO" or "Audit blanc IFS" or "Audit blanc BRC" or "Audit interne ISO" or "Audit interne IFS" or "Audit interne BRC" or "Audit Certif ISO" or "Audit Certif IFS" or "Audit Certif BRC" And Range ("AA10").Value = "" Then GoTo extract
     
    If Range("U10").Value = "" Then GoTo extract

  19. #19
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Déjà une première précision :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Range("W10").Value <> "" And Range("M10").Value = "Audit blanc ISO" or "Audit blanc IFS"
    ne peut pas fonctionner. Après chaque "Or", il faut répéter Range("M10").Value =

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Range("W10").Value <> "" And Range("M10").Value = "Audit blanc ISO" or Range("M10").Value = "Audit blanc IFS"
    Vérifier ensuite, car les "And" et "Or" successifs peuvent parfois poser des problèmes.
    Dernière modification par Invité ; 15/11/2010 à 16h38.

  20. #20
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 117
    Par défaut
    Merci Jacques Jean pour ta réponse et j'ai apporté les modifications
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    If Range("W10").Value <> "" And Range("M10").Value = "Audit blanc ISO" Or Range("M10").Value = "Audit blanc IFS" Or Range("M10").Value = "Audit blanc BRC" Or Range("M10").Value = "Audit interne ISO" Or Range("M10").Value = "Audit interne IFS" Or Range("M10").Value = "Audit interne BRC" Or Range("M10").Value = "Audit Certif ISO" Or Range("M10").Value = "Audit Certif IFS" Or Range("M10").Value = "Audit Certif BRC" And Range("AD10").Value = "" And Range("AA10").Value < Date Then GoTo extract
    If Range("W10").Value <> "" And Range("M10").Value = "Audit blanc ISO" Or Range("M10").Value = "Audit blanc IFS" Or Range("M10").Value = "Audit blanc BRC" Or Range("M10").Value = "Audit interne ISO" Or Range("M10").Value = "Audit interne IFS" Or Range("M10").Value = "Audit interne BRC" Or Range("M10").Value = "Audit Certif ISO" Or Range("M10").Value = "Audit Certif IFS" Or Range("M10").Value = "Audit Certif BRC" And Range("AA10").Value = "" Then GoTo extract
    Le problème il ne tiend pas compte de ces deux conditions. Voici les conditions à respecter :
    1) si il n'y a pas de date en U10 on recopie la ligne conformément à l'extraction

    2) si il y a une date en U10 et que celle-ci est < à aujourd'hui et qu'en W10 il n'y a pas de date, on recopie la ligne conformément à l'extraction. (si U10 la date est > à aujourd'hui et qu'en W10 il n'y a pas de date, on passe à l'analyse de la ligne suivante sans recopier)

    3) si il y a une date en U10 et que celle-ci < à aujourd'hui et qu'en W10 la date est saisie (peu importe si elle est < ou pas à aujourd'hui), on vérifie si M10 = audit blanc ISO,... et si le contenu correspond on vérifie si il y a une date en AA10, si ce n'est pas le cas, on recopie la ligne conformément à l'extraction

    4) si il y a une date en U10 et que celle-ci < à aujourd'hui et qu'en W10 la date est saisie (peu importe si elle est < ou pas à aujourd'hui), on vérifie si M10 = audit blanc ISO,... et si le contenu correspond on vérifie si il y a une date en AA10, si c'est le cas on vérifie si elle est < à aujourd'hui, si c'est le cas, on vérifie si en AD10 une date est saisie, si c'est pas le cas on recopie la ligne conformément à l'extraction. (si AD10 est complétée on passe à l'analyse de la ligne suivante sans recopier)

    5) si il y a une date en U10 et que celle-ci < à aujourd'hui et qu'en W10 la date est saisie (peu importe si elle est < ou pas à aujourd'hui), on vérifie si M10 = audit blanc ISO,... et si le contenu correspond on vérifie si il y a une date en AA10, si c'est le cas on vérifie si elle est < à aujourd'hui, si c'e n'est pas le cas, on passe à l'analyse de la ligne suivante sans recopier.
    Là je sais plus quoi faire.

Discussions similaires

  1. Réponses: 16
    Dernier message: 13/12/2015, 12h50
  2. Réponses: 2
    Dernier message: 23/01/2015, 23h57
  3. [XL-2007] Transférer des données d'un fichier vers un autre (Espace commun)
    Par capi81 dans le forum Macros et VBA Excel
    Réponses: 78
    Dernier message: 05/09/2014, 20h53
  4. Copier des données d'un fichier vers un autre sans écraser le second
    Par jalons dans le forum Shell et commandes GNU
    Réponses: 10
    Dernier message: 09/04/2013, 20h07
  5. Réponses: 12
    Dernier message: 09/06/2008, 17h54

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