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 :

Macro Excel Vba


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2012
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2012
    Messages : 25
    Par défaut Macro Excel Vba
    Bonjour,

    Je suis débutante en VBA. Dans le cadre de mon stage, je dois effectuer une macro qui doit faire l’exécution suivante:
    j'aimerais copier une colonne d'un fichier .xls sur un autre fichier .xls qui vient en fait d'un .csv. Les deux fichiers ont les mêmes en-tête dans les mêmes classeurs. Ils se trouvent ds le même dossier.
    La difficulté ici est de copier la colonne de l'ancien fichier et la transférer dans l'autre fichier qui lui est mis à j (cela signifie qu'il peut y avoir moins ou plus de lignes ds celui).
    Pour être plus claire depuis un export.csv via la macro je sors un fichier .xls. A l'intérieur de ce fichier, il y a un tableau. Mon maître de stage ajoute des commentaire ds la colonne par ex P. Tout les 2jours, depuis l'export je mets à jour le fichier .xls. Il y a donc des lignes qui s'ajoutent ou se suppriment. Ce que me demande mon maitre de stage c'est de recopier les commentaires qu'il a ajouté et de les mettre ds le nouveau xls.

    Merci par avance de vos réponses!!
    Bises

  2. #2
    Membre confirmé
    Femme Profil pro
    Cyberdocumentaliste
    Inscrit en
    Avril 2012
    Messages
    113
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Cyberdocumentaliste

    Informations forums :
    Inscription : Avril 2012
    Messages : 113
    Par défaut
    Bonjour,

    Si tu veux simplement copier une colonne à la place d'une autre, c'est assez simple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Range("A1:A500").Select 'Sélectionne de la cellule A1 à la cellule A500
    Selection.Copy
     
    Workbooks.Open ("H:\DATA\Test\NouveauClasseur.xls") 'Ouvre le deuxième classeur
    Workbooks("NouveauClasseur.xls").Activate
     
    Columns("A").Select 'Sélectionne la colonne dans laquelle copier
     
    ActiveSheet.Paste 'Copie dans le deuxième classeur
    En espérant que cela soit suffisant

  3. #3
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2012
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2012
    Messages : 25
    Par défaut
    oui mais le problème c'est qu'il y a des lignes où rien est inscrit. De plus, ds le fichier .xls qui est mis à j, il y a des lignes qui se sont soit ajoutées ou supprimées. Du coup, il faut faire attention au fait que le commentaire situé sur le n° de la ligne (ex ligne 5) se retrouve à la même ligne ds le nouveau fichier .xls
    Je ne sais pas si j'ai été claire?

    Un stagiaire avant moi a fait ça mais ça ne marche pas. Pourtant ça marché avant qu'il s'en aille. Je ne sais pas pourquoi.
    ca peux te donner une petite idée...

    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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    Private Sub CommandButton3_Click()
     
        Unload Me
     
        Dim fichier As String
        Dim i As Integer
        Dim j As Integer
        Dim nbLigne As Integer
        Dim trouver As Boolean
        Dim numCl As Integer
     
     
        fichier = TextBox1.Value
        chemin = ThisWorkbook.Path
        Workbooks.Open (chemin & "\" & fichier)
        Windows(fichier).Activate
        Sheets("Support").Select
        nbLigne = Cells(1, 1).CurrentRegion.Rows.Count
     
     
        For i = 2 To Cells(1, 1).CurrentRegion.Rows.Count
            Windows(fichier).Activate
            Sheets("Support").Select
            Cells(i, 16).Select
            Selection.Copy
            numCl = Cells(i, 1)
            trouver = True
            j = 2
     
            If IsEmpty(Cells(i, 16)) = False Then
                Windows("Restitutions.xls").Activate
                Sheets("Support").Select
     
                While trouver And j < nbLigne + 1
                    Cells(j, 1).Select
                    If Cells(j, 1).Value = numCl Then
                        Cells(j, 16).Select
                        ActiveSheet.Paste
                        trouver = False
                    Else
                        j = j + 1
                    End If
                Wend
            End If
        Next i
     
    End Sub

  4. #4
    Membre confirmé
    Femme Profil pro
    Cyberdocumentaliste
    Inscrit en
    Avril 2012
    Messages
    113
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Cyberdocumentaliste

    Informations forums :
    Inscription : Avril 2012
    Messages : 113
    Par défaut
    Bonjour,

    Désolée mais j'ai du mal à visualiser le problème Si tu copies la colonne de ton ancien document vers ton nouveau document, tout sera exactement à la même place que dans le document d'origine, et donc pas de soucis au niveau des lignes ajoutées ou enlevées. Le commentaire à la ligne 5 se retrouvera donc bien à la ligne 5 du nouveau fichier Excel.

    La question est : y a t il des lignes du premier fichier qui ne doivent pas être copiées dans le deuxième ? Si effectivement certaines lignes ne doivent pas être copiées, comment sait on lesquelles doivent l'être, ou inversement, lesquelles ne doivent pas être copiées ?

  5. #5
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2012
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2012
    Messages : 25
    Par défaut
    Oui je vois ce que tu veux dire. Mais le premier document est en fait une extraction à partir d'un export.csv. J'effectue cette extraction via une macro qui existe déjà (fait par un autre stagaire). Cette macro permet d'extraire un fichier restitutions.xls relativement bien présenté avec 4 feuilles où on retrouve des tableaux, tableau dynamique, etc. Et je veux ajouter dans cette extraction les commentaires issu d'un autre fichier .xls directement via la même macro. Du coup l'ancien stagiaire a eu l'idée de créer un command-bouton où on inclut le fichier avec les commentaires.Le code dont je t'ai donné devrait permettre ainsi de récupérer les commentaire de la colonne P de la feuille 2 et les copier ds la restitution.xls.
    C'est peut être plus claire?

  6. #6
    Membre Expert
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2011
    Messages
    1 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 858
    Par défaut
    Bonjour,

    J’ai effectué le test avec les éléments suivants :
    Dans le classeur "Restitutions.xlsm", j’ai créé un Userform qui contient la TextBox1 et le CommandButton3.
    Le code de cet Userform est repris de celui que tu as indiqué :
    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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    Option Explicit
    Private Sub CommandButton3_Click()
    Unload Me
    Dim Fichier As String, Chemin As String
    Dim i As Integer, j As Integer, NbLigne As Integer, NumCl As Integer
    Dim Trouver As Boolean
    Dim Wb1 As Workbook, Wb2 As Workbook
    Dim Ws1 As Worksheet, Ws2 As Worksheet
     
        Application.ScreenUpdating = False
        'Nouveau fichier issu de la mise à jour
        Set Wb1 = Workbooks("Restitutions.xlsm")
        Set Ws1 = Wb1.Worksheets("Support")
     
        'Ancien fichier où se trouvent les commentaires
        Fichier = TextBox1.Text
        Chemin = ThisWorkbook.Path
        Set Wb2 = Workbooks.Open(Chemin & "\" & Fichier)
        Set Ws2 = Wb2.Worksheets("Support")
     
            Ws1.Activate
            'Nombre de lignes dans l'ancien fichier
            NbLigne = Ws2.Cells(1, 1).CurrentRegion.Rows.Count
            'On balaye toutes les lignes de l'ancien fichier
            For i = 2 To NbLigne
                'On copie le commentaire
                Ws2.Cells(i, 16).Copy
                'On relève l'identifiant de la ligne où doit se trouver le commentaire
                NumCl = Ws2.Cells(i, 1)
                Trouver = True
                j = 2
                'Si le commentaire existe
                If IsEmpty(Ws2.Cells(i, 16)) = False Then
                'On balaye toutes les lignes du nouveau fichier afin de trouver le même identifiant
                    While Trouver And j < NbLigne + 1
                        'Si le même identifiant est trouvé, on copie le commentaire
                        If Ws1.Cells(j, 1).Value = NumCl Then
                            Ws1.Paste Destination:=Ws1.Cells(j, 16)
                            Trouver = False
                        Else
                            j = j + 1
                        End If
                    Wend
                End If
            Next i
        Application.CutCopyMode = False
        Application.ScreenUpdating = True
    End Sub
    La procédure va bien copier les commentaires contenus dans la colonne P de l’ancien fichier et les colle dans la colonne P du nouveau fichier (Restitutions.xlsm), à l’emplacement correspondant à la ligne identifiée avec la valeur de la colonne A.

    Cordialement.

  7. #7
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2012
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2012
    Messages : 25
    Par défaut
    Merci déjà pour ton réponse.
    C'est étrange, ton code s’exécute mais ne marche pas. Je ne vois pas les commentaires ds le fichier restitutions.xls.
    Je ne sais pas ce qui bloque...

  8. #8
    Membre Expert
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2011
    Messages
    1 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 858
    Par défaut
    Pour en dire plus, il faudrait à minima que je vois un exemplaire simplifié de tes 2 classeurs.

  9. #9
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2012
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2012
    Messages : 25
    Par défaut
    Oui bien sur. Tu trouveras en pièce jointe les 3 documents suivants:
    1.la macro qui permet d'extraire le fichier Restitutions.xls à partir de l'export.csv (que je n'ai pas pu envoyer).
    2.le fichier Restitutions.xls qui est mis à j tout les 2 jours
    3.l'ancien fichier Restitutions.03-07-2012.xls où il y a les commentaires.

    J'espère que ça t'aideras.
    Merci!!

    Macro.xls

    Restitutions.03-07-2012.xls

    Restitutions.xls

  10. #10
    Membre Expert
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2011
    Messages
    1 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 858
    Par défaut
    J’ai enregistré mon code dans la procédure CommandButton3_Click(), code de userform, classeur Macro.xls

    Ensuite, j’ai effectué le test suivant :

    • J’ouvre le classeur Macro.xls.
    • J’ouvre le classeur Restitutions.xls
    • Dans Macro.xls / feuille 1, je clique sur "Lancer Traitement" ;
    • Dans la TextBox, je saisis Restitutions.03-07-2012.xls ;
    • Je clique sur le bouton "Commentaire";

    La feuille "Support" du classeur Restitutions.xls est bien mise à jour avec les commentaires de la feuille "Support" du classeur "Restitutions.03-07-2012.xls".
    Que dire ?

  11. #11
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2012
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2012
    Messages : 25
    Par défaut
    D'habitude je n'ouvre pas le fichier Restitutions.xls. J'ouvre seulement la macro, je clique sur "lancer un traitement". Je coche tout les boutons et ensuite je clique sur "lancer" pour effectuer la mise à jour.
    En effet j'ai fait ce que vous avez monter et ça marche mais j'ai besoin d'effectuer la mise à j en cliquant sur lancer. Du coup quand je fais ça je ne vois pas les commentaires.

  12. #12
    Membre Expert
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2011
    Messages
    1 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 858
    Par défaut
    As-tu essayé, après avoir effectué la mise à jour comme tu l’indiques, de saisir le nom du fichier "Restitutions.03-07-2012.xls" puis cliquer sur "Commentaire" ?

  13. #13
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2012
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2012
    Messages : 25
    Par défaut
    L'ancien stagiaire effectuait en même temps la mise à jour et le transfert des commentaires dans le nouveau fichier Restitutions.xls. Autrement dit, il saisissait le fichier Restitutions.03-07-2012.xls et cliquait sur "Lancer".
    Normalement on fonctionne de la manière suivante:
    -on a un dossier où on retrouve l'export.csv, la macro.xls, le fichier Restitutions.xls, et l'autre fichier Restitutions.03-07-2012.xls (ce dernier change)
    -on a créé un sous dossier qu'on nomme Restitutions. A l'intérieur de ce sous dossier, on met toutes les restitutions mises à jour (ex: Restitutions.01-07-2012.xls, Restitutions.02-07-2012.xls). On les classe par date.
    -ensuite on active la macro et celle-ci nous ressort un nouveau fichier Restitutions que l'on renomme et qu'on le met dans le sous dossier et ainsi de suite.
    J'ai l'impression que je vais devoir changer de méthode. Je vais d'abord effectuer la mise à j du fichier en cliquant sur "Lancer" et je vais garder son intitulé Restitutions (en non Restitutions.jj.mm.aaaa.xls) afin qu'il corresponde au nom du code et enfin je vais saisir le fichier Restitutions.03-07-2012.xls et cliquer sur "commentaire".

  14. #14
    Membre Expert
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2011
    Messages
    1 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 858
    Par défaut
    L’important est que tu obtiennes un résultat correct. Si ça fonctionne avec cette nouvelle méthode, ça te laisse du temps pour compléter ton analyse et faire évoluer ton programme.

    Cordialement.

  15. #15
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2012
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2012
    Messages : 25
    Par défaut
    Oui complétement. Merci beaucoup de votre aide!

    à bientôt

  16. #16
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2012
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2012
    Messages : 25
    Par défaut
    Bonjour tout le monde!!

    Suite à ma 1ere demande qui était de copier une colonne d'un fichier et la coller dans un nouveau fichier à la même colonne et même feuille, j'aurais besoin d'effectuer la même requête pour des colonnes supplémentaires.
    Je suppose que je dois me servir du même code que gFZT82 m'a donné au début qui marche très bien. Mais je ne sais pas trop comment l'utiliser pour l'appliquer aux autres colonnes.
    Merci par avance de vos réponses!!

    Cordialement.
    Vanessa

  17. #17
    Membre Expert
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2011
    Messages
    1 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 858
    Par défaut
    Bonjour,

    Ta première demande n’est pas de copier une colonne d'un fichier et la coller dans un nouveau fichier à la même colonne et même feuille.

    Le traitement consiste :
    1- Dans un classeur temporaire (Restitutions.03-07-2012.xls par exemple) ,
    • dans une colonne allouée à des commentaires, identifier les cellules non vides,
    • le cas échéant, copier le texte et relever l’identifiant de la ligne correspondante.

    2- Dans un classeur récapitulatif (Restitutions.xls) :
    • rechercher s’il existe une ligne avec le même identifiant.
    • le cas échéant, coller le texte dans la colonne allouée aux commentaires.

    La procédure qui réalise ce traitement est lancée par le bouton de commande « Commentaires » (Userform / CommandButton3_Click()).
    Si ton besoin est d’effectuer le même traitement avec une autre colonne, tu dois effectivement pouvoir te servir facilement de cette procédure.
    Dis-nous ce qui te bloque.

    Cordialement.

  18. #18
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2012
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2012
    Messages : 25
    Par défaut
    Oui tout à fait c'est ce que je souhaite faire. Copier 3 colonnes supplémentaires de l'ancien fichier d'une autre feuille et les coller dans le nouveau fichier aux mêmes colonnes. Toutefois, je ne sais pas comment m'y prendre. J'ai essayé la manière suivante (en reprenant le code d'avant) mais ça ne marche pas:
    j'ai créé une nouvelle macro appelé AutreCommentaires que j'appelle ds
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Private Sub CommandButton3_Click()
    Soit,

    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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    Private AutreCommentaires()
     
        Dim Fichier As String, Chemin As String
        Dim i As Integer, j As Integer, NbLigne As Integer, NumC2 As Integer, NumC3 As Integer, NumC4 As Integer
        Dim Trouver As Boolean
        Dim Wb1 As Workbook, Wb2 As Workbook
        Dim Ws1 As Worksheet, Ws2 As Worksheet
     
     
        'Pour l'onglet closed
         Application.ScreenUpdating = False
        'Nouveau fichier issu de la mise à jour
        Set Wb1 = Workbooks("Restitutions.xls")
        Set Ws1 = Wb1.Worksheets("Closed")
     
        'Ancien fichier où se trouvent les commentaires
        Fichier = TextBox1.Text
        Chemin = ThisWorkbook.Path
        Set Wb2 = Workbooks.Open(Chemin & "\" & Fichier)
        Set Ws2 = Wb2.Worksheets("Closed")
     
            Ws1.Activate
            'Nombre de lignes dans l'ancien fichier
            NbLigne = Ws2.Cells(1, 1).CurrentRegion.Rows.Count
            'On balaye toutes les lignes de l'ancien fichier
            For i = 2 To NbLigne
                'On copie les commentaires
                Ws2.Cells(i, 18).Copy
                Ws2.Cells(i, 19).Copy
                Ws2.Cells(i, 20).Copy
                'On relève l'identifiant de la ligne où doit se trouver les commentaires
                NumC2 = Ws2.Cells(i, 1)
                Trouver = True
                j = 2
                NumC3 = Ws2.Cells(i, 1)
                Trouver = True
                j = 2
                NumC4 = Ws2.Cells(i, 1)
                Trouver = True
                j = 2
                'Si le commentaire existe
                If IsEmpty(Ws2.Cells(i, 18)) = False Then
                If IsEmpty(Ws2.Cells(i, 19)) = False Then
                If IsEmpty(Ws2.Cells(i, 20)) = False Then
                'On balaye toutes les lignes du nouveau fichier afin de trouver le même identifiant
                    While Trouver And j < NbLigne + 1
                        'Si le même identifiant est trouvé, on copie le commentaire
                        If Ws1.Cells(j, 1).Value = NumC2 Then
                            Ws1.Paste Destination:=Ws1.Cells(j, 18)
                            Trouver = False
                        Else
                            j = j + 1
                        End If
                        If Ws1.Cells(j, 1).Value = NumC3 Then
                            Ws1.Paste Destination:=Ws1.Cells(j, 19)
                            Trouver = False
                        Else
                            j = j + 1
                        End If
                        If Ws1.Cells(j, 1).Value = NumC4 Then
                            Ws1.Paste Destination:=Ws1.Cells(j, 20)
                            Trouver = False
                        Else
                            j = j + 1
                        End If
                    Wend
                End If
                End If
                End If
            Next i
     
        Application.CutCopyMode = False
        Application.ScreenUpdating = True
    End Sub
    Dites moi si je n'ai pas été claire autant dans mon besoin que dans mon code.
    Merci!

  19. #19
    Membre Expert
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2011
    Messages
    1 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 858
    Par défaut
    Pour réaliser cette copie, tu dois traiter une colonne après l’autre.
    C’est l’objet de la boucle for k=18 to 20
    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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    Private Sub AutreCommentaires()
    Dim Fichier As String, Chemin As String
    Dim i As Integer, j As Integer, NbLigne As Integer, NumC As Integer
    Dim Trouver As Boolean
    Dim Wb1 As Workbook, Wb2 As Workbook
    Dim Ws1 As Worksheet, Ws2 As Worksheet
     
    'Pour l'onglet closed
    Application.ScreenUpdating = False
    'Nouveau fichier issu de la mise à jour
    Set Wb1 = Workbooks("Restitutions.xls")
    Set Ws1 = Wb1.Worksheets("Closed")
     
    'Ancien fichier où se trouvent les commentaires
    Fichier = TextBox1.Text
    Chemin = ThisWorkbook.Path
    Set Wb2 = Workbooks.Open(Chemin & "\" & Fichier)
    Set Ws2 = Wb2.Worksheets("Closed")
     
    Ws1.Activate
    'Nombre de lignes dans l'ancien fichier
    NbLigne = Ws2.Cells(1, 1).CurrentRegion.Rows.Count
    'On balaye les 3 colonnes de commentaires de l'ancien fichier
    For k = 18 To 20
        'On balaye toutes les lignes de l'ancien fichier
        For i = 2 To NbLigne
            'On copie les commentaires
            Ws2.Cells(i, k).Copy
            'On relève l'identifiant de la ligne où doit se trouver les commentaires
            NumC = Ws2.Cells(i, 1)
            Trouver = True
            j = 2
            'Si le commentaire existe
            Debug.Print Ws2.Cells(i, k)
            If IsEmpty(Ws2.Cells(i, k)) = False Then
                'On balaye toutes les lignes du nouveau fichier afin de trouver le même identifiant
                While Trouver And j < NbLigne + 1
                    'Si le même identifiant est trouvé, on copie le commentaire
                    If Ws1.Cells(j, 1).Value = NumC Then
                        Ws1.Paste Destination:=Ws1.Cells(j, k)
                        Trouver = False
                    Else
                        j = j + 1
                    End If
                Wend
            End If
        Next i
    Next k
    Application.CutCopyMode = False
    Application.ScreenUpdating = True
    End Sub
    Cordialement.

  20. #20
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2012
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2012
    Messages : 25
    Par défaut
    Bonjour,

    Merci pour votre réponse, le code marche bien. Toutefois je n'arrive pas à le faire fonctionner en l'appelant dans le CommandButton3_Click. Quand je saisis Restitutions.10-07-2012.xls et je lance le traitement, je ne vois qu'uniquement les commentaires de l'onglet "Support" mais pas ceux de l'onglet "Closed.
    J'ai fais plusieurs tests pour voir ce qui n'allais pas. Je ne pense pas que ce soit le code car j'ai essayé de lancer le traitement avec le nouveau code et j'ai mis l'autre code en commentaire et ça fonctionne bien. Je vois effectivement les commentaires dans l'onglet "Closed". En revanche, quand je lance les 2 codes en même temps en appelant AutreCommentaire dans le CommandButton3_Click, ça ne marche pas.
    C'est bizarre...
    Si vous aurez une petite idée de la solution, ça serait génial.
    Merci bcp!!

    Cordialement
    Vanessa

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Appeler une dll ou un autre module vba depuis une macro excel vba
    Par technobiz dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 20/11/2008, 14h24
  2. Réponses: 3
    Dernier message: 19/03/2008, 21h44
  3. Macro Excel VBA : création automatique de 140 graphes/graphiques
    Par techneric dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 11/02/2007, 10h13
  4. macro excel vba
    Par fildupa dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 20/12/2006, 21h29

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