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
    20
    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 : 20
    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
    961
    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 : 961
    Points : 4 078
    Points
    4 078
    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 chevronné
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 301
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 301
    Points : 1 900
    Points
    1 900
    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
    20
    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 : 20
    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 expérimenté
    Inscrit en
    Décembre 2002
    Messages
    836
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 836
    Points : 1 320
    Points
    1 320
    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
    20
    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 : 20
    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 expérimenté
    Inscrit en
    Décembre 2002
    Messages
    836
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 836
    Points : 1 320
    Points
    1 320
    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 éclairé Avatar de Valtrase
    Homme Profil pro
    Jeune retraité...
    Inscrit en
    Janvier 2016
    Messages
    401
    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 : 401
    Points : 701
    Points
    701
    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

  9. #9
    Candidat au Club
    Femme Profil pro
    Gestionnaires Administratifs
    Inscrit en
    Mars 2024
    Messages
    20
    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 : 20
    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
    20
    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 : 20
    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 chevronné
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 301
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

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

  12. #12
    Membre éclairé Avatar de Valtrase
    Homme Profil pro
    Jeune retraité...
    Inscrit en
    Janvier 2016
    Messages
    401
    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 : 401
    Points : 701
    Points
    701
    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.

  13. #13
    Candidat au Club
    Femme Profil pro
    Gestionnaires Administratifs
    Inscrit en
    Mars 2024
    Messages
    20
    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 : 20
    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
    20
    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 : 20
    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 expérimenté
    Inscrit en
    Décembre 2002
    Messages
    836
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 836
    Points : 1 320
    Points
    1 320
    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 éclairé Avatar de Valtrase
    Homme Profil pro
    Jeune retraité...
    Inscrit en
    Janvier 2016
    Messages
    401
    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 : 401
    Points : 701
    Points
    701
    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...

  17. #17
    Candidat au Club
    Femme Profil pro
    Gestionnaires Administratifs
    Inscrit en
    Mars 2024
    Messages
    20
    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 : 20
    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 expérimenté
    Inscrit en
    Décembre 2002
    Messages
    836
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 836
    Points : 1 320
    Points
    1 320
    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
    20
    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 : 20
    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 ?

  20. #20
    Candidat au Club
    Femme Profil pro
    Gestionnaires Administratifs
    Inscrit en
    Mars 2024
    Messages
    20
    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 : 20
    Points : 3
    Points
    3
    Par défaut
    Citation Envoyé par Jam97 Voir le message
    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 ?

    Je relance mon post, merci pour vos retours

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