Transition langage C au langage VBA

Bonjour

alors voila; comme je le montre dans l'image je veux prendre des parties de ma chaine (qui fait un peu moins de 300 caractères) et les mettres dans d'autre cellule.

en langage C j'utiliserais la fonction fgets qui met dans un tableau la chaine. je peux ainsi parcourir le tableau et mettre là ou je souhaite les caractère via la fonction for.

mais en VBA je ne trouve pas de fonction similaire avez vous des idées?

le programme en langage C est casiment ok mais la programmation en VBA est nouveau pour moi.

merci d'avance pour votre aide

bonjour

tu as la fonction split qui permet de découper ta chaine en fonction d'un séparateur et qui met le résultat dans un tableau vba

tu as la fonction mid qui permet de sélectionner une sous-chaine dans une chaine.

si tu veux qu'on t'aide davantage mets-nous un fichier exemple (pas une photo dont on ne peut rien faire)

concrètement a partir de la cellule N5 je souhaite

mettre dans la cellule E5 les 7 premiers caractère de ma cellule N5

mettre dans la cellule N5 les 8 dernier caractère de ma cellule N5

mettre dans la cellule k5 les 4 caractères précédent les 8 derniers caractère de ma cellule N5

mettre dans la cellule H5 les 52 caractères précédent les 12 caractères (vu en cellule N5 et k5) de ma cellule N5

on répète l'action pour les 200 ligne après.

en gros voila ce que je veux faire.

un exemple de ce que j'ai en N5 (tous est sur une seul ligne avec les espaces):

[exemple retiré]

le pb est que mid et split ne permet pas d'avoir la position donc sa ne convient pas

bonjour,

je ne comprend pas ce que signifie ce "exemple" en grande police

voici une solution avec mid uniquement

Sub vérification_matrice_v2()
    With Sheets("feuil1")
        dl = .Cells(Rows.Count, "C").End(xlUp).Row
        For j = 5 To dl
            s = .Cells(j, "C")
            .Cells(j, "E") = Mid(s, 1, 7)
            .Cells(j, "H") = Mid(s, 157, 52)
            .Cells(j, "K") = Mid(s, 209, 4)
            .Cells(j, "N") = Mid(s, 213)
        Next j
    End With
End Sub

SUPER!!!!!!! c'est le programme qu'il me fallait, et il fonctionne comme il me fallait

peut tu juste m'expliquer des chose sur le programme:

dans le "cells" c'est toujours le numéros de la ligne puis la colone?

dans le dl que signifie "Rows.Count"?

il ne faut pas déclarer Mid comme "variant" ou "string"? de même pour "s"?

le "With Sheets("feuil1")" est il nécessaire et pourquoi?

ces réponses me permettront de refaire des codes vba de mon coté sans avoir à revenir

merci pour ton aide

dans le "cells" c'est toujours le numéros de la ligne puis la colone?

oui, la colonne peut être indiqué par son identifiant alphabétique ou par son numéro

dans le dl que signifie "Rows.Count"?

nombre de lignes

il ne faut pas déclarer Mid comme "variant" ou "string"? de même pour "s"?

mid : c'est une fonction vba et non une variable,

s: pourrait être déclaré comme string ( c'est une bonne pratique)

le "With Sheets("feuil1")" est il nécessaire et pourquoi?

indique l'objet auquel les méthodes et les propriétés (prefixée par un point) se rapportent et permet donc de ne pas répéter le nom de l'objet dans toutes les instructions où ces méthodes ou propriétés sont utilisées.

Pour certaines propriétés et méthodes il est également possible de ne pas indiquer l'objet, mais dans ce cas vba utilisera un objet par défaut (par exemple la feuille active), dont on n'a pas nécessairement la maitrise. Donc afin d'éviter les bugs, il est préférable de mentionner l'objet (par exemple avec with, pour ne pas avoir à le répéter)

Rechercher des sujets similaires à "transition langage vba"