[déplacé VB6 -> VBA] Aide pour VBA macro à compléter

HomoAnonimous Messages postés 6 Date d'inscription mardi 7 juillet 2009 Statut Membre Dernière intervention 8 juillet 2009 - 7 juil. 2009 à 14:02
cs_nandinho Messages postés 14 Date d'inscription mercredi 10 juin 2009 Statut Membre Dernière intervention 10 juillet 2009 - 8 juil. 2009 à 23:09
Bien le bonjour tout le monde,
voila le "problème" je suis en train de faire un projet de stage pour EDF ( vous me remercieré plus tard pour la réactivité pendant les tempêtes ^^) , je travail sur une base de données (j'ai fais mes premiers pas il y a 6 semaines pour Access et encore moins pour le VRAI Excel). Je besoin de traiter un .xls qui me retourne une base pour le réintégré dans ma BdD, le but ajouter des info sur certaines lignes ( j'aimerais toutes...mais bon...on va pas trop leurs en demander) j'ai donc le 1er Fichier (tout préparer avec macro et code) qui envoi une 1ere fois les données dans la BdD, elle les traitent et les envoi au différent bureau qui me les retourne "remplie" MAIS toutes les lignes ne sont pas remplie et le 1er fichier peut s'agrandir, je n'arrive donc pas à sélectionner toutes les lignes qui sont remplies en entiers ou presques et les faires remplacer dans le 1er fichier (grace à un num uniques).
Sa ferait en gros, ligne remplie dans le fichier renvoyer, on copie/colle à la place de l'autre dans le 1er fichier. Et on passe à la suivante. Sachant quand plus je dois rajouter les colonnes mais sa j'ai fait grâce à l'enregistreur de macro.
Donc voila, j'aimerai un ptit bout de code à grignotter, si quelqu'un pouvait m'aider sa sera gentil!!
Merci.

8 réponses

HomoAnonimous Messages postés 6 Date d'inscription mardi 7 juillet 2009 Statut Membre Dernière intervention 8 juillet 2009
7 juil. 2009 à 14:20
Outch en relisant sa doit être corsé à comprendre...même moi je m'embrouille . Petite info en supplémentaire.
Le test des cellules vides se fait dans les colonnes AB AC AD. En faite il faudrait juste copier les info de chaque cellule à la ligne qui correspond dans le 1er Fichier( FicheCAD44.xls).
0
HomoAnonimous Messages postés 6 Date d'inscription mardi 7 juillet 2009 Statut Membre Dernière intervention 8 juillet 2009
7 juil. 2009 à 14:39
Voila déjà mon début, mais c'est pas vraiment de la prog intelligente

Sub PréparationRetour()
'
' PréparationRetour Macro
'


'
    Windows("Zone 1.xls").Activate <---Zone 1 c'est mon fichier de test ( pb il ne s'appelle pas tous comme sa! Comment faire pour ouvrir un fenêtre de recherche et qu'il travail dans celle-ci?)
    Columns("AE:AH").Select
    Application.CutCopyMode = False
    Selection.Delete Shift:=xlToLeft
    Columns("K:K").Select
    Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
    Range("L1").Select
    Selection.EntireColumn.Insert , CopyOrigin:=xlFormatFromLeftOrAbove
    Range("M1").Select
    Selection.EntireColumn.Insert , CopyOrigin:=xlFormatFromLeftOrAbove
    Columns("AD:AD").Select
    Columns("AC:AC").ColumnWidth = 24.14
    Columns("AE:AE").Select
    Selection.Cut
    Range("I1").Select
    Selection.Insert Shift:=xlToRight
    Columns("AB:AB").ColumnWidth = 24
    Columns("AB:AB").Select
    Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
    Range("AB1").Select
    Windows("Zone 1.xls").Activate
    Rows("1:1").Select
    Selection.Delete Shift:=xlUp
    Range("A1:AH319").Select
    Selection.Copy
    Windows("Retour.xls").Activate
    Range("A2").Select
    ActiveSheet.Paste
    Windows("Retour.xls").Activate
End Sub
0
hellangel777 Messages postés 267 Date d'inscription jeudi 5 février 2009 Statut Membre Dernière intervention 26 novembre 2013 1
7 juil. 2009 à 14:43
Bonjour,


imagine une chose, tu travailles sur un projet, tu as un soucis, tu demandes de l'aide, tu relis ton message et tu te rend compte qu'il est "compliqué" car "même toi tu t'embrouilles"


Essaye de faire une explication claire, si tu veux de l'aide, car la... c'est le brouillard dans ma tête après avoir lu tes explications...

HellAngel777





<hr />
Les machines ne font pas d'erreurs
Heureusement nous sommes humains
0
HomoAnonimous Messages postés 6 Date d'inscription mardi 7 juillet 2009 Statut Membre Dernière intervention 8 juillet 2009
7 juil. 2009 à 15:13
+1 pour toi,  j'ai "couché" sa sur tableau pour avoir un aperçue de se que je voulais (et sa aide) Je vais couper le traitement en deux.
Je recois un fichier (Fiche 1 par ex) que je ne peux importer avec Access, je crée donc un modéle (Retour) qui lui permet d'être importé. Sur le Fiche 1 je supprime la 1ere ligne,  puis je sélectionne tous, copie/colle dans le fichier Retour cellule A2 (enregistreur de macro)
J'aimerais d'abord avoir le code pour afficher une fenêtre de recherche du fichier. (Fiche 1 ne s'appelle pas toujours Fiche 1) . Et aussi lorsque je fais la sélection (Ctrl+A) sa me prend tous mais avec l'enregistreur sa prend en faite que ma sélection A1:AH30 par exemple donc si c'est plus grand sa passe pas. J'ai bien aggrandie jusqu'a 2500 mais il doit yavoir une astuce un peu plus beaucoup mieux much better...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
HomoAnonimous Messages postés 6 Date d'inscription mardi 7 juillet 2009 Statut Membre Dernière intervention 8 juillet 2009
7 juil. 2009 à 15:28
Mon nouveau code

Sub PréparationRetour()
'
' PréparationRetour Macro
'


'
    Windows("Zone 1.xls").Activate <---Zone 1 c'est mon fichier de test ( pb il ne s'appelle pas tous comme sa! Comment faire pour ouvrir un fenêtre de recherche et qu'il travail dans celle-ci?)
    Columns("AE:AH").Select
    Selection.Delete Shift:=xlToLeft
    Columns("AB:AB").Select
    Selection.Cut
    Columns("I:I").Select
    Selection.Insert Shift:=xlToRight
    Windows("Retour.xls").Activate
    Windows("Zone 1.xls").Activate
    Rows("1:1").Select
    Selection.Delete Shift:=xlUp
    Range("A1:AD319").Select
    Selection.Copy
    Windows("Retour.xls").Activate
    ActiveSheet.Paste
End Sub
0
cs_nandinho Messages postés 14 Date d'inscription mercredi 10 juin 2009 Statut Membre Dernière intervention 10 juillet 2009
7 juil. 2009 à 23:23
Bonjour,
Tu peux utiliser une boite de dialogue pour connaître le nom du fichier par exemple :

nom_fichier = InputBox("Nom du fichier :", "Saisir le nom du fichier à traiter")
If nom_fichier = "" Then Exit Sub
If Right(nom_fichier, 4) <> ".xls" Then nom_fichier = nom_fichier & ".xls"
Workbooks(nom_fichier).Activate

Dans cet exemple, nom_fichier est le nom du fichier à travailler, si tu cliques sur annuler de la boite de dialogue, la macro s'arrête. Si tu ne saisis pas l'extension  ".xls" elle se rajoute.

pour savoir le nombre de lignes tu peux utiliser la fonction "conter"

nbre_lignes = Application.WorksheetFunction.CountA(Range("a:a"))

pour savoir le nombre de colonnes  :
nbre_colonnes = Application.WorksheetFunction.CountA(Rows(1))

Bon courage pour la suite
0
HomoAnonimous Messages postés 6 Date d'inscription mardi 7 juillet 2009 Statut Membre Dernière intervention 8 juillet 2009
8 juil. 2009 à 08:40
Gné???ma réponse n'a pas été poster...Je deviens fou.
Donc je disais
Bonjour,
Ton code pour le nom de fichier ne correspond pas, mon exemple est un truc vite fait. La input box fonctionne juste si celui est déjà ouvert. Moi je veux faire choisir l'emplacement du fichier à l'utilisateur, avoir une fenêtre du genre "Ouvrir".
Autre question comment je fais pour réutilisé le nbre de lignes dans mon Range?
Merci
0
cs_nandinho Messages postés 14 Date d'inscription mercredi 10 juin 2009 Statut Membre Dernière intervention 10 juillet 2009
8 juil. 2009 à 23:09
Bonjour,
Mon exemple fonctionne, mon but n'est pas de faire le boulot à ta place, mais  de te donner des idées, de t'aider à développer TES macros.
Au lieu d'activer tu peux ouvrir, si le dossier contenant le fichier est toujours le même voici une variable ou "Chemin_fichier" est le chemin pour aller jusqu'au fichier à ouvrir :

 Chemin_fichier = "C:\Documents and Settings\Homoanonimous\Mes documents"
nom_fichier = InputBox("Nom du fichier :", "Saisir le nom du fichier à traiter")
If nom_fichier = "" Then Exit Sub
If Right(nom_fichier, 4) <> ".xls" Then nom_fichier = nom_fichier & ".xls"
    Workbooks.Open Filename:=Chemin_fichier & nom_fichier

Tu peux aussi ouvrir la boite de dialogue "Ouvrir un fichier"
boite_ouvrir = Application.Dialogs(xlDialogOpen).Show
''''''''''''''''''''''''''''''''''
Pour utiliser le nbre de lignes tu peux utiliser une boucle, par exemple si le fichier actif est celui ou tu veux coller les données :

For chaque_ligne = 1 To nbre_lignes
Cells(chaque_ligne, 1).Value = Workbooks(nom_fichier).Cells(chaque_ligne, 1)
Next chaque_ligne

Dans mon exemple, il n'y a qu'une colonne à copier, autrement il faut imbriquer deux boucles genre - si tu as 5 colonnes :
For chaque_ligne = 1 To nbre_lignes
For chaque_colonne = 1 to 5
Cells(chaque_ligne, chaque_colonne ).Value = Workbooks(nom_fichier).Cells(chaque_ligne, chaque_colonne )
Next chaque_colonne
Next chaque_ligne

Si le fichier de destination a déjà d'autres données, tu comptes le nbre de lignes du fichier destination et tu l'ajoutes au nbre de lignes du fichier origine, par exemple  :
nbre_lignes_destination = Application.........
nbre_lignes_destination = nbre_lignes_destination  + nbre_lignes
Avec tout ça, tu as de quoi reflechir et faire un bout de boulot
N'hesite pas à consulter l'aide de VBA (touche F1)

Courage et travaille bien
0
Rejoignez-nous