Rechercher : dans
Par :

VBA Excel: Remplir un fichier Excel

Dernière réponse le 7 mai 2008 à 15:54:17 rourouriri, le 7 mai 2008 à 11:13:02 
 Signaler ce message aux modérateurs

Bonjour,

Etant débutante en Excel je demande secours à vous, en fait je cherche à remplir un fichier Excel en ayant recours à un fichier, pour l'instant je sais comment faire la fusion mais ça me créer un autre fichier alors que ce que je veux moi est que dans ma feuille active faire les modification voila le code que j'utilise si vous pouvez m'aider ça sera trop gentil de votre part

Sub FusionPage3()

'Définir les variables
Dim Tableau1, Li1&, Co1&
Dim Tableau2, Li2&, Co2&
Dim Tableau3, Li3&, Co3&

'Désactiver la mise à jour de l'écran
Application.ScreenUpdating = False
'Donner à "Fichier_Analyse" le nom du fichier ouvert
Fichier_Analyse = ThisWorkbook.Name

'Ouverture des fichiers

'Chercher le 1er fichier à fusionner
Call RechercheFichier(Chemin, Fichier1_à_Analyser)
Workbooks.Open Filename:=Chemin & "\" & Fichier1_à_Analyser, local:=True

'Chercher le 2ème fichier à fusionner
Call RechercheFichier(Chemin, Fichier2_à_Analyser)
Workbooks.Open Filename:=Chemin & "\" & Fichier2_à_Analyser, local:=True

'Récupération des données Fich1
Windows(Fichier1_à_Analyser).Activate

lig = 1
Do
'Retourner les valeurs des 3 cellules succesives par ligne
x = Cells(lig, 1).Value
y = Cells(lig + 1, 1).Value
z = Cells(lig + 2, 1).Value
w = Cells(lig + 3, 1).Value
v = Cells(lig + 4, 1).Value

'Tester si x, y et z sont toutes vides
If x = "" And y = "" And z = "" And w = "" And v = "" Then
'Si oui sortir de la boucle Do
Exit Do
End If

lig = lig + 1
Loop

'Selectionner les cellulles de A1 jusqu'à la dernière cellule de la colonne C du fich1
Range("A1:D" & lig).Select

'Mettre la selection dans un tableau "Tableau1"
Tableau1 = Selection.Value
'Fermer sans enregistrer les modifications
ActiveWindow.Close savechanges:=False

'Récupération des données Fich2

'Pareil que Fich1
Windows(Fichier2_à_Analyser).Activate

lig = 1
Do
a = Cells(lig, 2).Value
b = Cells(lig + 1, 2).Value
c = Cells(lig + 2, 2).Value
d = Cells(lig + 3, 2).Value
e = Cells(lig + 4, 2).Value
f = Cells(lig + 5, 2).Value
g = Cells(lig + 6, 2).Value


If a = "" And b = "" And c = "" And d = "" And e = "" And f = "" And g = "" Then
Exit Do
End If

lig = lig + 1
Loop

Range("A1:D" & lig).Select

Tableau2 = Selection.Value

ActiveWindow.Close savechanges:=False

'Analyse résultats

ReDim Tableau3(UBound(Tableau1, 1), 4)

Windows(Fichier1_Analyse).Activate

k = 0

For I = LBound(Tableau1, 1) To UBound(Tableau1, 1)

k = k + 1

Tableau3(k, 1) = Tableau1(I, 1)
Tableau3(k, 2) = Tableau1(I, 2)

For j = LBound(Tableau2, 1) To UBound(Tableau2, 1)
If Tableau1(I, 1) <> "" Then
If Tableau1(I, 1) = Tableau2(j, 3) Then
Tableau3(k, 3) = Tableau2(j, 4)
End If
End If
Next j

Next I

'Ecriture données en colonne 1

lig = 1

For I = LBound(Tableau3, 1) To UBound(Tableau3, 1)
Cells(lig, 1).Value = Tableau3(I, 1)
Cells(lig, 2).Value = Tableau3(I, 2)
Cells(lig, 3).Value = Tableau3(I, 3)
Cells(lig, 4).Value = Tableau3(I, 4)

lig = lig + 1

Next I

Beep
Application.ScreenUpdating = True

End Sub


Amicalement

Configuration: Windows 2000
Firefox 2.0.0.14

1

lermite222, le 7 mai 2008 à 14:56:30

Bonjour,
tu à probablement une erreur sur ..

    ReDim Tableau3(UBound(Tableau1, 1), 4) 

il n'y a que la dernière occurence d'un tableu qui peu être redimentionnée, il te faut changer par
    ReDim Tableau3(4, UBound(Tableau1, 1)

Et bien sur modifier ta macro en conséquence.
Si d'autre erreur (je me suis arrêté à celle là) revient
A+ Une question énoncée clairement se comprend aisément.

Répondre à lermite222

2

rourouriri, le 7 mai 2008 à 15:01:48

Bonjour,

En fait, elle marche bien ma marco le problème c'est qu'elle me crée un 3ème fichier
et moi j'aimerais juste modifier dans le premier c'est ça mon vrai problème :s:s:s:s:s:s:s:s:s

A+

amicalement

Répondre à rourouriri

3

zavenger, le 7 mai 2008 à 15:18:36

Je pense que ton probleme viens du fait que tu fermes ton fichier

'Mettre la selection dans un tableau "Tableau1"
Tableau1 = Selection.Value
'Fermer sans enregistrer les modifications
ActiveWindow.Close savechanges:=False

'Récupération des données Fich2

Essaie sans cette partie et cela devrait aller mieux

Répondre à zavenger

4

Polux31, le 7 mai 2008 à 15:32:01

Bonjour,

Si j'ai bien interpréter le code, tu ouvres 2 fichiers Excel (Fichier1_à_Analyser et Fichier2_à_Analyser), c'est donc que tu te trouves ni dans l'un, ni dans l'autre mais dans un 3ème classeur(Fichier1_Analyse). Tu veux fusionner les données de Fichier1_à_Analyser avec Fichier2_à_Analyser. Là tu rajoutes les données contenues dans le tableau3 dans le classeur Fichier1_Analyse ... d'où ton 3ème fichier. Il faut que tu ouvres de nouveau le fichier que tu veux modifier, que tu l'actives et que tu rajoutes tes données ...

;o)

polux «Ce que l'on conçoit bien s'énonce clairement, Et les mots p­our le dire arrivent aisément.» 
Nicolas Boileau

Répondre à Polux31

5

seblekiller_oupas, le 7 mai 2008 à 15:35:03

Bonjour pollux31

C'est juste pour savoir si tu pouvais m'aider vite fait ou pas?

Desole de mettre incruster
et merci qu'elle que soit la reponse

Répondre à seblekiller_oupas

6

Polux31, le 7 mai 2008 à 15:39:52

Bonjour,

Dis toujours ton problème, si je peux t'aider, ça sera avec plaisir.

;o) «Ce que l'on conçoit bien s'énonce clairement, Et les mots p­our le dire arrivent aisément.» 
Nicolas Boileau

Répondre à Polux31

7

 seblekiller_oupas, le 7 mai 2008 à 15:54:17

Tres bien je te remercie desole de m'y prendre comme ca mais je cherche des solutions!!!!! bref voila

http://www.commentcamarche.net/forum/affich 6289684 pb avec liste et sous formulair

Répondre à seblekiller_oupas