VBA/Macro dans Excel: Comment ca marche
cris0709
Messages postés
2
Date d'inscription
Statut
Membre
Dernière intervention
-
pijaku Messages postés 12263 Date d'inscription Statut Modérateur Dernière intervention -
pijaku Messages postés 12263 Date d'inscription Statut Modérateur Dernière intervention -
Bonjour,
Je suis débutant en ce qui concerne les macros et le langage VBA.
Je suis en stage présentement et j'ai besoin de faire une macro.
Voici mon problème:
J'ai un classeur ayant plusieurs feuilles. Toutes les feuilles ont le même format de présentation de données (les colonnes A à V sont utilisées).
Cependant, je veux copier les données d'une ligne dans tout le classeur et je veux qu'elle se copie sur la première ligne disponible.
Pouvez-vous m'aider s.v.p. ?
Merci de votre aide!
Je suis débutant en ce qui concerne les macros et le langage VBA.
Je suis en stage présentement et j'ai besoin de faire une macro.
Voici mon problème:
J'ai un classeur ayant plusieurs feuilles. Toutes les feuilles ont le même format de présentation de données (les colonnes A à V sont utilisées).
Cependant, je veux copier les données d'une ligne dans tout le classeur et je veux qu'elle se copie sur la première ligne disponible.
Pouvez-vous m'aider s.v.p. ?
Merci de votre aide!
A voir également:
- VBA/Macro dans Excel: Comment ca marche
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Liste déroulante excel - Guide
- Word et excel gratuit - Guide
- Déplacer colonne excel - Guide
- Si ou excel - Guide
1 réponse
Bonjour débutant en VBA,
On va procéder point par point... Voyons déjà à quel point tu débutes...
Peux tu faire ton code avec ces éléments :
- copier une ligne définie :
- test si la feuille est la feuille "Feuil1" :
- Coller dans une feuille : en gras dans le code la destination du "collage"; il y a juste un espace après copy.
On va procéder point par point... Voyons déjà à quel point tu débutes...
Peux tu faire ton code avec ces éléments :
- copier une ligne définie :
Sheets("Feuil1").Range("A6:V6").Copy- numéro de la première ligne vide de la feuille 2 (en supposant que la colonne A ne comporte pas de "trous") :
Sheets("Feuil2").Range("A65536").End'xlUp).Row- boucle sur toutes les feuilles du classeur :
Dim Ws As Worksheet For Each Ws In ThisWorkbook.Worksheets MsgBox Ws.Name Next
- test si la feuille est la feuille "Feuil1" :
Dim Ws As WorkSheet If Ws.Name = "Feuil1" Then
- Coller dans une feuille : en gras dans le code la destination du "collage"; il y a juste un espace après copy.
Sheets("Feuil").Range("Source").Copy Sheets("Feuil2").Range(destination)Le tout, placé dans une sub, à l'intérieur d'un module peux créer ta macro. Essaye de la faire et reviens nous ici avec ton code final.
Premièrement, merci pour ton aide! Ma base en VBA est relativement très, très, très limitée. Voici ce que cela donne avec ton code:
Sub Copier_Ligne()
Sheets("Feuil1").Range("A:V").Copy
Sheets("Feuil2").Range("A4:A65536").End 'xlUp).Row
Dim Ws As Worksheets
For Each Ws In ThisWorkbook.Worksheets
MsgBox Ws.Name
Next
If Ws.Name = "Feuil1" Then
Sheets("Feuil").Range("Source").Copy Sheets("Feuil2").Range(Destination)
End If
End Sub
J'avais oublié de spécifier que chaque feuile a un en-tête de 3 lignes. Également, les colonnes ne sont pas de la même largeur partout sur la feuille, mais, selon ma compréhension de VBA, ceci n'a pas d'importance.
Aussi, je présume que les cellules A6:V6 étaient un exemple. Donc, j'aimerais savoir comment on spécifie dans VBA les cellules des colonnes (A_n'importe quoi :V_n'importe quoi).
Finalement, je sais qu'il y a une erreur et ceci concerne l'appel des "sheets" mais je ne sais pas comment faire dans VBA.
Merci de ton aide encore Pijaku!
Cris0709
Bon alors c'est pas très compliqué, on va reprendre à 2. Ce que tu veux faire c'est :
- copier une ligne de ta feuille Feuil1
- la coller dans toutes les feuilles en dernière ligne.
En VBA on traduirait cela comme :
- Quel est le numéro de la ligne à copier
- Boucle toutes les feuilles du classeur
- Si nom de la feuille = Feuil1 alors on ne fait rien
- Sinon on copie la ligne en feuil1 et on la colle dans cette feuille.
- Suivante...
Ce qui se traduit en code VBA par :