Copier une ligne avec le numéro de ligne variable.

goldenboy

XLDnaute Occasionnel
Bonjour à tous,

Je suis tout nouveau sur le forum, mais je profite de vos discutions depuis quelques temps, lorsqu'un besoin se fait ressentir.

Aujourd'hui, je bloque sur un code.
Mon but, est de pouvoir copier une ligne d'un classeur 1, et de la coller dans un classeur 2.
Pour se faire, l'utilisateur doit entrer le numéro de ligne, qui l’intéresse, en H1 du classeur 2 et cliquer sur un bouton qui appel la macro.
Et voici mon code :
Code:
Sub ExtraireInfo()
Dim Ligne1
Ligne1 = Range("H1").Row
    Windows("classeur 1").Activate
    Rows(Ligne1 & ":" & Ligne1).Select
    Selection.Copy
    Windows("classeur 2").Activate
    Range("B9").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=True
    Application.CutCopyMode = False
End Sub
Il prend toujours la ligne 1 du classeur 1, même si en H1 du classeur 2 j'indique 3 ou 4 etc.

Je vous remercie d'avance de vos réponses qui m'aiderons certainement à y voir plus claire.
Je suis à votre disposition pour plus d'information.

Cordialement,

Goldenboy.
 

camarchepas

XLDnaute Barbatruc
Re : Copier une ligne avec le numéro de ligne variable.

Bonsoir ,

Voici pour un ptit test
 

Pièces jointes

  • Test2.xlsm
    16.3 KB · Affichages: 65
  • Test2.xlsm
    16.3 KB · Affichages: 68
  • Test2.xlsm
    16.3 KB · Affichages: 70
  • Test1.xlsx
    9.1 KB · Affichages: 53
  • Test1.xlsx
    9.1 KB · Affichages: 56
  • Test1.xlsx
    9.1 KB · Affichages: 59

Staple1600

XLDnaute Barbatruc
Re : Copier une ligne avec le numéro de ligne variable.

Bonsoir à tous


GoldenBoy
Tu peux dans bien des cas éviter d'employer Select ou Activate
Code:
Sub ExtraireInfo()
Dim Ligne1&, a As Workbook, b As Workbook
Set a = Workbooks("Classeur1")
Set b = Workbooks("Classeur2")
Ligne1 = b.Sheets(1).Range("H1")
a.Sheets(1).Rows(Ligne1).Copy b.Sheets(1).[A9]
End Sub

J'ai mis A9 car si la ligne est entièrement remplie en copiant en B9 (sauf erreur de ma part), il devrait y avoir un message d'erreur.

EDITION: Je confirme il y a bien un message d'erreur (je viens de tester)
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re : Copier une ligne avec le numéro de ligne variable.

Re


Puisqu'il semble que tu ne veuilles que les valeurs seules, tu peux aussi faire comme ci-dessous:
Code:
Sub ExtraireInfoII()
Dim Ligne1&, a As Workbook, b As Workbook
Set a = Workbooks("Classeur1"): Set b = Workbooks("Classeur2")
Ligne1 = b.Sheets(1).Range("H1")
b.Sheets(1).Rows(9).Value = a.Sheets(1).Rows(Ligne1).Value
End Sub

PS: Il faudra peut-être adapter le nom des feuilles ou le nom des classeurs.
 

camarchepas

XLDnaute Barbatruc
Re : Copier une ligne avec le numéro de ligne variable.

Bonjour ,
Pour le Fun ,
Sans Select , activate et sans objet :

Code:
Sub ExtraireInfoII()
Dim Ligne1&
With  Workbooks("Classeur2").Sheets(1)
 Ligne1 =.Range("H1")
 .Rows(9).Value = Workbooks("Classeur1").Sheets(1).Rows(Ligne1).Value
end with 
End Sub
 

goldenboy

XLDnaute Occasionnel
Re : Copier une ligne avec le numéro de ligne variable.

Bonsoir,

Je vous remercie pour vos réponses, je vois qu'il y a beaucoup de façon différentes de faire les choses.

Pour tout vous dire, mon code a évolué, puisqu'il offre la possibilité à l'utilisateur de choisir à partir de quel tableau il souhaite extraire une ligne. Et il fonctionne parfaitement.

J'ai une autre question, mais je ne sais pas si je doit la poser ici ou refaire un sujet.
Je la pose quand même et s'il faut refaire un sujet, je le ferais.

Je souhaite vérifier, lorsque j'ouvre un classeur (début de ma macro), qu'il y ai une vérification, sur le partage du classeur et sur la possibilité d’écrire dessus.
En d'autres mots, le classeur concerné est partagé, mais par fort trafic, celui-ci devient inaccessible par d'autres utilisateurs, jusqu’a ce qu'une place se libère et ainsi de suite. On à parfois le message "Ce classeur est actuellement indisponible, avec la possibilité d'être averti dès que la lecture écrite est possible.
Je veux que ma macro se lance seulement si le classeur est bien partagé et pas en lecture seule, mais bien en écriture.
Est ce possible de le tester ?

Je vous remercie d'avance de vos réponses.

Cordialement,
 

Discussions similaires