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

Macros et VBA Excel Discussion :

Mise en forme données d'une feuille Excel V2016 avec VBA [XL-2016]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    responsable qualité
    Inscrit en
    Août 2017
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : responsable qualité
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2017
    Messages : 3
    Par défaut Mise en forme données d'une feuille Excel V2016 avec VBA
    Bonjour à tous,
    débutant sur VBA, j'aurais besoin des conseils et de l'aide d'experts pour créer un petit bout de code VBA sous Excel 2016 afin de mettre en forme les données d'un fichier Excel.
    En pièce jointe, vous trouverez le fichier original (original.xlsm) et l'objectif (objectif.xlsm) après passage dans la moulinette.
    description du fonctionnement attendu en quelques mots:
    dans le fichier original, correspondant a des tests sur des cartes électroniques, on a dans les colonnes A à F différentes données identifiant les cartes électroniques, en particulier le type (modelName) et le numéro de série unique (BoardSN).
    dans la colonne G (Status), on a le résultat du test, qui peut prendre les valeur Pass (carte OK), RPass (carte repassée en test puis déclarée OK), ou Repair (la carte est effectivement en panne et doit être réparée.
    En cas de test échoué (réel défaut ou faux défaut (type Rpass)), le logiciel du banc de test saute une ligne et indique dans les colonnes J (CompName) le composant identifié en défaut et en colonne K (Errtype) le type d'erreur rencontré.
    Afin de pouvoir réaliser une analyse statistique des défauts rencontrés, réels ou faux-défauts, au moyen par exemple d'un tableau dynamique croisé, analyse paretto etc... il est nécessaire de supprimer les espaces vides et donc de recopier autant de fois qu nécessaire les colonnes A à H en face de chaque défaut, sachant que chaque carte non-ok peut comporter un ou plusieurs défauts (lignes surlignées en jaune dans les deux fichiers).
    En bleu-gris sont surlignées les lignes avec un seul défaut, qui ont été modifiées.

    Je remercie par avance chacun des lecteur de ce post pour l'aide que vous pourrez m'apporter. Je bloque sur ce problème depuis plusieurs jours, sans en voir la fin .
    Toutes les questions sont les bienvenues pour clarifier si besoin le "cahier des charges" du code.

    Merci infiniment.
    Fichiers attachés Fichiers attachés

  2. #2
    Membre confirmé
    Inscrit en
    Septembre 2009
    Messages
    70
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 70
    Par défaut
    Bonjour,

    Je me suis créé il y a quelques temps un bout de code pour répondre à ce pb
    en l'adaptant, il devrait répondre à votre problématique

    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    Sub Recopie()
     
    Dim i As Long
    Dim ClDeb, ClFin As Long
    Dim Lgdeb, LgFin As Long
    Dim Result As Integer
     
    i = 1
    p = 0
     
    Lgdeb = InputBox("N° de la première ligne à tester : > 2 ", "ATTENTION")
    LgFin = InputBox("N° de la dernière ligne à tester : > 2 ", "ATTENTION")
    ClDeb = InputBox("N° de la première colonne à recopier", "ATTENTION")
    ClFin = InputBox("N° de la dernière colonne à recopier", "ATTENTION")
     
    Result = MsgBox("vous aller recopier les données des colonnes " & ClDeb & " à " & ClFin & " à partir de la ligne " & Lgdeb & "  jusqu'à la ligne " & LgFin, vbYesNo, "Attention")
     
    If Result = 6 Then
        For p = ClDeb To ClFin
            For i = Lgdeb To LgFin
                If Cells(i, p) = "" Then
            Cells(i, p) = Cells(i - 1, p)
                End If
            Next
        Next
    End If
     
    MsgBox "Terminé"
     
    End Sub

  3. #3
    Membre confirmé
    Inscrit en
    Septembre 2009
    Messages
    70
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 70
    Par défaut
    Je l'ai adapté à votre fichier

    Bonne journée

    François

    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
    19
    Sub Recopie()
     
    Dim i As Long
     
    i = 1
    p = 0
     
    While Cells(i, 9) <> "" Or Cells(i, 10) <> ""
        For p = 1 To 8
            If Cells(i, p) = "" Then
                Cells(i, p) = Cells(i - 1, p)
            End If
        Next
        i = i + 1
    Wend
     
    MsgBox "Terminé"
     
    End Sub
    Fichiers attachés Fichiers attachés

  4. #4
    Candidat au Club
    Homme Profil pro
    responsable qualité
    Inscrit en
    Août 2017
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : responsable qualité
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2017
    Messages : 3
    Par défaut
    Bonjour, merci pour votre réponse très rapide. Je teste ce code et vous tiens informé.
    bien cordialement
    Pierre

  5. #5
    Candidat au Club
    Homme Profil pro
    responsable qualité
    Inscrit en
    Août 2017
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : responsable qualité
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2017
    Messages : 3
    Par défaut
    Bonjour François, merci encore pour votre aide.
    J'ai testé le code, et sauf mauvaise manipulation de ma part, je ne trouve pas le résultat attendu, tel que décrit dans le fichier "objectif".
    En effet, en prenant l'exemple de la première ligne du fichier original, je souhaiterais "remonter" les données en colonnes J à M présentent en ligne 2 vers la ligne 1.
    Une possibilité consisterait peut-être (c'est le débutant qui parle...) a ensuite sélectionner les lignes avec un status "Rpass" ou "Repair" dont les colonnes J à M sont vides et les supprimer.
    qu'en pensez-vous?
    Merci et bonne journée

  6. #6
    Membre confirmé
    Inscrit en
    Septembre 2009
    Messages
    70
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 70
    Par défaut
    Bonjour Pierre,

    Autant pour moi, je n'étais pas allé jusqu'au bout

    Ci dessous le code qui devrait répondre à votre demande

    Cdlt

    François

    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
    19
    20
    21
    22
    23
    24
    25
    26
    Sub Recopie()
     
    Dim i As Long
     
    i = 2
    p = 0
     
    While Cells(i, 9) <> "" Or Cells(i, 10) <> ""
        If Cells(i, 1) = "" Then
            Range(Cells(i - 1, 1), Cells(i - 1, 9)).Select
            Selection.Copy
            Cells(i, 1).Select
            ActiveSheet.Paste
            Application.CutCopyMode = False
            If Cells(i - 1, 10) = "" Then
                Rows(i - 1).Select
                Selection.Delete Shift:=xlUp
                i = i - 1
            End If
        End If
        i = i + 1
    Wend
     
    MsgBox "Terminé"
     
    End Sub

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Importer des données d'une feuille Excel vers TABLE
    Par souminet dans le forum Bases de données
    Réponses: 1
    Dernier message: 07/11/2006, 09h10
  2. Réponses: 2
    Dernier message: 16/10/2006, 11h24
  3. Importer les données d'une feuille EXCEL
    Par codial dans le forum Bases de données
    Réponses: 4
    Dernier message: 05/02/2006, 09h07
  4. Réponses: 3
    Dernier message: 16/02/2005, 15h39
  5. [CR]Importer des données d'une feuille excel
    Par rolan dans le forum SAP Crystal Reports
    Réponses: 3
    Dernier message: 17/12/2004, 22h32

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