Commande vba
Francis
-
gbinforme Messages postés 15481 Date d'inscription Statut Contributeur Dernière intervention -
gbinforme Messages postés 15481 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
Est-ce qu'il est possible si j'ai une base de données exemple de 300 lignes et que chaque ligne se copie dans une des 5 pages selon ce qui est inscrit dans la colonne e ?
Exemple si dans la ligne 5 colonne E c'est inscrit A ça va dans la première page;
si dans la ligne 6 colonne E c'est inscrit B ça va dans la 2e page...
De préférence la commande se lance seulement quand je fais une action exemple cliquée dans la cellule A6.
Merci de votre aide
Est-ce qu'il est possible si j'ai une base de données exemple de 300 lignes et que chaque ligne se copie dans une des 5 pages selon ce qui est inscrit dans la colonne e ?
Exemple si dans la ligne 5 colonne E c'est inscrit A ça va dans la première page;
si dans la ligne 6 colonne E c'est inscrit B ça va dans la 2e page...
De préférence la commande se lance seulement quand je fais une action exemple cliquée dans la cellule A6.
Merci de votre aide
A voir également:
- Commande vba
- Invite de commande - Guide
- Commande terminal mac - Guide
- Commande dism - Guide
- Commande scannow - Guide
- Masquer commande amazon - Guide
1 réponse
Bonjour,
Voici une macro qui fait ce que tu souhaites :
Elle s'exécute avec un double clic sur la ligne à copier.
il faut remplacer les "valeur base" par tes valeurs et le "nom feuille" par tes noms.
Si la colonne A n'est pas toujours documentée tu modifies le A de cette ligne :
Voici une macro qui fait ce que tu souhaites :
Option Explicit
Private Sub Worksheet_BeforeDoubleClick(ByVal sel As Range, Cancel As Boolean)
Dim ong As String, lig As Long
Cancel = True
Select Case Cells(sel.Row, "E").Value
Case "A" ' valeur base
ong = "Feuil1" ' nom feuille
Case "B"
ong = "Feuil2"
Case "C"
ong = "Feuil3"
Case "D"
ong = "Feuil4"
Case "F"
ong = "Feuil5"
Case Else
Exit Sub
End Select
With Sheets(ong)
lig = .Cells(Rows.Count, "A").End(xlUp).Row + 1
Rows(sel.Row).Copy Destination:=.Rows(lig)
MsgBox "Copie effectuée en feuille " & ong
End With
End Sub
Elle s'exécute avec un double clic sur la ligne à copier.
il faut remplacer les "valeur base" par tes valeurs et le "nom feuille" par tes noms.
Si la colonne A n'est pas toujours documentée tu modifies le A de cette ligne :
lig = .Cells(Rows.Count, "A").End(xlUp).Row + 1
On peut le faire mais pas avec un double clic qui ne prend qu'une cellule.
Alors presque la même :
Public Sub copier_lignes() Dim ong As String, lig As Long, sel As Object, nbl As Integer For Each sel In Selection.Rows Select Case Cells(sel.Row, "E").Value Case "A" ' valeur base ong = "Feuil1" ' nom feuille Case "B" ong = "Feuil2" Case "C" ong = "Feuil3" Case "D" ong = "Feuil4" Case "E" ong = "Feuil5" Case Else Exit Sub End Select With Sheets(ong) lig = .Cells(Rows.Count, "A").End(xlUp).Row + 1 Rows(sel.Row).Copy Destination:=.Rows(lig) nbl = nbl + 1 End With Next sel MsgBox nbl & " lignes copiées " End SubTu sélectionnes les lignes que tu veux,sur n'importe quelle colonne, puis tu lances la macro, avec soit :
- tu affectes un raccourci à la macro ctrl+y par exemple (alt+F8 et options)
- tu insères un objet sur ta feuille et tu affectes la macro
- tu fais alt+F8 et clic sur exécuter
With Workbooks("Classeur2.xlsx").Sheets(ong)Tu remplaces "Classeur2.xlsx" par le nom de ton second classeur