Forum Clubic

VBA Excel Macro - Macro excel copie insere de cellule

Bonjour à tous,

voilà je connais bien VB par contre je n’ai jamais fait de macro excel…
donc pas bcp de connaissance!!

je souhaiterait copier une colone de la feuille 2 pour l’insérer dans la colone de la feuille 1, bien sur à la suite pour ne pas écraser ce qui y a déjà!!

voilà, en théorie ca n’a pas l’air très compliquer, mais il me manque des notions!!

merci d’avance pour votre aide!!!!

Hello,

Je vais tout de même essayé de te répondre bien que je sois débutant en la matière…

Voici un petit exemple qui te permet de copier les valeurs de la colonne B de la feuil2 sur la colonne A de la feuil1

Sub Copie_colonne()
Sheets("Feuil2").Select
Columns("B:B").Select
Range("B1").Activate
Selection.Copy
Sheets("Feuil1").Select
Columns("A:A").Select
ActiveSheet.Paste
End Sub

Essaie de comprendre mon explication par rapport aux programmes que tu dois insérer dans un nouveau module dans VBA.

Sinon ce que tu peux faire également, lorsque tu es sous excel : tu cliques sous outils, puis sous macro et enfin, nouvelle macro, tu lui inscrit un nom et tu cliques sur OK. Tu fais ce que tu veux avec tes colonnes et quand tu as fini tu cliques sur Stop (le carré, ceci te permet d’enregistrer sous VBA ce que tu as fait sous excel) => ça m’a beaucoup aidé…

Si tu ne comprends pas qqch dans mon explication re-post seulement ! :wink:

merci,

en fait je sais créer une macro, et j’avais trouver un code cet nuit qui me permet de faire copier - coller, comme ce que tu viens de me faire parvenir!!!!

mon soucis, c qu’il faut que j’insère les cellules à la suite de la cellule vide, car avec ta manière je vais écraser ce qu’il ya dans la colonne…

je te mets le code que j’ai trouvé et qui permet de trouver la derniere cellule vide d’une colonne, mais ca marche pas :

[color=blue]Sheets("feuil2").Select
Range("A1").Select
ActiveCell.CurrentRegion.Copy

Sheets("feuil1").Select
Range("a65536").End(xlUp).Select
ligne = Range("A65536").End(xlUp).Offset(1, 0)
Range(ligne).Select
ActiveCell.PasteSpecial (xlPasteAll)[/color]

Je suis sincérement désolé mais je n’arrive pas à trouver, vu que je suis également pas très bon en VB

J’espère que qqn pourra te répondre …

:wink:

Une petite question, tu as quel niveau en VB ?

Tu connais bien tous les principes de base ?

:wink:

et bien g un bon niveau en vb, ce qui me manquait c’était les commandes sous excel que je ne connais pas du tout!!!

mais g trouvait, en fait g fait une boucle qui recherche la derniere cellule vide de ma colonne et je copie à partir de cette cellule et ca marche bien!!!

merci quand même pour votre aide!!!!!

Essais ça, je pense que ça devrait répondre à ton besoin
Cette source est faite à partir de Excel 2000

Sub Macro2()
'
' Macro2 Macro
' Macro enregistrée le 09/08/2005 par Nicolas TREILLON
'

'
    Sheets("Feuil1").Select
    Range("A1").Select
    Range(Selection, Selection.End(xlDown)).Select
    Selection.Copy
    Sheets("Feuil2").Select
    Range("A1").Select
    Selection.End(xlDown).Select
    ActiveCell.Offset(1, 0).Select
    ActiveSheet.Paste
End Sub

Bon moi qui est essayé de répondre, je remarque que je suis encore très mauvais en VBA …

PS : l’entreprise ou je bosse, m’a donné un truc à faire sous VBA, répondez si vous le pouvez, sous la rubrique “utilisation de graphique sous VB”
Merci d’avance

Pour ton information Bertrand5

Si tu veux commencer à apprendre le VBA Excel, tu peux faire des essais en enregistrant les macro automatiquement et apres tu affiches la macro générée et tu essais de comprendre le code.

Commences pas des choses simples :slight_smile:

En fait, sous Excel, tu as les même principes : Objet/Propriété/Méthode, les même commandes, bref, seuls les noms d’objets (et bien sûr propriétés/méthodes) changent…

Si tu veux faire des boucles etc… Il y a une chose très importante, sous Excel : Récupérer les référence N° de ligne/colonne de la dernière cellule…

Outre les objets :

WorkBooks (classeurs) Sheets(feuilles) et Cells(cellules) dont tu dois apprendre les propriétés et méthodes, la déclarations des variables que tu dois connaître, une des choses les plus importante est cette référence aux N° de ligne/colonne de la dernière cellule !

  1. Tu déclares des variables globales (moi, dans mes applis, je nomme : DerLne et DerCol) pour récupérer ça, dans un module "Variables"

Ex :
Public DerLne As Long
'les lignes d’une feuille vont jusqu’à 65536, un Integer n’est donc pas suffisant
Public DerCol As Integer
'Une feuille a 256 colonnes, et pour eviter de faire -1 sur un Byte (la colonne 0 'n’existe pas), tu prends de l’Integer…

Ca te servira pour toutes tes applis… :wink:

Sinon, dans ton module "Procédures" :

Sub CopieCellules()
'Déclaration des variables :
'L, LD et LO sont pour les boucles (LOrigine LDestination)
'Origine est la feuille d’où tu prends les infos
'Destination est la feuille où tu vas écrire
'LaLne est pour la dernière ligne de l’origine

Dim LD, LO, Origine, Destination, LaLne

Set Origine=Sheets("Feuil2")
Set Destination=Sheets("Feuil1")

Sheets(Origine).Select
'Tu rends active la feuille Origine (pas par .Activate !)

LO=ActiveCell.SpecialCells(xlCellTypeLastCell).Row
'Tu met dans LO le N° de ligne de la dernière ligne de la feuille en cours

Sheets(Destination).Select
'Tu vas sur la feuille Destination

LD=ActiveCell.SpecialCells(xlCellTypeLastCell).Row
'Tu met dans LD le N° de la dernière ligne

LD=LD+1
'Tu rajoutes 1 pour pointer sur la ligne suivante…

'Et tu commence ta boucle :

For L= 1 to LO
'De la ligne 1 jusqu’à la ligne LO (de la feuille Origine)
Sheets(Destination).Cells(LD,1).Value=Sheets(Origine).Cells(L,1).Value
'On prend le contenu de la cellule ligne L, colonne 1 de Origine (.VALUE)
'Que l’on met dans la cellule ligne LD, colonne 1 de Destination
LD=LD+1
Next

End Sub

:wink: On parle de programmation, hein ! :wink:

Je suis à peine mieux, le VBA c’est pas mon langage (et ça le sera jamais)
bref:


Selection.EntireRow.Insert

est-ce que ça répond à la question?

:MDR Oublie VB et VBA ! Tu as raison ! :MDR

Et reste dans ton VB :na:

:MDR :super: Il n’y a pas que VB/VBA, mais pour des applications Office, rien de mieux… :smiley:

Bon vous arrêter de vous chamailler pour une question de VBA :wink:

Je vais encore tester 2 ou 3 trucs et je vous dirai si ça fonctionne !

vi vi, on arrête, mais c’est dans l’autre topic que tu as posé une question ou bien :??:

oui je sais :smiley:

pour ceux qui voudrait encore répondre à ma question, prenez plutôt la rubrique "utilisation de graphique sous VB" !

:bounce: