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 :

VBA récupérer des données dans différentes cellules sur fichier A pour coller sur fichier B


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Femme Profil pro
    Gestionnaires Administratifs
    Inscrit en
    Mars 2024
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Gestionnaires Administratifs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mars 2024
    Messages : 13
    Points : 3
    Points
    3
    Par défaut VBA récupérer des données dans différentes cellules sur fichier A pour coller sur fichier B
    Bonjour,

    Je suis novice sur la programmation de VBA.

    J'ai créer ce programme avec l'aide de Youtube et je comprends pas pourquoi il bloque au niveau du texte en rouge.

    Pouvez-vous m'aider svp ?

    Je dois générer ce fichier souvent pour l'exporter vers mon fichier de travail

    Merci par avance pour votre aide



    Sub copier_coller_celluleA1_fichier2feuil1()

    Dim wk_fichier As Workbook
    Dim ws_fichier1feuil1 As Worksheet

    Dim wk_fichier2 As Workbook
    Dim ws_fichier2feuil1 As Worksheet

    Dim der_ligne_1 As Long
    Dim der_ligne_2 As Long

    'définir les variables fichiers et onglets
    Set wk_fichier = ActiveWorkbook
    Set ws_fichier1feuil1 = wk_fichier.Worksheets(1)

    Set wk_fichier2 = Application.Workbooks.Open("C:\Users\Jam\Desktop\Tableau JAM macro\EXTRACTION declaration-2023-04-20_11-58.xlsx")
    Set ws_fichier2feuil1 = wk_fichier2.Worksheets(1)


    'copier coller une plage de cellule

    ws_fichier1feuil1.Range(ws_feuil1.Cells(2, 1), ws_feuil1.Cells(der_ligne_1, 2)).Copy ws_fichier2feuil1.Cells(der_ligne_2 + 1, 1)

    'enregistrer et fermer fichier 2
    wk_fichier2.Close (True)


    End Sub

  2. #2
    Rédacteur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2013
    Messages
    947
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Août 2013
    Messages : 947
    Points : 4 058
    Points
    4 058
    Par défaut
    Citation Envoyé par Jam97 Voir le message
    je comprends pas pourquoi il bloque au niveau du texte en rouge.
    Bonjour,
    Peut-être parce que "ws_feuil1" n'existe pas, c'est "ws_fichier1feuil1" qu'il faudrait utiliser.
    Et que "der_ligne_1" et "der_ligne_2" sont à zéro car non renseignées.
    Et peut-être d'autres choses que je n'ai pas vu.

  3. #3
    Membre expérimenté
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 119
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 119
    Points : 1 645
    Points
    1 645
    Par défaut
    Salut,

    Note:
    Renomme tes variables, en utilisant des noms plus lisibles et plus parlant.
    Ca évitera ce genre d'erreur à l'avenir.

    De plus, compile ton code,
    le compilateur est ton ami et sera le premier à te signaler ces anomalies.

  4. #4
    Candidat au Club
    Femme Profil pro
    Gestionnaires Administratifs
    Inscrit en
    Mars 2024
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Gestionnaires Administratifs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mars 2024
    Messages : 13
    Points : 3
    Points
    3
    Par défaut
    Merci pour vos réponses j'ai trouvé mon erreur. (Laurent_ott et deedolith)

    'identifier dernière ligne de la feuil1
    der_ligne_1 = ws_fichier2feuil1.Cells(Rows.Count, 1).End(xlUp).Row

    'copier coller une plage de cellule

    ws_fichier2feuil1.Range(ws_fichier2feuil1.Cells(2, 1), ws_fichier2feuil1.Cells(der_ligne_1, 1)).Copy ws_fichier1feuil1.Cells(der_ligne_2 + 2, 2)


    J'avais oublié d'identifier ma dernière ligne et Laurent_ott avait raison, je me suis trompé quand j'ai nommé mes fichiers.

    J'ai une deuxième soucis à régler.

    Je voudrais coller seulement les valeurs. Je suis bloqué pour utiliser la fonction PasteSpecial

    Avez-vous une idée svp ?

  5. #5
    Membre éprouvé
    Inscrit en
    Décembre 2002
    Messages
    801
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 801
    Points : 1 260
    Points
    1 260
    Par défaut
    Bonjour, voici la syntaxe pour coller uniquement les valeurs: ws_fichier1feuil1.Cells(der_ligne_2 + 2, 2).PasteSpecial Paste:=xlPasteValues

  6. #6
    Candidat au Club
    Femme Profil pro
    Gestionnaires Administratifs
    Inscrit en
    Mars 2024
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Gestionnaires Administratifs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mars 2024
    Messages : 13
    Points : 3
    Points
    3
    Par défaut
    Citation Envoyé par Franc Voir le message
    Bonjour, voici la syntaxe pour coller uniquement les valeurs: ws_fichier1feuil1.Cells(der_ligne_2 + 2, 2).PasteSpecial Paste:=xlPasteValues
    Bonjour,

    Merci pour votre retour mais le système m'indique "Erreur de compilation : Attendu : fin d'instruction "

    Avez-vous une idée pour résoudre cette erreur svp ?

  7. #7
    Membre éprouvé
    Inscrit en
    Décembre 2002
    Messages
    801
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 801
    Points : 1 260
    Points
    1 260
    Par défaut
    Citation Envoyé par Jam97 Voir le message
    Bonjour,

    Merci pour votre retour mais le système m'indique "Erreur de compilation : Attendu : fin d'instruction "

    Avez-vous une idée pour résoudre cette erreur svp ?
    J'ai modifié ta macro avec l'instruction que je t'ai fournie pour copier/coller et la compilation s'exécute sans erreur.
    A moins que tu aies modifié ta macro par rapport à celle que tu as fournie, je ne vois pas où est le problème, il n'y a que des Dim, Set et 2 lignes de code.

  8. #8
    Membre confirmé Avatar de Valtrase
    Homme Profil pro
    Jeune retraité...
    Inscrit en
    Janvier 2016
    Messages
    361
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Jeune retraité...
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Janvier 2016
    Messages : 361
    Points : 643
    Points
    643
    Par défaut
    Bonjour,
    A tester comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ws_fichier2feuil1.Range(ws_fichier2feuil1.Cells(2, 1),  ws_fichier2feuil1.Cells(der_ligne_1, 1)).Copy
    ws_fichier1feuil1.Cells(der_ligne_2 + 2, 2).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
    Jean-Paul sous Office 365 et Windows 10/11 (Intel I7 16Go)

    Si vous avez trouvé réponse à votre question penser à la passer en Vous avez aimé la discussion alors un fait toujours plaisir.
    Le savoir n'a de valeur que s'il est partagé.
    La vérité de demain se nourrit de l'erreur d'hier. Antoine de Saint-Exupéry

  9. #9
    Candidat au Club
    Femme Profil pro
    Gestionnaires Administratifs
    Inscrit en
    Mars 2024
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Gestionnaires Administratifs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mars 2024
    Messages : 13
    Points : 3
    Points
    3
    Par défaut
    Citation Envoyé par Franc Voir le message
    J'ai modifié ta macro avec l'instruction que je t'ai fournie pour copier/coller et la compilation s'exécute sans erreur.
    A moins que tu aies modifié ta macro par rapport à celle que tu as fournie, je ne vois pas où est le problème, il n'y a que des Dim, Set et 2 lignes de code.
    Non j'ai rien modifié.

  10. #10
    Candidat au Club
    Femme Profil pro
    Gestionnaires Administratifs
    Inscrit en
    Mars 2024
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Gestionnaires Administratifs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mars 2024
    Messages : 13
    Points : 3
    Points
    3
    Par défaut
    Citation Envoyé par Valtrase Voir le message
    Bonjour,
    A tester comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ws_fichier2feuil1.Range(ws_fichier2feuil1.Cells(2, 1),  ws_fichier2feuil1.Cells(der_ligne_1, 1)).Copy
    ws_fichier1feuil1.Cells(der_ligne_2 + 2, 2).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
    Merci cela fonctionne sur les premières lignes mais à partir de la ligne en rouge cela bloque

    Option Explicit

    Sub copier_coller_cellule_fichier2feuil1()

    Dim wk_fichier As Workbook
    Dim ws_fichier1feuil1 As Worksheet

    Dim wk_fichier2 As Workbook
    Dim ws_fichier2feuil1 As Worksheet

    Dim der_ligne_1 As Long
    Dim der_ligne_2 As Long

    'définir les variables fichiers et onglets
    Set wk_fichier = ActiveWorkbook
    Set ws_fichier1feuil1 = wk_fichier.Worksheets(1)

    Set wk_fichier2 = Application.Workbooks.Open("C:\Users\JAM97\Desktop\ETP Tableau JAM macro\EXTRACTION declaration-programme-etp_2023-04-20_11-58.xlsx")
    Set ws_fichier2feuil1 = wk_fichier2.Worksheets(1)

    'identifier dernière ligne de la feuil1
    der_ligne_1 = ws_fichier2feuil1.Cells(Rows.Count, 1).End(xlUp).Row

    'copier coller une plage de cellule

    ws_fichier2feuil1.Range(ws_fichier2feuil1.Cells(2, 1), ws_fichier2feuil1.Cells(der_ligne_1, 1)).Copy
    ws_fichier1feuil1.Cells(der_ligne_2 + 2, 2).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
    ws_fichier2feuil1.Range(ws_fichier2feuil1.Cells(2, 40), ws_fichier2feuil1.Cells(der_ligne_1, 40)).Copy
    ws_fichier1feuil1.Cells(der_ligne_2 + 2, 5).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
    ws_fichier2feuil1.Range(ws_fichier2feuil1.Cells(2, 44), ws_fichier2feuil1.Cells(der_ligne_1, 44)).Copy
    ws_fichier1feuil1.Cells(der_ligne_2 + 2, 6).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
    ws_fichier2feuil1.Range(ws_fichier2feuil1.Cells(2, 41), ws_fichier2feuil1.Cells(der_ligne_1, 41)).Copy
    ws_fichier1feuil1.Cells(der_ligne_2 + 2, 8).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
    ws_fichier2feuil1.Range(ws_fichier2feuil1.Cells(2, 18), ws_fichier2feuil1.Cells(der_ligne_1, 18)).Copy
    ws_fichier1feuil1.Cells(der_ligne_2 + 2, 10).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
    ws_fichier2feuil1.Range(ws_fichier2feuil1.Cells(2, 16), ws_fichier2feuil1.Cells(der_ligne_1, 16)).Copy
    ws_fichier1feuil1.Cells(der_ligne_2 + 2, 13).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
    ws_fichier2feuil1.Range(ws_fichier2feuil1.Cells(2, 19), ws_fichier2feuil1.Cells(der_ligne_1, 19)).Copy
    ws_fichier1feuil1.Cells(der_ligne_2 + 2, 14).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
    ws_fichier2feuil1.Range(ws_fichier2feuil1.Cells(2, 26), ws_fichier2feuil1.Cells(der_ligne_1, 26)).Copy
    ws_fichier1feuil1.Cells(der_ligne_2 + 2, 16).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
    ws_fichier2feuil1.Range(ws_fichier2feuil1.Cells(2, 28), ws_fichier2feuil1.Cells(der_ligne_1, 28)).Copy
    ws_fichier1feuil1.Cells(der_ligne_2 + 2, 17).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
    ws_fichier2feuil1.Range(ws_fichier2feuil1.Cells(2, 29), ws_fichier2feuil1.Cells(der_ligne_1, 29)).Copy
    ws_fichier1feuil1.Cells(der_ligne_2 + 2, 18).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
    ws_fichier2feuil1.Range(ws_fichier2feuil1.Cells(2, 20), ws_fichier2feuil1.Cells(der_ligne_1, 20)).Copy
    ws_fichier1feuil1.Cells(der_ligne_2 + 2, 19).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
    ws_fichier2feuil1.Range(ws_fichier2feuil1.Cells(2, 21), ws_fichier2feuil1.Cells(der_ligne_1, 21)).Copy
    ws_fichier1feuil1.Cells(der_ligne_2 + 2, 21).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
    ws_fichier2feuil1.Range(ws_fichier2feuil1.Cells(2, 22), ws_fichier2feuil1.Cells(der_ligne_1, 22)).Copy
    ws_fichier1feuil1.Cells(der_ligne_2 + 2, 22).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
    ws_fichier2feuil1.Range(ws_fichier2feuil1.Cells(2, 2), ws_fichier2feuil1.Cells(der_ligne_1, 2)).Copy
    ws_fichier1feuil1.Cells(der_ligne_2 + 2, 24).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
    ws_fichier2feuil1.Range(ws_fichier2feuil1.Cells(2, 9), ws_fichier2feuil1.Cells(der_ligne_1, 9)).Copy
    ws_fichier1feuil1.Cells(der_ligne_2 + 2, 27).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False


    'enregistrer et fermer fichier 2
    wk_fichier2.Close (True)


    End Sub

  11. #11
    Membre expérimenté
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 119
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 119
    Points : 1 645
    Points
    1 645
    Par défaut
    Ne serait-ce pas mieux de passer par Power Query ?

  12. #12
    Membre confirmé Avatar de Valtrase
    Homme Profil pro
    Jeune retraité...
    Inscrit en
    Janvier 2016
    Messages
    361
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Jeune retraité...
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Janvier 2016
    Messages : 361
    Points : 643
    Points
    643
    Par défaut
    Bonjour,

    Ça bloque, n'est pas très explicite, non ?

    Quel est le message d'erreur ? Si message d'erreur il y a.
    Jean-Paul sous Office 365 et Windows 10/11 (Intel I7 16Go)

    Si vous avez trouvé réponse à votre question penser à la passer en Vous avez aimé la discussion alors un fait toujours plaisir.
    Le savoir n'a de valeur que s'il est partagé.
    La vérité de demain se nourrit de l'erreur d'hier. Antoine de Saint-Exupéry

  13. #13
    Candidat au Club
    Femme Profil pro
    Gestionnaires Administratifs
    Inscrit en
    Mars 2024
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Gestionnaires Administratifs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mars 2024
    Messages : 13
    Points : 3
    Points
    3
    Par défaut
    Citation Envoyé par Valtrase Voir le message
    Bonjour,

    Ça bloque, n'est pas très explicite, non ?

    Quel est le message d'erreur ? Si message d'erreur il y a.
    J'ai fermé et re-tester et cela fonctionne

    L'erreur etait sur "Débogage"

  14. #14
    Candidat au Club
    Femme Profil pro
    Gestionnaires Administratifs
    Inscrit en
    Mars 2024
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Gestionnaires Administratifs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mars 2024
    Messages : 13
    Points : 3
    Points
    3
    Par défaut
    Citation Envoyé par deedolith Voir le message
    Ne serait-ce pas mieux de passer par Power Query ?
    Je ne connais pas, Je vais tester la prochaine fois.

  15. #15
    Membre éprouvé
    Inscrit en
    Décembre 2002
    Messages
    801
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 801
    Points : 1 260
    Points
    1 260
    Par défaut
    Salut, ce qui me semble étrange c'est que tu déclares la variable Dim der_ligne_2 As Long mais tu ne lui affectes aucune valeur dans ta macro, ça ne pose pas de problème ? Quoi qu'il en soit, j'ai modifié la macro pour éviter les répétitions. Si tu veux tester:

    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
    Sub copier_coller_cellule_fichier2feuil1()
     
    Dim wk_fichier As Workbook
    Dim ws_fichier1feuil1 As Worksheet
     
    Dim wk_fichier2 As Workbook
    Dim ws_fichier2feuil1 As Worksheet
     
    Dim der_ligne_1 As Long
    Dim der_ligne_2 As Long
     
    'définir les variables fichiers et onglets
    Set wk_fichier = ActiveWorkbook
    Set ws_fichier1feuil1 = wk_fichier.Worksheets(1)
     
    Set wk_fichier2 = Application.Workbooks.Open("C:\Users\JAM97\Desktop\ETP Tableau JAM macro\EXTRACTION declaration-programme-etp_2023-04-20_11-58.xlsx")
    Set ws_fichier2feuil1 = wk_fichier2.Worksheets(1)
     
    'identifier dernière ligne de la feuil1
    der_ligne_1 = ws_fichier2feuil1.Cells(Rows.Count, 1).End(xlUp).Row
    der_ligne_2 = ws_fichier1feuil1.Cells(Rows.Count, 1).End(xlUp).Row
     
    'copier coller une plage de cellule
    Dim source_columns As Variant
    Dim target_columns As Variant
     
    source_columns = Array(1, 40, 44, 41, 18, 16, 19, 26, 28, 29, 20, 21, 22, 2, 9)
    target_columns = Array(2, 5, 6, 8, 10, 13, 14, 16, 17, 18, 19, 21, 22, 24, 27)
     
    For i = 0 To UBound(source_columns)
        ws_fichier2feuil1.Range(ws_fichier2feuil1.Cells(2, source_columns(i)), ws_fichier2feuil1.Cells(der_ligne_1, source_columns(i))).Copy
        ws_fichier1feuil1.Cells(der_ligne_2 + 2, target_columns(i)).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
    Next i
     
    'enregistrer et fermer fichier 2
    wk_fichier2.Close (True)
     
    End Sub

  16. #16
    Membre confirmé Avatar de Valtrase
    Homme Profil pro
    Jeune retraité...
    Inscrit en
    Janvier 2016
    Messages
    361
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Jeune retraité...
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Janvier 2016
    Messages : 361
    Points : 643
    Points
    643
    Par défaut
    Bonjour,
    @Franc
    ce qui me semble étrange c'est que tu déclares la variable Dim der_ligne_2 As Long mais tu ne lui affectes aucune valeur dans ta macro
    Son tableau doit commencer à la deuxième ligne, puis est incrémenté de deux à chaque fois.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ws_fichier1feuil1.Cells(der_ligne_2 + 2, 2).PasteSpecial ...
    Donc der_ligne_2 est presque la première...
    Jean-Paul sous Office 365 et Windows 10/11 (Intel I7 16Go)

    Si vous avez trouvé réponse à votre question penser à la passer en Vous avez aimé la discussion alors un fait toujours plaisir.
    Le savoir n'a de valeur que s'il est partagé.
    La vérité de demain se nourrit de l'erreur d'hier. Antoine de Saint-Exupéry

  17. #17
    Candidat au Club
    Femme Profil pro
    Gestionnaires Administratifs
    Inscrit en
    Mars 2024
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Gestionnaires Administratifs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mars 2024
    Messages : 13
    Points : 3
    Points
    3
    Par défaut
    Citation Envoyé par Franc Voir le message
    Salut, ce qui me semble étrange c'est que tu déclares la variable Dim der_ligne_2 As Long mais tu ne lui affectes aucune valeur dans ta macro, ça ne pose pas de problème ? Quoi qu'il en soit, j'ai modifié la macro pour éviter les répétitions. Si tu veux tester:

    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
    Sub copier_coller_cellule_fichier2feuil1()
     
    Dim wk_fichier As Workbook
    Dim ws_fichier1feuil1 As Worksheet
     
    Dim wk_fichier2 As Workbook
    Dim ws_fichier2feuil1 As Worksheet
     
    Dim der_ligne_1 As Long
    Dim der_ligne_2 As Long
     
    'définir les variables fichiers et onglets
    Set wk_fichier = ActiveWorkbook
    Set ws_fichier1feuil1 = wk_fichier.Worksheets(1)
     
    Set wk_fichier2 = Application.Workbooks.Open("C:\Users\JAM97\Desktop\ETP Tableau JAM macro\EXTRACTION declaration-programme-etp_2023-04-20_11-58.xlsx")
    Set ws_fichier2feuil1 = wk_fichier2.Worksheets(1)
     
    'identifier dernière ligne de la feuil1
    der_ligne_1 = ws_fichier2feuil1.Cells(Rows.Count, 1).End(xlUp).Row
    der_ligne_2 = ws_fichier1feuil1.Cells(Rows.Count, 1).End(xlUp).Row
     
    'copier coller une plage de cellule
    Dim source_columns As Variant
    Dim target_columns As Variant
     
    source_columns = Array(1, 40, 44, 41, 18, 16, 19, 26, 28, 29, 20, 21, 22, 2, 9)
    target_columns = Array(2, 5, 6, 8, 10, 13, 14, 16, 17, 18, 19, 21, 22, 24, 27)
     
    For i = 0 To UBound(source_columns)
        ws_fichier2feuil1.Range(ws_fichier2feuil1.Cells(2, source_columns(i)), ws_fichier2feuil1.Cells(der_ligne_1, source_columns(i))).Copy
        ws_fichier1feuil1.Cells(der_ligne_2 + 2, target_columns(i)).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
    Next i
     
    'enregistrer et fermer fichier 2
    wk_fichier2.Close (True)
     
    End Sub

    Merci, j'ai tester et j'ai un message d'erreur : "Erreur de compilation : Variable non définie" : celle de i

  18. #18
    Membre éprouvé
    Inscrit en
    Décembre 2002
    Messages
    801
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 801
    Points : 1 260
    Points
    1 260
    Par défaut
    Citation Envoyé par Jam97 Voir le message
    Merci, j'ai tester et j'ai un message d'erreur : "Erreur de compilation : Variable non définie" : celle de i
    Il suffit de le déclarer, par exemple Dim i as Byte

  19. #19
    Candidat au Club
    Femme Profil pro
    Gestionnaires Administratifs
    Inscrit en
    Mars 2024
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Gestionnaires Administratifs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mars 2024
    Messages : 13
    Points : 3
    Points
    3
    Par défaut
    Citation Envoyé par Franc Voir le message
    Il suffit de le déclarer, par exemple Dim i as Byte
    Merci c'est bon.

    Elle fonctionne, mais j'ai elle m'efface les données déjà copier de mon dossier d'origine

    et je voudrais aussi : concatener deux cellules dans la même avec la macro VBA que tu m'a donné je dois faire comment stp ?

Discussions similaires

  1. [XL-2016] Insérer des donnés dans une cellule précises depuis un formulaire
    Par nico270599 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 23/12/2018, 21h37
  2. Réponses: 3
    Dernier message: 20/01/2014, 09h28
  3. Suppression des liens dans 38 cellules sur 36 colonnes
    Par La Zélie dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 25/05/2008, 01h20
  4. VBA: Transferer des commentaires dans des cellulles
    Par Monteninho dans le forum Macros et VBA Excel
    Réponses: 19
    Dernier message: 21/08/2007, 09h31

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