[Catégorie encore modifiée VB6 -> VBA] Lire une colone et récupérer pas à pas le

Résolu
Rom57970 Messages postés 12 Date d'inscription mercredi 18 mai 2011 Statut Membre Dernière intervention 7 juin 2011 - 20 mai 2011 à 08:58
Rom57970 Messages postés 12 Date d'inscription mercredi 18 mai 2011 Statut Membre Dernière intervention 7 juin 2011 - 6 juin 2011 à 12:11
Bonjour à tous!

Etant innexpérimenté, je souhaiterai lire une colone allant d'une cellule K8 à K112.
Par la suite je veux récupérer les infos de chaque ligne mais pour une ligne visée, récupérer les infos d'une autre colone, je m'explique :

[b]1 - on est sur K8 (cellule contenant du texte)
2 - on récupère la valeur de la cellule K8 que l'on affecte à une variable (pour future utilisation).
3 - on récupère la valeur de la cellule J8 (cellule contenant un nombre) que l'on affecte à une variable (pour future utilisation).
4 - on récupère la valeur de la cellule I8 (cellule contenant un nombre) que l'on affecte à une variable (pour future utilisation).
5 - on descend à la cellule K9 et on recommence l'opération(lecture de K9, J9 et I9)./b

Le soucis est que je suis débutant, j'essaie tant bien que mal d'utiliser des boucles mais je n'y arrive pas.

Je vous remercie à tous pour votre aide par avance.

Rom.

8 réponses

Rom57970 Messages postés 12 Date d'inscription mercredi 18 mai 2011 Statut Membre Dernière intervention 7 juin 2011
20 mai 2011 à 13:51
Problème résolu avec le code suivant :
Sub Newcorrectionfiletxt()

Nombrecor = Application.Workbooks("F.AMS.MET.ELEC.25-v6_5520_MET-ELM-001_v0.2.xls").Worksheets("Incert&Correction").Range("E5").Value
Annee = Application.Workbooks("F.AMS.MET.ELEC.25-v6_5520_MET-ELM-001_v0.2.xls").Worksheets("Incert&Correction").Range("E4").Value
Dim i As Integer
i = 8
        While i <= Nombrecor
        A = Application.Workbooks("F.AMS.MET.ELEC.25-v6_5520_MET-ELM-001_v0.2.xls").Worksheets("Incert&Correction").Range("I" & i & "").Value
        B = Application.Workbooks("F.AMS.MET.ELEC.25-v6_5520_MET-ELM-001_v0.2.xls").Worksheets("Incert&Correction").Range("J" & i & "").Value
        Nom = Application.Workbooks("F.AMS.MET.ELEC.25-v6_5520_MET-ELM-001_v0.2.xls").Worksheets("Incert&Correction").Range("K" & i & "").Text
        Tip = Application.Workbooks("F.AMS.MET.ELEC.25-v6_5520_MET-ELM-001_v0.2.xls").Worksheets("Incert&Correction").Range("L" & i & "").Text
        Localisation1 = "H:\Materiaux\Projets\INM\3-Production\Electrique\Automatisation\Stage - 11.04.11 - 18.06.11\Fichiers de correction" & Annee & "" & Nom & ".txt"
        Open Localisation1 For Output As #1
            Print #1, "Moi                                                         MET/CAL Procedure" & _
            Chr(13) + Chr(10) & "=============================================================================" & _
            Chr(13) + Chr(10) & "INSTRUMENT:            " & Nom & "" & _
            Chr(13) + Chr(10) & "DATE:" & _
            Chr(13) + Chr(10) & "REVISION:" & _
            Chr(13) + Chr(10) & "ADJUSTMENT THRESHOLD:  70%" & _
            Chr(13) + Chr(10) & "NUMBER OF TESTS:       1" & _
            Chr(13) + Chr(10) & "NUMBER OF LINES:       20" & _
            Chr(13) + Chr(10) & "=============================================================================" & _
            Chr(13) + Chr(10) & " STEP    FSC    RANGE NOMINAL        TOLERANCE     MOD1        MOD2  3  4 CON" & _
            Chr(13) + Chr(10) & "  1.001  ASK-                                                              W" & _
            Chr(13) + Chr(10) & "  1.002  ASK+           K" & _
            Chr(13) + Chr(10) & "  1.003  ASK+                                        C" & _
            Chr(13) + Chr(10) & "  1.004  MATH         MEM1= (M[1] + M[1] * " & A & " " & B & ")" & _
            Chr(13) + Chr(10) & "  1.005  DOS          correct [S1] 5520 insert ""Volts"" [M1]V" & _
            Chr(13) + Chr(10) & "  1.006  MATH         M[2]=ACCV(""Fluke 5520A"",""Volts"",M[1])" & _
            Chr(13) + Chr(10) & "  1.007  MATH         MEM=MEM1" & _
            Chr(13) + Chr(10) & "  1.008  ACC          " & Tip & "             M2U"
            Close #1
        i = i + 1
        Wend
End Sub
3
Rom57970 Messages postés 12 Date d'inscription mercredi 18 mai 2011 Statut Membre Dernière intervention 7 juin 2011
20 mai 2011 à 09:14
Voici le code :

Sub Newcorrectionfiletxt()

Nombrecor = Application.Workbooks("F.AMS.MET.ELEC.25-v6_5520_MET-ELM-001_v0.2.xls").Worksheets("Incert&Correction").Range("E5").Value
Localisation1 = Application.Workbooks("F.AMS.MET.ELEC.25-v6_5520_MET-ELM-001_v0.2.xls").Worksheets("Incert&Correction").Range("E4").Value
Localisation2 = "H:\Materiaux\Projets\INM\3-Production\Electrique\Automatisation\Stage - 11.04.11 - 18.06.11\Fichiers de correction" & Localisation1 & "" & Nom & ".txt"
Nom = Application.Workbooks("F.AMS.MET.ELEC.25-v6_5520_MET-ELM-001_v0.2.xls").Worksheets("Incert&Correction").Range("K8").Text
Nom2 = Application.Workbooks("F.AMS.MET.ELEC.25-v6_5520_MET-ELM-001_v0.2.xls").Worksheets("Incert&Correction").Range("J8").Value
Nom3 = Application.Workbooks("F.AMS.MET.ELEC.25-v6_5520_MET-ELM-001_v0.2.xls").Worksheets("Incert&Correction").Range("I8").Value
Dim i As Integer

While i <= Nombrecor
For i = 1 To Nombrecor Step 1
A = Nom2
B = Nom3
Open Localisation2 For Output As #1
Print #1, "Moi MET/CAL Procedure" & _
Chr(13) + Chr(10) & "=============================================================================" & _
Chr(13) + Chr(10) & "INSTRUMENT: " & Nom & "" & _
Chr(13) + Chr(10) & "DATE:" & _
Chr(13) + Chr(10) & "REVISION:" & _
Chr(13) + Chr(10) & "ADJUSTMENT THRESHOLD: 70%" & _
Chr(13) + Chr(10) & "NUMBER OF TESTS: 1" & _
Chr(13) + Chr(10) & "NUMBER OF LINES: 20" & _
Chr(13) + Chr(10) & "=============================================================================" & _
Chr(13) + Chr(10) & " STEP FSC RANGE NOMINAL TOLERANCE MOD1 MOD2 3 4 CON" & _
Chr(13) + Chr(10) & " 1.001 ASK- W" & _
Chr(13) + Chr(10) & " 1.002 ASK+ K" & _
Chr(13) + Chr(10) & " 1.003 ASK+ C" & _
Chr(13) + Chr(10) & " 1.004 MATH MEM1= (M[1] + M[1] * " & A & " " & B & ")" & _
Chr(13) + Chr(10) & " 1.005 DOS correct [S1] 5520 insert ""Volts"" [M1]V" & _
Chr(13) + Chr(10) & " 1.006 MATH M[2]=ACCV(""Fluke 5520A"",""Volts"",M[1])" & _
Chr(13) + Chr(10) & " 1.007 MATH MEM=MEM1" & _
Chr(13) + Chr(10) & " 1.008 ACC mV M2U"
Close #1
ActiveCell.Offset(1, 0).Select
Next
Wend

End Sub
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
20 mai 2011 à 10:30
Salut

Note bien, une nouvelle fois, que tu fais du VBA et pas du VB6. Merci.

- Parcourir toutes les cellules d'une colonne --> Boucle For Each-Next
- Lire les cellules voisines de celles sur laquelle on se trouve --> .Offset

    Dim maCellule As Range
    For Each maCellule In ActiveSheet.Range("D1:D10")
        Debug.Print "Cellule " & maCellule.Address & ", contient " & maCellule.Value
        Debug.Print "Cellule " & maCellule.Offset(0,2).Address & ", contient " & maCellule.Offset(0,2).Value
    Next

Remplace
Chr(13) + Chr(10)
par
vbCrLf ou vbNewLine
plus digeste

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0
Rom57970 Messages postés 12 Date d'inscription mercredi 18 mai 2011 Statut Membre Dernière intervention 7 juin 2011
20 mai 2011 à 10:53
Salut,

Oui je n'ai pas fais attention pour le sujet.. Oups ;-)

Alors je crois que l'on ne sait pas très bien compris :

Je dois parcourir des lignes successives allant de la ligne 8 à X. ( X serait la dernière ligne contenant du texte mais comme s'est trop complexe je penssais mettre une cellule disant le nombre de lignes de mon tableau)

Dans chaque ligne je dois extraire les cellules pour cette ligne visée (on aurait le message pour chaque cellules I8 à K8, que j'effecterai a 3 varaibles) et les placer dans les parties de mon fichier texte par la suite.

Je te remercie.

Rom
0

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

Posez votre question
Rom57970 Messages postés 12 Date d'inscription mercredi 18 mai 2011 Statut Membre Dernière intervention 7 juin 2011
20 mai 2011 à 10:55
Bien entendu une fois les données extraites pour la ligne 8 je passe a la ligne 9 et ceci jusqu'a X.
0
Rom57970 Messages postés 12 Date d'inscription mercredi 18 mai 2011 Statut Membre Dernière intervention 7 juin 2011
20 mai 2011 à 12:50
J'ai testé ces lignes, la syntaxe est bonne mais rien ne ce fait comme prévu :

Sub Newcorrectionfiletxt()

Nombrecor = Application.Workbooks("F.AMS.MET.ELEC.25-v6_5520_MET-ELM-001_v0.2.xls").Worksheets("Incert&Correction").Range("E5").Value
Annee = Application.Workbooks("F.AMS.MET.ELEC.25-v6_5520_MET-ELM-001_v0.2.xls").Worksheets("Incert&Correction").Range("E4").Value
Dim i As Integer
i = 8

        While i <= Nombrecor
        A = Application.Workbooks("F.AMS.MET.ELEC.25-v6_5520_MET-ELM-001_v0.2.xls").Worksheets("Incert&Correction").Range("I" & i & "").Value
        B = Application.Workbooks("F.AMS.MET.ELEC.25-v6_5520_MET-ELM-001_v0.2.xls").Worksheets("Incert&Correction").Range("J" & i & "").Value
        Nom = Application.Workbooks("F.AMS.MET.ELEC.25-v6_5520_MET-ELM-001_v0.2.xls").Worksheets("Incert&Correction").Range("K" & i & "").Text
        Tip = Application.Workbooks("F.AMS.MET.ELEC.25-v6_5520_MET-ELM-001_v0.2.xls").Worksheets("Incert&Correction").Range("L" & i & "").Text
        Localisation1 = "H:\Materiaux\Projets\INM\3-Production\Electrique\Automatisation\Stage - 11.04.11 - 18.06.11\Fichiers de correction" & Annee & "" & Nom & ".txt"
        Open Localisation1 For Output As #1
            Print #1, "Moi                                                         MET/CAL Procedure" & _
            Chr(13) + Chr(10) & "=============================================================================" & _
            Chr(13) + Chr(10) & "INSTRUMENT:            " & Nom & "" & _
            Chr(13) + Chr(10) & "DATE:" & _
            Chr(13) + Chr(10) & "REVISION:" & _
            Chr(13) + Chr(10) & "ADJUSTMENT THRESHOLD:  70%" & _
            Chr(13) + Chr(10) & "NUMBER OF TESTS:       1" & _
            Chr(13) + Chr(10) & "NUMBER OF LINES:       20" & _
            Chr(13) + Chr(10) & "=============================================================================" & _
            Chr(13) + Chr(10) & " STEP    FSC    RANGE NOMINAL        TOLERANCE     MOD1        MOD2  3  4 CON" & _
            Chr(13) + Chr(10) & "  1.001  ASK-                                                              W" & _
            Chr(13) + Chr(10) & "  1.002  ASK+           K" & _
            Chr(13) + Chr(10) & "  1.003  ASK+                                        C" & _
            Chr(13) + Chr(10) & "  1.004  MATH         MEM1= (M[1] + M[1] * " & A & " " & B & ")" & _
            Chr(13) + Chr(10) & "  1.005  DOS          correct [S1] 5520 insert ""Volts"" [M1]V" & _
            Chr(13) + Chr(10) & "  1.006  MATH         M[2]=ACCV(""Fluke 5520A"",""Volts"",M[1])" & _
            Chr(13) + Chr(10) & "  1.007  MATH         MEM=MEM1" & _
            Chr(13) + Chr(10) & "  1.008  ACC          " & Tip & "             M2U"
            Close #1
        i = i + 1
        Wend
End Sub
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
20 mai 2011 à 15:18
Pour sélectionner/connaître la dernière ligne (non vide) d'une colonne, avec le clavier, on fait Ctrl-End
Enregistre une macro pendant que tu fais la manip et tu auras le code.

L'exemple que je t'ai proposé concerne l'utilisation de .Offset = très pratique, et un exemple de boucle permettant de scruter toutes les cellules d'une plage.

Ces affreux Chr$ sont toujours là ...

Est-ce que ça vaut vraiment le coup de te répondre puisque tu ne tiens pas compte des réponses ?
0
Rom57970 Messages postés 12 Date d'inscription mercredi 18 mai 2011 Statut Membre Dernière intervention 7 juin 2011
6 juin 2011 à 12:11
Salut,

J'ai suivi tes conseil, mais le temps file...

Donc j'ai repris ton conseil avec le print du sujet : "Problème apostrophe"

Je peux montrer une macro correcte, sans lien avec l'exemple ci-dessus mais qui se sert de Print :

^        Open Localisation1 For Append As #1
            Print #1, "Moi                                                         MET/CAL Procedure"
            Print #1, "============================================================================="
            Print #1, "INSTRUMENT:            " & Titre & "-" & Dat & ""
            Print #1, "DATE:"
            Print #1, "REVISION:"
            Print #1, "ADJUSTMENT THRESHOLD:  70%"
            Print #1, "NUMBER OF TESTS:       1"
            Print #1, "NUMBER OF LINES:       20"
            Print #1, "============================================================================="
            Print #1, " STEP    FSC    RANGE NOMINAL        TOLERANCE     MOD1        MOD2  3  4 CON"
            Print #1, "  1.001  ASK-   R                    P                            A        W"
            Print #1, "  1.002  ASK+           K"
            Print #1, "  1.003  HEAD         Information test"
            Print #1, "  1.004  DISP         Bonjour, vous avez lancé cette procédure d'étalonnage :"
            Print #1, "  1.005  DISP         Vous allez étalonner : " & Titre & ""
            Print #1, "  1.006  DISP         Attention, le test va débuter..."


Bien entendu on peut toujours pousser plus loin avec les .Offset...

Encore merci pour tes conseil et désolé de t'avoir fais croire que je ne tenais pas compte de tes conseils bien utiles!

Bonne journée.

Rom.
0
Rejoignez-nous