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-E] Copier et coller une ligne entiere


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    788
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 788
    Points : 446
    Points
    446
    Par défaut [VBA-E] Copier et coller une ligne entiere
    Bonjour le forum
    j'ai un souci j'ai voulu copier et recoler (collage speciale lorsqu'on le fait à la "main") une ligne entiere mais mon code a bien fait le traitement mais en collant plussieur fois la ligne en question et je ne vois pas d'ou cela peut provenir

    voici mon code :

    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
     
    Private Sub Valider_Click()
        Ajout_appui_com.Hide
        Sheets("Feuil3").Select
        dernier = Range("S4").Value
        Sheets("Feuil1").Select
        Rows(dernier).Select
        MsgBox ("copie de la ligne ")
        Selection.Copy
        MsgBox ("insertion ")
        Rows(dernier + 2).Select
        Selection.Insert Shift:=xlDown
        MsgBox ("renommage de l'opération ")
        Cells(dernier + 2, 2).Value = TextBox1.Value
        MsgBox ("effacement des cellules")
        Cells(dernier + 2, 4).Value = ""
        Cells(dernier + 2, 7).Value = ""
        Sheets("Feuil3").Select
        Range("S4").Value = Range("S4").Value + 2
    End Sub
    une petite explication du code (du moin de ce que je souhaite faire ) :
    -je "hide" le formulaire précedent
    -je vais chercher une variable "dernier" dans la feuille 3
    -je selectionne la feuille 1
    -je me positionne sur la ligne que je désire copier (celle ci correspond à la valeur de "dernier")
    - je copie la ligne
    - je me positionne 2 ligne plus bas
    - j'insere les cellules

    la suite semble marcher c'est l'insertion qui me pose probleme puisque cela copie pas une seul fois la cellule
    Le savoir est une arme alors soyons armés

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    788
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 788
    Points : 446
    Points
    446
    Par défaut
    autant pour moi j'ai trouvé mon probleme
    tout betement je copiais dans une ligne fusionné ce qui explique les lignes multiples

    une autre question concernant la synthaxe

    je souhaiterai faire quelque chose du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     Rows("dernier:dernier + 1").Select
    afin de secelection la ligne n° "dernier" et celle du dessous

    mais lorsque je fais cela j'ai une erreur du a une incompatibilté de type
    Le savoir est une arme alors soyons armés

  3. #3
    Membre éclairé
    Avatar de Theocourant
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    618
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 618
    Points : 739
    Points
    739
    Par défaut
    Citation Envoyé par Nom
    autant pour moi j'ai trouvé mon probleme
    tout betement je copiais dans une ligne fusionné ce qui explique les lignes multiples

    une autre question concernant la synthaxe

    je souhaiterai faire quelque chose du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     Rows("dernier:dernier + 1").Select
    afin de secelection la ligne n° "dernier" et celle du dessous

    mais lorsque je fais cela j'ai une erreur du a une incompatibilté de type
    Lut,

    Alors ce que tu peux faire c'est passer par une variable intermédiare comme ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Dim maVar as String
     
       maVar=Cstr(dernier) & ":" & Cstr(dernier+1)
     
       Rows(maVar).Select
    Voilà

    Bonne continuation

    Théo
    Forums VB : lire la notice
    La touche existe pour être utilisée
    Pensez au tag
    Pour ceux n'ayant pas l'aide installée :
    - Aide MSDN pour VB6
    - Aide MSDN pour VBA
    Je ne réponds pas aux questions techniques par MP. Merci d'utiliser le forum fait pour çà.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    788
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 788
    Points : 446
    Points
    446
    Par défaut
    même résultat incompatibilité de type
    Le savoir est une arme alors soyons armés

  5. #5
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Alors qu'il te suffisait de faire ça...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        Rows(dernier).Copy Rows(dernier + 2)
    A+

    Je croyais que ton pb était résolu... Tu dis

  6. #6
    Membre éclairé
    Avatar de Theocourant
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    618
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 618
    Points : 739
    Points
    739
    Par défaut
    Citation Envoyé par Nom
    même résultat incompatibilité de type
    Une question : quelle est la valeur de dernier ?
    Forums VB : lire la notice
    La touche existe pour être utilisée
    Pensez au tag
    Pour ceux n'ayant pas l'aide installée :
    - Aide MSDN pour VB6
    - Aide MSDN pour VBA
    Je ne réponds pas aux questions techniques par MP. Merci d'utiliser le forum fait pour çà.

  7. #7
    Membre éclairé
    Avatar de Theocourant
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    618
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 618
    Points : 739
    Points
    739
    Par défaut
    Citation Envoyé par ouskel'n'or
    Alors qu'il te suffisait de faire ça...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        Rows(dernier).Copy Rows(dernier + 2)
    A+
    Et ça fait l'insertion aussi ? Il me semblait que cela remplaçait simplement la ligne cible.

    Pas tester et il va falloir que je le fasse car si ça marche ce serait top

    Là tu viens de m'apprendre encore quelque chose Ousk



    Théo
    Forums VB : lire la notice
    La touche existe pour être utilisée
    Pensez au tag
    Pour ceux n'ayant pas l'aide installée :
    - Aide MSDN pour VB6
    - Aide MSDN pour VBA
    Je ne réponds pas aux questions techniques par MP. Merci d'utiliser le forum fait pour çà.

  8. #8
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Oui, ça colle la ligne et remplace donc l'ancienne mais là, comme on a "dernier", j'ai pensé qu'il s'agissait de la dernière ligne et que dernière ligne + 2 était deux lignes en dessous. Non, Nom ?

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    788
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 788
    Points : 446
    Points
    446
    Par défaut
    en effet il s'agit de la derniere ligne seulement je vais devoir le refaire pour d'autre ligne ; serai ce encore valable ?
    Le savoir est une arme alors soyons armés

  10. #10
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Sinon, on peut aussi insérer une ligne
    Rows(Dernier + 2).Insert
    Rows(Dernier).Copy Rows(Dernier + 2)
    Mais pas question de sélectionner les lignes. Ne sert à rien et allourdit le code

    Tu dis

    Salut Théo

  11. #11
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Quand tu insères une ligne au dessus de la ligne n, la ligne insérée devient la ligne n
    Si tu colles des données sur la ligne n, tu les colles sur une ligne vide. Donc sans risque.
    Sinon tu fais un copier/insérer mais on n'était parti pour une simple copie.

    Tu dis

    Edit
    Pour insérer une copie :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        Rows("2:2").Copy
        Rows("4:4").Insert Shift:=xlDown

  12. #12
    Membre éclairé
    Avatar de Theocourant
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    618
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 618
    Points : 739
    Points
    739
    Par défaut
    Citation Envoyé par ouskel'n'or
    Mais pas question de sélectionner les lignes. Ne sert à rien et allourdit le code
    Je suis d'accord mais il est à noter que Nom a fait l'effort de travailler initialement par lui-même en utilisant l'enregistrement de macro d'Excel et de nous donner son code pour progresser.

    Donc on est reparti de son code pour arriver à ce qu'il souhaitait. Je ne me suis pas occupé de l'optimisation du code

    +

    Théo
    Forums VB : lire la notice
    La touche existe pour être utilisée
    Pensez au tag
    Pour ceux n'ayant pas l'aide installée :
    - Aide MSDN pour VB6
    - Aide MSDN pour VBA
    Je ne réponds pas aux questions techniques par MP. Merci d'utiliser le forum fait pour çà.

  13. #13
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Aucune critique dans ce que j'ai dit, Théo, juste un conseil pour optimiser le code. Si on met un code sans les raisons pour lesquelles il est à privilégier par rapport à un autre, l'intérêt peut être ignoré

    Pas de lézard, donc.

    A+

  14. #14
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    788
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 788
    Points : 446
    Points
    446
    Par défaut
    et bien merci à vous deux de votre aide
    cela semble marché en fesant le code que m'a conseillé Ouselk'nor
    celui ci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
        Rows(Dernier + 2).Insert
        Rows(Dernier + 3).Insert 'j'ai encore insérer une ligne pour faire plus aéré 
        Rows(Dernier).Copy Rows(Dernier + 2)

    je met donc résolu en sachant que je n'ai pas fini alors si j'ai encore un probleme je réouvrirai ce sujet
    Le savoir est une arme alors soyons armés

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

Discussions similaires

  1. [VBA] Comment supprimer une ligne entiere dans excel
    Par babouoles dans le forum Macros et VBA Excel
    Réponses: 16
    Dernier message: 06/07/2017, 08h34
  2. [XL-2007] Copier coller une ligne excel sur autre feuille avec conditions
    Par amstelveen dans le forum Excel
    Réponses: 5
    Dernier message: 11/05/2009, 18h54
  3. [XL-2003] Copier coller une ligne sous condition
    Par geraldferri dans le forum Excel
    Réponses: 12
    Dernier message: 21/04/2009, 11h17
  4. Réponses: 3
    Dernier message: 05/03/2009, 07h16
  5. Copier Coller une ligne d'une table avec modif ?
    Par nolan76 dans le forum Requêtes
    Réponses: 4
    Dernier message: 04/03/2004, 16h34

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