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 SubMAJ: j ai résolu mon problème en remplaçant
UsedRangepar
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 Subj 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.EntireRowMais 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.EntireRowpar
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.