Ouvrir plusieurs fichiers en même temps
Bonjour !
J’ai un petit problème. Je souhaiterais ouvrir plusieurs fichiers Excel en même temps, contenant un tableau avec des résultats d’analyse et les fusionner pour les mettre dans un seul et même fichier en leurs associants leurs numéros de lot (qui est tout le temps en E11) et leurs numéro de commande (qui est en E14). Il n’y a malheureusement pas que le tableau dans le fichier et le tableau des résultats ne commence pas toujours au même endroit comment faire ?
Merci de votre attention, en espérant trouver une réponse !
Bonjour à tous,
Et......
Il est opportun de préciser, dans votre profil, la nature du produit Excel utilisé. Les contributions apportées dépendront de votre environnement.
Pouvez-vous mettre à la disposition de la communauté deux ou trois fichiers, afin que nous puissions appréhender la chose ?
Enchantée!
Je vous transmets 2 fichiers comme exemples. Merci!
Bonsoir à tous,
Bis repetita : Il est opportun de préciser, dans votre profil, la nature du produit Excel utilisé. Les contributions apportées dépendront de votre environnement.
Pouvez-vous confirmer que votre besoin est de rapatrier :
1/ Le numéro de lot (tout le temps en E11)
2/ Le numéro de commande (en E14).
3/ L'image qui tient lieu de "tableau de résultats"
Le 1/ et 2/ peuvent être traités via Power Query. Pour le 3....peut-être que nos amis vbistes auront quelques idées lumineuses. Mais dans le meilleur des cas, cela restera une...image !
Mon besoin est de rapatrier :
1/ Le numéro de lot (tout le temps en E11) en colonne A
2/ Le numéro de commande (en E14) en colonne B
3/ Le tableau de résultats qui est sous l'image en traitant les données associées à chaque composants
par exemple dans un tableau
A1: AZR34(E11) B1: 54GYN8 (E14) C1: 7.37 (B96) D1=2,4 MCPB sel de sodium (C96) .........
A2: AZR34(E11) B2: 54GYN8 (E14) C2:...(B97) D2= .... (C97)
J'essaye de le traiter à l'aide d'une macro mais je ne sais pas comment mettre tous les tableaux à la suite
avec par exemple:
Set wbSource = Workbooks.Open(vFichiers(k))
Set wsSource = wbSource.Sheets("Concatenation")
DernLign = wbRecap.Sheets(1).Range("A60000").End(xlUp).Row + 1
Set rgRecap = wsRecap.Range("A65000").End(xlUp).Offset(1, 0)
With wsSource
rgRecap.Offset(0, 1) = .Range("E11")
Bonsoir de nouveau !
J'ai trouvé le tableau des résultats !
Ce tableau comporte 70 lignes à traiter (la 1ère semble ignorée....) sur 4 colonnes. Le résultat attendu comporterait 282 colonnes. Pas certain de la lisibilité d'un tel tableau....
Bonjour Kymie1213, le fil
J'ai trouvé moi un tableau des résultats avec beaucoup de colonnes !
Dixit JFL...
Ce tableau comporte 70 lignes à traiter (la 1ère semble ignorée....) sur 4 colonnes. Le résultat attendu comporterait 282 colonnes. Pas certain de la lisibilité d'un tel tableau....
Entièrement de ton avis JFL !
bonjour,
apparament des pesticides
J'ai renommé "AZR34.xlsB" et celui-là et "b4eer-lot.xlsx" doivent etre ouvert au moment de lancer ce macro. Les résultats sont dans "blad1"
Sub collectionner()
Dim Arr(), ptr, iWB
ReDim Arr(1 To 100, 1)
Arr(1, 0) = "Numero lot"
Arr(2, 0) = "Numero commande"
Arr(3, 0) = "fichier"
Arr(1, 1) = "NORMES !!!"
ptr = 3
For Each swb In Array("AZR34.xlsb", "b4eer-lot.xlsx") '-----> ATTENTION : AZR34 est un "XLSB" maintenant
iWB = iWB + 1
ReDim Preserve Arr(1 To UBound(Arr), iWB + 1)
With Workbooks(swb).Sheets(1) 'boucle les fichiers
Arr(1, iWB + 1) = .Range("E11").Value 'lot
Arr(2, iWB + 1) = .Range("E14").Value 'commande
Arr(3, iWB + 1) = swb 'nom du fichier
Set c = .Columns(1).SpecialCells(xlConstants) 'cellules avec contenu dans colonne A
If c.Areas.Count <> 1 Then
MsgBox "plus/moins que 2 plages !!!!"
Else
a = c.CurrentRegion.Resize(, 6).Value 'ce tableau en bas
For i = 2 To UBound(a)
r = Application.Match(a(i, 3), Application.Index(Arr, 0, 1), 0) 'existe le nom du component deja ?
If Not IsNumeric(r) Then 'sinon, ajoute-le
ptr = ptr + 1
r = ptr
Arr(r, 0) = a(i, 3) 'composant
Arr(r, 1) = "'" & a(i, 5) 'norme
End If
Arr(r, iWB + 1) = a(i, 2) 'mesure valeur
Next
End If
End With
Next
With Workbooks("azr34.xlsb").Sheets("blad1") 'export to here
.Cells.ClearContents
With .Range("A1").Resize(ptr, iWB + 2) 'les données verticales
.Value = Arr
.EntireColumn.AutoFit
End With
With .Range("g1").Resize(iWB + 2, ptr) 'les données horizontales
.Value = Application.Transpose(Arr)
.EntireColumn.AutoFit
End With
End With
End Sub