Exporter des données vers un ficher crée

bonjour a tous .je reviens vers vous encore une fois parce que ce forum était toujours à l’écoute avec ses membres réactives . merci à vous

j'ai un petit soucis avec mon code qu me lance un erreur d’exécution '9'. en fait je souhaite copier des lignes de la feuille DATA dont la colonne T est vide vers un autre ficher que je souhaite créer qui s'appel wb_sms_non_envoyes

voici mon code :

Sub extract()

    Dim wb_sms_non_envoyes As Workbook
    Dim nbLignes As Integer
    Dim trig As Integer

    ' récupération nombre lignes non vides
    ' dans la page DATA pour extraire à partir de la ligne suivante
    nbLignes = Sheets("DATA").Range("T104").End(xlUp).Row

       Set wb_sms_non_envoyes = Workbooks.Add

    With wb_sms_non_envoyes
    .SaveAs Filename:=wb.Path & "wb_sms_non_envoyes" & ".xlsx"

    End With

    trig = 0
            ' boucle allant de 1 jusqu'à la dernière ligne non vide de la feuille DATA
            For x = 1 To nbLignes
                ' si la cellule en T1 ... Tx est vide
                ' alors on copie la ligne entière dans le fichier wb_sms_non_envoyes
                If Sheets("DATA").Cells(x, 20).Value = "" Then
                    Sheets("DATA").Cells(x, 20).EntireRow.Copy Destination:=wb_sms_non_envoyes("Feuille1").Cells(nbLignes + 1, 1).Offset(trig, 0).EntireRow
                    trig = trig + 1
                End If
            Next x

End Sub

quelqu'un pourra m'aider s'il vous plait ?

merci par avance

cordialement.

Bonjour,

A partir de cette instruction :

Set wb_sms_non_envoyes = Workbooks.Add

Ton nouveau classeur devient ton classeur actif. Attention donc, quand tu fais référence à Sheets("DATA") qui n'est pas présent sur ce nouveau fichier. Par ailleurs, chez moi les feuilles avant d'être renommées sont du genre "Feuil1" et non "Feuille1".

Bonjour Pedro .et merci pour votre réactivité . en fait j'ai pas bien compris ce qu'il faut exactement changer sur le code . pour le deuxième point je me suis trompé , c'est bien "Feuil1".

cdlt

Pour continuer :

  • Ta variable trig est inutile car elle est égale à x - 1
  • Le type de x n'est pas déclarée
  • Tes syntaxes peuvent être simplifiées

Une proposition à tester :

Sub extract()

    Dim WBsms As Workbook, LigMax As Integer, x As Integer

    ' récupération nombre lignes non vides dans la page DATA pour extraire à partir de la ligne suivante
    With ThisWorkbook.Sheets("DATA")
        nbLignes = .Range("T104").End(xlUp).Row
        Set WBsms = Workbooks.Add
        WBsms.SaveAs Filename:=ThisWorkbook.Path & "\wb_sms_non_envoyes.xlsx"
        ' boucle allant de 1 jusqu'à la dernière ligne non vide de la feuille DATA
            For x = 1 To LigMax
                ' si la cellule en T1 ... Tx est vide alors on copie la ligne entière dans le fichier wb_sms_non_envoyes
                If IsEmpty(.Cells(x, 20)) Then .Rows(x).Copy Destination:=WBsms.Sheets(1).Rows(LigMax + x)
            Next x
    End With

End Sub

pour que je vous facilite la compréhension ci dessous mon fichier et la macro se trouve dans la feuille 1

merci par avance

Bonjour Pedro .et merci pour votre réactivité . en fait j'ai pas bien compris ce qu'il faut exactement changer sur le code . pour le deuxième point je me suis trompé , c'est bien "Feuil1".

cdlt

Lorsque tu ne précises pas le classeur d'un objet, c'est considéré par défaut comme le classeur actif :

Sheets("MaFeuille").Range("A1")
'Revient à écrire :
ActiveWorkbook.Sheets("MaFeuille").Range("A1")

Lorsque tu crées un nouveau classeur avec Workbooks.Add, ce dernier devient le classeur actif. Quand tu écris :

Sheets("DATA").Cells(x, 20)
'Cela revient à :
ActiveWorkbook.Sheets("DATA").Cells(x, 20)
'Ou dit autrement à :
Workbooks("wb_sms_non_envoyes.xlsx").Sheets("DATA").Cells(x, 20)

Or ce nouveau classeur ne comporte pas de feuille appelée "DATA"...

Pour continuer :

  • Ta variable trig est inutile car elle est égale à x - 1
  • Le type de x n'est pas déclarée
  • Tes syntaxes peuvent être simplifiées

Une proposition à tester :

Sub extract()

    Dim WBsms As Workbook, LigMax As Integer, x As Integer

    ' récupération nombre lignes non vides dans la page DATA pour extraire à partir de la ligne suivante
    With ThisWorkbook.Sheets("DATA")
        nbLignes = .Range("T104").End(xlUp).Row
        Set WBsms = Workbooks.Add
        WBsms.SaveAs Filename:=ThisWorkbook.Path & "\wb_sms_non_envoyes.xlsx"
        ' boucle allant de 1 jusqu'à la dernière ligne non vide de la feuille DATA
            For x = 1 To LigMax
                ' si la cellule en T1 ... Tx est vide alors on copie la ligne entière dans le fichier wb_sms_non_envoyes
                If IsEmpty(.Cells(x, 20)) Then .Rows(x).Copy Destination:=WBsms.Sheets(1).Rows(LigMax + x)
            Next x
    End With

End Sub

merci bcp pour votre aide le code marche sans aucun soucis , mais je vois qu'il ne copie rien ???

merci bcp pour votre aide le code marche sans aucun soucis , mais je vois qu'il ne copie rien ???

Je n'ai pas ton fichier sous les yeux pour tester la macro, et pas la possibilité de la tester aujourd'hui de toute façon. Je te conseille de faire l'exécution pas à pas (F8) pour voir ce que fait la macro et les valeurs prises par les variables.

merci bcp pour votre aide le code marche sans aucun soucis , mais je vois qu'il ne copie rien ???

Je n'ai pas ton fichier sous les yeux pour tester la macro, et pas la possibilité de la tester aujourd'hui de toute façon. Je te conseille de faire l'exécution pas à pas (F8) pour voir ce que fait la macro et les valeurs prises par les variables.

Merci infiniment en tout cas .tes précisions été très utiles pour moi.

Merci infiniment en tout cas .tes précisions été très utiles pour moi.

Pas de quoi, n'hésite pas à transmettre la solution du problème si tu la trouve, et a indiquer que ton sujet est résolu.

Si ça ne fonctionne pas malgré tes tentatives, tu devras peut-être patienter un peu (en ce qui me concerne) ou compter sur qqn d'autre.

Merci infiniment en tout cas .tes précisions été très utiles pour moi.

Pas de quoi, n'hésite pas à transmettre la solution du problème si tu la trouve, et a indiquer que ton sujet est résolu.

Si ça ne fonctionne pas malgré tes tentatives, tu devras peut-être patienter un peu (en ce qui me concerne) ou compter sur qqn d'autre.

Oui d'accord , vous inquiétez pas ,merci encore une fois

cdlt

finalement j'ai pu résoudre mon problème ci-dessous le code :

Function sms_non_envoyes()

Dim str As String
Dim Dl2, x As Long
    ' récupération nombre lignes non vides dans la page DATA pour extraire à partir de la ligne suivante
    With ws
    Dl = ws.Range("T" & ws.Rows.Count).End(xlUp).Row

        Set WBsms = Workbooks.Add
        WBsms.SaveAs Filename:=ThisWorkbook.Path & "\SMS NON ENVOYES DU " & Format(Now(), "dd mm yy") & ".xlsx"
        ' boucle allant de 1 jusqu'à la dernière ligne non vide de la feuille DATA
            For x = Dl To 1 Step -1
                Dl2 = WBsms.Sheets(1).Range("A" & ws.Rows.Count).End(xlUp).Row

                ' si la cellule en T1 ... Tx est vide alors on copie la ligne entière dans le fichier wb_sms_non_envoyes
                str = ws.Range("T" & x)
                If ws.Range("T" & x) = "" Then
                ws.Rows(x).Cut Destination:=WBsms.Sheets(1).Rows(Dl2 + 1)
                ws.Rows(x).Delete
                'suppression
                End If
            Next x
    End With
WBsms.Save
WBsms.Close
End Function
Rechercher des sujets similaires à "exporter donnees ficher cree"