concatenation de 2 fichiers - VB/VBA/VBS - Programmation
Marsh Posté le 24-10-2008 à 21:42:44
Code :
|
En fait la macro que j'ai fais fonctionne mais a une condition
il faut que titi, toto, ect... soit sur les 2 feuilles
sinon ça plante, .. je bloque
Marsh Posté le 25-10-2008 à 22:44:16
Merci,
je viens de decouvrir cette formule et elle me semble bien utile, dans certains cas
par contre mes feuilles d'origines, (1 et 2) ont 18 et 23 colonnes
et pas loins de 40000 à 50000 lignes
il faudrait doc que je fasse une macro qui ecrive cette formule sur 18 x 50 000 cellules
la je crois que ça va encore aller moins vite que ma solution
Je vais tester que quelque colonne pour voir
Marsh Posté le 26-10-2008 à 06:39:16
Bonjour,
tu écris la formule sur une cellule et tu l'étends....
Marsh Posté le 26-10-2008 à 10:33:15
Bonjour?
Avec la fonction rechercheV tu peux pas faire ça ?
Ci dessous extrait de l'aide Excel sur la fonction rechercheV
Syntaxe
"RECHERCHEV(valeur_cherchée;table_matrice;no_index_col;valeur_proche)
valeur_cherchée est la valeur à trouver dans la première colonne de la matrice. L'argument valeur_cherchée peut être une valeur, une référence ou une chaîne de texte.
table_matrice est la table de données dans laquelle est exécutée la recherche de la valeur. Utilisez une référence à une plage ou un nom de plage, par exemple Base de données ou Liste."
Marsh Posté le 26-10-2008 à 11:59:30
Oui apparement la fonction recherchev irait très bien pour faire ce que je veux
Bien entendu, j'ai fait une copie de la formule en l'étendant
mais la ou cela coince, c'est la durée de traitement
Mes fichiers d'origines font 2 et 7mo
avec ma première solution, le fichier resultat fait 10mo
c'etait que tu texte sans formule
donc rapide
Par contre si j'utilise recherchev, le fichier résultat fait 64mo et mets 10mn avant de me donner la main pour chaque modif
il y a trop de formule
Voici une des formules
=RECHERCHEV(A2;Structure!$A$2:$Z$65536;7)
A2 c'est la valeur à rechercher
Structure!$A$2:$Z$65536 c'est la zone sur laquelle on fait la recherche de de la valeur A2
7 c'est le n° de colonne dont on veut recuperer la valeur
Marsh Posté le 26-10-2008 à 21:14:35
après avoir fais plussieurs test, la solution avec recherchev est bien trop longue
quelqu'un a une idée du problème qu'il y a sur la boucle que j'ai fait ?
Marsh Posté le 27-10-2008 à 07:42:22
Bonjour,
à améliorer pour gagner du temps
Sub clacla()
Application.ScreenUpdating = False
Sheets("Feuil1" ).Select
Cells.Select
Selection.Copy
Sheets("Feuil3" ).Select
Range("A1" ).Select
ActiveSheet.Paste
Sheets("Feuil3" ).Select
Range("A1" ).Select
Selection.CurrentRegion.Select
Nbligne = Selection.Rows.Count
'boucle
For i = 1 To Nbligne
VarNom = Sheets("Feuil3" ).Range("A" & i).Value
Sheets("Feuil2" ).Select
Columns("A:A" ).Select
'On Error GoTo introuvable
Dim fifi As Range
Set fifi = Selection.Find(What:=VarNom)
If Not fifi Is Nothing Then
fifi.Select
nligne = ActiveCell.Row
Range("A" & nligne & ":D" & nligne).Select
Selection.Copy
Sheets("Feuil3" ).Select
Range("D" & i).Select
ActiveSheet.Paste
End If
'introuvable:
Next i
Sheets("feuil3" ).Select
Application.ScreenUpdating = True
End Sub
Marsh Posté le 27-10-2008 à 21:55:44
Impéccable
la boucle fonctionne sans bug même dans le cas de ligne inexistante dans une des feuilles
pour la vitesse, pas d'amélioration notable
Merci !!
Marsh Posté le 23-10-2008 à 22:37:34
Bonjour
j'ai actuellement 2 sheets Excel comme ci-dessus
malheureusement des informations importantes se trouvent sur les 2 tables
pour info, chaque tables a 20 colonnes environ et 5000 à 20000 lignes....
je voudrais condenser les 2 tables de la façon ci dessous afin de pouvoir mieux traiter les données
avec un tableau croisé dynamique par la suite
j'ai déja fais une macro pour nettoyer les tables de ligne vides, ou supprimer les colonnes inutiles
mais je bloque un peu pour choisir la meilleure facon de condenser les 2
sheet1
identifiant etat date
toto ne 01/08/1945
toto marie 01/02/1964
toto mort 01/04/2007
titi ne 01/06/1978
titi marie 01/09/1990
sheet2
identifiant prenom nom adresse
toto prenomtoto nomtoto 42 rue de la repunlique
titi prenomtiti nomtiti 1 bd de l'océan
resultat
sheet3
identifiant etat date identifiant2 prenom nom adresse
toto ne 01/08/1945 toto prenomtoto nomtoto 42 rue de la repunlique
toto marie 01/02/1964 toto prenomtoto nomtoto 42 rue de la repunlique
toto mort 01/04/2007 toto prenomtoto nomtoto 42 rue de la repunlique
titi ne 01/06/1978 titi prenomtiti nomtiti 1 bd de l'océan
titi marie 01/09/1990 titi prenomtiti nomtiti 1 bd de l'océan
quelqu'un saurait faire un boucle pour arriver a ce resultat (sheet3)
je réussi, mais c'est long, la boucle est surement mal programmée
de plus elle bugue si j'ai une ligne presente dans sheet1 et pas dans sheet2
Message édité par daniel-12 le 24-10-2008 à 21:45:17