VBA Macro Excel

Résolu/Fermé
Fillot_PC Messages postés 18 Date d'inscription vendredi 25 mars 2011 Statut Membre Dernière intervention 28 mars 2011 - 25 mars 2011 à 23:16
 F_PC - 29 mars 2011 à 16:16
Bonjour,

Je débute (depuis aujourd'hui) avec VBA sur excel... et ce n'est pas évident !
Voilà ce que j'aimerai faire :
J'importe un fichier texte dans excel (jusque là tout va bien).

Mes données sont des groupes d'informations :
[ ] = colonne
[A][B][C]
[Nom1]
[Spécificité1][Spécificité2][Spécificité3]
[données][ données][ données]
[données][ données][ données]
ligne vide
[Nom2]
[Spécificité1][Spécificité2][Spécificité3]
[données][ données][ données]
[données][ données][ données]
ligne vide
etc
Je voudrais que excel :
-cherche [nom1] (les noms sont toujours les mêmes mais pas forcément à la même place)
- qu'il sélectionne le groupe (tout ce qui suit jusqu'à la ligne vide suivante)
- qu'il colle la sélection dans la feuille suivante.
J'ai commencé un début de code, j'arrive à trouver [Nom1] et à le coller dans la feuille suivante mais je ne sais pas comment sélectionner et coller ce qui m'intéresse.
Merci d'avance !



A voir également:

28 réponses

lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
27 mars 2011 à 20:37
Ca commence tout doucement à m'échauffer les oreilles, tu commence avec un fichier à ouvrir et traiter et maintenant ce sont d'autres fichiers, faudrait commencer à savoir quoi ???
Dans le classeur que tu joint y à rien ??.
Le fichier que tu met n'a plus rien à voir avec le précédant ??
Si tu veux que je continue à t'aider décortique les opérations une à une et l'une à la suite de l'autre.
Sinon.. j'abandonne.
0
Fillot_PC Messages postés 18 Date d'inscription vendredi 25 mars 2011 Statut Membre Dernière intervention 28 mars 2011
27 mars 2011 à 21:03
Ok ok ! Je m'explique :

En fait j'ai attaqué une nouvelle macro.
C'est la suite du projet mais je n'y avais pas réfléchi encore hier car je voulais déjà que la première marche :

Macro 1 :
- Ouvrir fichier texte (par ex :Network.inp)
- Copier le groupe de données COORDINATES dans une autre feuille du même nom
- Copier le groupe de données VERTICES dans une autre feuille du même nom
- Extraire un fichier texte par feuille avec les noms respectifs
- plus des petites transformations que j'ai rajouté par simplicité pour l'utilisateur

Ca c'est bon ca marche et bcp grâce à toi !

Ensuite je convertis les données des fichiers textes : COORDINATES.txt et VERTICES.txt avec un logiciel qui me génère 2 nouveaux fichiers textes COORD_Z.txt et VERTI_Z.txt.

Maintenant Macro 2 (qui est en gros l'inverse de la première)
- ouvrir les fichiers textes (et ça là que je bloque pour qu' excel respecte les colonnes (cf fichier joint précédemment : Verti_z.txt )
- Copier les données de ces 2 fichiers textes (après les avoir épurés des en têtes et bas de page) dans le fichier de départ Network.inp en l'enregistrant Network_z.inp

Désolé d'être confus, j'espère que c'est mieux
0
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
27 mars 2011 à 21:48
Bon, maintenant c'est plus clair, mais c'est pas possible d'enregistrer le fichier Verti_z.txt sur Cjoint, je pourrais faire un copier/coller mais c'est pas certain que les séparateurs soient correct.
Compresse ton fichier en zip et reposte le.
Quel sont les parties qui t'intéresse ?
0
Fillot_PC Messages postés 18 Date d'inscription vendredi 25 mars 2011 Statut Membre Dernière intervention 28 mars 2011
27 mars 2011 à 22:16
0
Fillot_PC Messages postés 18 Date d'inscription vendredi 25 mars 2011 Statut Membre Dernière intervention 28 mars 2011
27 mars 2011 à 22:21
Et juste les 3 premières colonnes m'intéressent où il y a des données (pas l'entète) :
à partir de la ligne en desous de Nom E N jusqu'à l'avant dernière.
Le nombre des lignes sélectionnées peut varier en fonction du tout premier fichier texte.
0

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

Posez votre question
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
28 mars 2011 à 06:51
C'est le séparateur qui est modifier..
Sub Ouvre2()
Dim i As Integer, Col As Integer, g As Integer, TB
Dim NomFich As String, ChemFich As String, Sep As String
Dim Lig As Long, Lig2 As Long, Txt As String, Fich As Integer
Dim NomFeuill As String
    NomFich = Application.GetOpenFilename(Title:="Sélectionnez le fichier à convertir")
    
    If NomFich = "Faux" Then 'pas de sélection faite
        Exit Sub
    End If

    Workbooks.OpenText Filename:=NomFich _
        , Origin:=xlWindows, StartRow:=1, DataType:=xlDelimited, TextQualifier _
        :=xlDoubleQuote, ConsecutiveDelimiter:=True, Tab:=False, Semicolon:= _
        False, Comma:=False, Space:=True, Other:=False, FieldInfo:=Array(Array( _
        1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1), Array(7, 1), Array(8, _
        1), Array(9, 1), Array(10, 1), Array(11, 1), Array(12, 1), Array(13, 1))
    Columns("A").Delete
    For Lig = 1 To 1000
        If Cells(Lig, 1) = "Nom" Then Exit For
    Next Lig
    Rows("1:" & Lig).Delete
  '  For Lig = 1 To [A65536].End(xlUp).Row - 1
  '      Txt = ""
  '  Next Lig

End Sub

Pour la suite, tu veux ajouter dans un fichier qui existe déjà ?
Explique.
0
Fillot_PC Messages postés 18 Date d'inscription vendredi 25 mars 2011 Statut Membre Dernière intervention 28 mars 2011
28 mars 2011 à 21:23
Bonsoir,

Le lien suivant c'est un .zip avec tous les fichiers pour faire marcher la macro.
Vous pourrez ainsi comprendre pourquoi je vous ai posé toutes ces questions !
Il y a un fichier read me pour expliquer le déroulement et pour expliquer la suite :
https://www.cjoint.com/?3dCvxJIqZJE
J'espère que ça marchera chez vous.

Merci d'avance

A+
0
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
Modifié par lermite222 le 29/03/2011 à 07:43
Le code ci-dessus formate les fichiers _z
Les coller dans le fichier..
cormes.essai.inp sur la première feuille, respectivement sous [COORDINATES] et [VERTICES]
Oui, mais juste sous les titres [COORDINATES] et [VERTICES] ou en fin de rubrique ?
Sous [COORDINATES] et [VERTICES] les titres sont sur les colonnes A,B et C et les données sur B,C et D ?
Où ??
Remet les 2 fichiers [COORDINATES] et [VERTICES] .. BRUT
ceux que tu a mis sont déjà traiter.
Toute la connaissance du monde ne peu tenir dans une seul tête (moi)
Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
NOTE : Je ne répond pas aux MP pour les questions techniques.
0
Bonjour,

Dans cormes.essai.inp :

[A] [B] [C]
[COORDINATES]
;Node X-Coord Y-Coord
--- >Collez ici les données de COORDINATES_Z.txt

[VERTICES]
;Node X-Coord Y-Coord
--- >Collez ici les données de VERTICES_Z.txt

A la place des anciennes données utilisées dans la première macro. Les données formatées dans les fichiers_Z.txt sont sur les colonnes [A] [B] [C] et doivent être collées dans les mêmes colonnes [A] [B] [C] dans le fichier cormes.essai.inp

Les fichiers COORDINATES.txt et VERTICES.txt sont des fichiers vide à la base. Ils se remplissent avec la première macro :

http://cjoint.com/?3dDkk47NkZS
0
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
29 mars 2011 à 11:13
Bon.. récapitulons,
Au départ tu à le fichier cormes.essai.inp
Tu copie les données qui sont sous COORDINATES pour les convertir en laissant la possibilité de le rectifier. (idem pour VERTICES)
Tu crée le fichier.txt COORDINATES pour conversion.
En sortie tu à le fichier COORDINATES _Z que tu réinsère à la même place dans le fichier cormes.essai.inp
Si oui, tu m'a fait faire des cabrioles :-) pour y arriver !!
Tu dis et je rectifie les séquences.
0
Oui c'est exactement ça !
:D

"Lol" Pour les cabrioles... !
Merci
0