Commande vba
Francis
-
gbinforme Messages postés 14930 Date d'inscription Statut Contributeur Dernière intervention -
gbinforme Messages postés 14930 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
1 réponse
-
Bonjour,
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
-
-
il a pas un moyen de faire 150 lignes d'un seul coup ?
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 Sub
Tu 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 -
-
-
-