IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Scripts/Batch Discussion :

VBA Vers Powershell ?


Sujet :

Scripts/Batch

  1. #1
    Membre actif
    Avatar de troxsa
    Inscrit en
    Novembre 2004
    Messages
    386
    Détails du profil
    Informations personnelles :
    Âge : 50

    Informations forums :
    Inscription : Novembre 2004
    Messages : 386
    Points : 264
    Points
    264
    Par défaut VBA Vers Powershell ?
    Bonjour,

    Est-il possible de faire la même chose que Excel quand on fait un "convertir", en PowerShell sans VBA ? (il arrive à mettre les séparations là où il faut automatiquement sans séparateurs de type virgule)

    Code VBA : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        Selection.TextToColumns Destination:=Range("A1"), DataType:=xlFixedWidth, _
            FieldInfo:=Array(Array(0, 1), Array(16, 1), Array(39, 1), Array(60, 1), Array(75, 1), _
            Array(87, 1), Array(100, 1), Array(112, 1), Array(124, 1), Array(136, 1), Array(148, 1), _
            Array(160, 1), Array(172, 1)), TrailingMinusNumbers:=True

    Exemple de tableau

    Nom : Annotation (1).png
Affichages : 107
Taille : 1,7 Ko

    Existerait-il un fonction ou autre qui permet de faire la même chose ?

    En vous remerciant d'avance

  2. #2
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement (SCCM, InTune, GPO)
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3 184
    Points : 5 755
    Points
    5 755
    Par défaut
    Bonjour,

    Je pense que tu cherche la cmdlet Import-Csv

  3. #3
    Membre actif
    Avatar de troxsa
    Inscrit en
    Novembre 2004
    Messages
    386
    Détails du profil
    Informations personnelles :
    Âge : 50

    Informations forums :
    Inscription : Novembre 2004
    Messages : 386
    Points : 264
    Points
    264
    Par défaut
    Bonjour ericlm128

    Merci pour ta réponse, j'ai regardé avec import-csv mais je n'ai pas réussi a faire le même résultat quand j'ai des espaces dans les valeurs cela me retourne un tableau avec un décalage dans les valeurs

    Avec Excel j'obtient bien un résultat attendu
    Nom : PeterPan.png
Affichages : 84
Taille : 15,4 Ko

    Nom : PeterPan2.png
Affichages : 87
Taille : 3,2 Ko

    Avec powershell
    Le fichier texte (avant et après il y a d'autres informations)
    Nom : PeterPan4.png
Affichages : 83
Taille : 2,1 Ko Voir en piece jointe

    Le résultat du tableau dans la console :
    Nom : PeterPan3.png
Affichages : 77
Taille : 3,3 Ko

    Attention les tirets "---------" viennent du fichier texte ce n'est pas les memes tirets d'un résultat sur une commande (exemple get-process)

    Donc je dois mal m'y prendre en utilisant la commande Import-csv ?

    Le code que j'ai fait pour récupérer le tableau dans le fichier txt

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $ContentFile = Get-Content -Path "pathDuFichier.txt" -Raw
    $ContentFile = $ContentFile -split "`r`n"
    
    $ContentFile[2..5].trim()
    
    Fichiers attachés Fichiers attachés

  4. #4
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement (SCCM, InTune, GPO)
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3 184
    Points : 5 755
    Points
    5 755
    Par défaut
    Pourrais tu me transmettre le fichier d’origine pathDuFichier.txt pour que je puisse tester STP

  5. #5
    Membre actif
    Avatar de troxsa
    Inscrit en
    Novembre 2004
    Messages
    386
    Détails du profil
    Informations personnelles :
    Âge : 50

    Informations forums :
    Inscription : Novembre 2004
    Messages : 386
    Points : 264
    Points
    264
    Par défaut
    Je l'avais déjà ajouté mais je refais un exemple complet
    Les fichiers ont un format étrange il y a des sauts de ligne, quand je fais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $ContentFile = Get-Content -Path $Fichier -Raw
    $ContentFile = $ContentFile -split "`r`n"
    
    Les lignes en trop sont supprimés mais pour l'exemple de fichiers que j'ai mis en piece jointe du poste n'est pas le même format de fichier et donc les sauts de lignes en trop reste ...

    Voici la fonction qui récupère les coordonnées des tableaux

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    Function DataTable($File)
    {
        $DataCollect = @()
        $ContentFile = Get-Content -Path "$File" -Raw
        $ContentFile = $ContentFile -split "`r`n"
        $SelectString = $ContentFile | Select-String -Pattern "^Select ", "\d record\(s\) selected."
    
        for ($i = 0; $i -lt $SelectString.Count; $i+=2) {
            
            $DataCollect += [PSCustomObject]@{
                                                StartTable = $SelectString[$i].LineNumber+1
                                                EndTable = ($SelectString[$i+1].LineNumber-2)
                                            }
        }
        $ContentFile = $null
        Return $DataCollect
    }
    

    Puis

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    $Fichier = ".\ExempleTableau.txt"
    $N = DataTable $Fichier
    
    $ContentFile = Get-Content -Path $Fichier -Raw
    $ContentFile = $ContentFile -split "`r`n"
    foreach ($item in $N) {
        $table = $ContentFile[($item.StartTable)..($item.EndTable)].trim() 
        $test = $table | ConvertFrom-Csv -Delimiter ""
    }
    
    Fichiers attachés Fichiers attachés

  6. #6
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement (SCCM, InTune, GPO)
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3 184
    Points : 5 755
    Points
    5 755
    Par défaut
    J'ai du mal à comprendre...

    Excel lui réussi à convertir correctement le fichier ExempleTableau.txt que tu nous joins ?

  7. #7
    Membre actif
    Avatar de troxsa
    Inscrit en
    Novembre 2004
    Messages
    386
    Détails du profil
    Informations personnelles :
    Âge : 50

    Informations forums :
    Inscription : Novembre 2004
    Messages : 386
    Points : 264
    Points
    264
    Par défaut
    Si je copie un tableau du fichier et je le colle dans Excel, je converti et il arrive a trouvé les bonne dimensions du tableau... comme les copies d'écran que j'ai mis
    L'intégralité du fichier pas tester, mais ça ne fonctionnera pas malgré les colonnes de même dimensions car il y a les lignes select qui seront dedans.
    C'est pour ça que j'ai fait la fonction pour récupérer les coordonnées de chaque tableau texte et je ne parviens pas à le convertir en tableau et/ou CSV, chaque tableau a des headers différentes et un nombre de lignes différents.

    Dans l'exemple il faut convertir $table (au format texte) en tableau avec les headers et les données affichée pour pouvoir faire l'exportation en csv ou json,ou XML...

Discussions similaires

  1. Passage d'arguments vba vers Powershell
    Par steph7609123 dans le forum Général VBA
    Réponses: 10
    Dernier message: 24/03/2021, 11h44
  2. VBA vers VBS syntaxe
    Par Eric dans le forum VBScript
    Réponses: 4
    Dernier message: 22/02/2007, 09h41
  3. oleword (de VBA vers C++)
    Par LotfiB dans le forum C++Builder
    Réponses: 29
    Dernier message: 20/12/2006, 02h31
  4. [VB Project] Excel Vba vers Microsoft Project
    Par Mut dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 12/10/2006, 12h06
  5. envoyer le contenu de variables vba vers une feuille excel
    Par Sebastien_INR59 dans le forum Access
    Réponses: 1
    Dernier message: 21/06/2006, 19h58

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo