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

Messages postés
12
Date d'inscription
mercredi 18 mai 2011
Dernière intervention
7 juin 2011
- - Dernière réponse : Rom57970
Messages postés
12
Date d'inscription
mercredi 18 mai 2011
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.
Afficher la suite 

Votre réponse

8 réponses

Meilleure réponse
Messages postés
12
Date d'inscription
mercredi 18 mai 2011
Dernière intervention
7 juin 2011
3
Merci
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

Merci Rom57970 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 101 internautes ce mois-ci

Commenter la réponse de Rom57970
Messages postés
12
Date d'inscription
mercredi 18 mai 2011
Dernière intervention
7 juin 2011
0
Merci
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
Commenter la réponse de Rom57970
Messages postés
14010
Date d'inscription
samedi 29 décembre 2001
Dernière intervention
28 août 2015
0
Merci
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)
Commenter la réponse de cs_Jack
Messages postés
12
Date d'inscription
mercredi 18 mai 2011
Dernière intervention
7 juin 2011
0
Merci
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
Commenter la réponse de Rom57970
Messages postés
12
Date d'inscription
mercredi 18 mai 2011
Dernière intervention
7 juin 2011
0
Merci
Bien entendu une fois les données extraites pour la ligne 8 je passe a la ligne 9 et ceci jusqu'a X.
Commenter la réponse de Rom57970
Messages postés
12
Date d'inscription
mercredi 18 mai 2011
Dernière intervention
7 juin 2011
0
Merci
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
Commenter la réponse de Rom57970
Messages postés
14010
Date d'inscription
samedi 29 décembre 2001
Dernière intervention
28 août 2015
0
Merci
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 ?
Commenter la réponse de cs_Jack
Messages postés
12
Date d'inscription
mercredi 18 mai 2011
Dernière intervention
7 juin 2011
0
Merci
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.
Commenter la réponse de Rom57970

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.