Probleme extraction d'une ligne

EDIT: [problème résolu]

Bonjour,

tout d'abord merci pour votre site et les précieuses infos qu'on y trouve. je m'arrache les cheveux depuis deux jours sur cette macro.

Voila ma macro finalisée qui fonctionne:

Sub test()
Dim principal As ThisWorkbook
Dim repertoire As String, fichier As String
    Application.ScreenUpdating = False
    Set principal = ThisWorkbook
    repertoire = "C:\donnees"
    ChDir repertoire
    fichier = Dir("*.xls")
    Do While fichier <> ""
        If fichier <> principal.Name Then
            Workbooks.Open fichier
            On Error GoTo suivant
            With Sheets("INDICATEURS")
                On Error GoTo 0
                On Error Resume Next
                .[A:A].SpecialCells(xlCellTypeBlanks).EntireRow.Delete
                .[A:A].Insert Shift:=xlToRight
                .Range("A1:A" & .[b65536].End(xlUp).Row) = Left(fichier, Len(fichier) - 5)
                .Range([A2], [DL2]).Formula = Range([A2], [DL2]).Value
                .Range([A2], [DL2]).Copy Destination:=principal.Sheets(1).[a65536].End(xlUp).Offset(1)

            End With
            ActiveWorkbook.Close False
        End If
suivant:
        If Err.Number = 9 Then MsgBox "Pas de feuille ""INDICATEURS"" dans le fichier " & fichier, vbExclamation: ActiveWorkbook.Close False
        fichier = Dir
    Loop

End Sub

MAJ: j ai résolu mon problème en remplaçant

UsedRange

par

Range([A2], [DL2])

Je rencontre un autre problème la macro me copie les formules et pas les valeurs.

Voila je souhaite importer dans un fichier les valeurs et non les formules de la ligne 4 (plus precisement la plage ("A4:DL4") des feuilles "INDICATEURS" qui se trouvent dans plusieurs fichiers excel afin de faire un tableau récapitulatif. Lorsque j'utilise la macro de ce post je récupère bien la ligne 4 ("A4:DL4") mais aussi la ligne 3 ("A3:DL3") en plus pour chaque fichier excel, or je ne souhaite récupérer que la ligne 4.

Sub test()
Dim principal As ThisWorkbook
Dim repertoire As String, fichier As String
    Application.ScreenUpdating = False
    Set principal = ThisWorkbook
    repertoire = "C:\donnees"
    ChDir repertoire
    fichier = Dir("*.xls")
    Do While fichier <> ""
        If fichier <> principal.Name Then
            Workbooks.Open fichier
            On Error GoTo suivant
            With Sheets("INDICATEURS")
                On Error GoTo 0
                On Error Resume Next
                .[A:A].SpecialCells(xlCellTypeBlanks).EntireRow.Delete
                .[A:A].Insert Shift:=xlToRight
                .Range("A1:A" & .[b65536].End(xlUp).Row) = Left(fichier, Len(fichier) - 4)
                .UsedRange.Copy Destination:=principal.Sheets(1).[a65536].End(xlUp).Offset(1) [color=#4000FF]j ai essayé avec UsedRange remplacé par Range("A4:DL4") mais ca me fais une page blanche[/color]
            End With
            ActiveWorkbook.Close False
        End If
suivant:
        If Err.Number = 9 Then MsgBox "Pas de feuille ""INDICATEURS"" dans le fichier " & fichier, vbExclamation: ActiveWorkbook.Close False
        fichier = Dir
    Loop

End Sub

j ai essayé aussi:

.Rows("4").Copy Destination:=principal.Sheets(1).[a65536].End(xlUp).Offset(1)

mais ca n'a pas marché

Merci!!

bonjour

de simples = suffisent pour récupérer tes valeurs (il y a donc liaison)

à partir ce fichier plein de = si tu veux figer les valeurs, tu peux faire un pdf, ou bien une macro (enregistreur de macros) qui va copier l'onglet contenant les = et ensuite sur un autre onglet "collage spécial valeurs"

Bonjour,

Merci de vous être penché sur mon problème

Ma priorité c'est de réécrire la macro pour copier uniquement la ligne 4 (ou la plage A4:DL4) des feuilles INDICATEURS de différents fichiers pour l 'importer dans un seul et unique fichier.

Avec la macro comme écrite ci-dessus cela importe pour pour chaque fichier la ligne 3 et la ligne 4. Et je souhaite conserver uniquement la ligne 3 à chaque fois.

re

pourquoi ma solution hyper simple sans macro compliquée ne convient pas ?

Je crois que je n'ai pas bien compris votre solution en fait.

Je vais avoir plusieurs centaines de fichiers qui contiennent l onglet INDICATEURS à traiter, je souhaite automatiser l'import de la ligne 4 de ces onglets INDICATEURS dans une feuille unique dans un seul et unique fichier excel par cette macro.

Et la macro convient presque parfaitement à mes attentes j'ai juste ce problème de copie de ligne. La macro me copie la ligne 3 et 4 des onglets INDICATEURS et je ne souhaite importer seulement le ligne 4 (ou la plage A4:DL4).

Et si j ai bien compris la modification est à faire sur cette ligne du code

UsedRange.EntireRow

Mais quand je la remplace par

Range("A4:DL4")

ou par

Rows("4")

je n'ai aucune donnée qui s'importe

UP!!!

j ai remplacé

UsedRange.EntireRow

par

Range([A2], [DL2])

et la ca semble marcher!!

Je ne sais pas pourquoi les données sont reconnu en ligne 2 alors qu'elles se trouvent qsur la ligne 4 mais ca marche.

Maintenant faut juste que j'arrive à mettre dans le code que c'est les valeurs qu'il faut copier et non les formules.

En tout cas ca avance! =)

Merci pour votre forum grâce auquel j ai pu trouver la grande partie du code VBA!

J'ai résolu mes différents problèmes cf 1er post.

Si un modo passe il peut verrouiller ou supprimer le topic.

Rechercher des sujets similaires à "probleme extraction ligne"