XL 2016 COPIER COLLER CELLULES SELECTIONNEES PAR CASE COCHEE

gilles42

XLDnaute Nouveau
Bonjour à toutes et à tous.
J'ai un classeur avec deux feuilles : activite et bdd. J'aimerais qu'en inscrivant "X" (ou juste un clic de souris), dans la case S5, S6, S7 etc.... celà me sélectionne les cellules C5 à F5, C6 à F6, C7 à F7 etc..... de la feuille "activité" pour venir les coller dans mon tableau "bdd". J'aimerais aussi qu'en A:A de "bdd", il y ait un point (.) si la valeur est inférieure ou égale à 0.
Enfin si celà est possible, j'aimerais que mes nouvelles données se classent automatiquement par societe.
Je vous joins une ébauche de mon fichier.
Merci par avance pour votre aide.
 

Pièces jointes

  • ACCES avec X.xlsm
    37.8 KB · Affichages: 6

job75

XLDnaute Barbatruc
Bonjour gilles42,

Votre fichier était vérolé, je l'ai refait, voyez ci-joint.

Pas besoin de "x", un double-clic sur la ligne à transférer suffit.

Voyez cette macro dans le code de la feuille "Activité" (clic droit sur l'onglet et Visualiser le code) :
VB:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Target.Row < 5 Then Exit Sub
Cancel = True
With Sheets("BDD")
    With .Range("A" & .Rows.Count).End(xlUp)(2)
        .Resize(, 4) = Intersect(Target.EntireRow, [C:F]).Value 'copie uniquement les valeurs
        If .Value <= 0 Then .Value = "."
    End With
    .[A1].CurrentRegion.Sort .[B1], xlAscending, Header:=xlYes 'tri sur les sociétés
    .Activate 'facultatif
End With
End Sub
Si vous faites plusieurs fois un double-clic sur la même ligne il y aura bien sûr des doublons... Mais c'est une autre histoire !!!

A+
 

Pièces jointes

  • ACCES avec X(1).xlsm
    42 KB · Affichages: 7

job75

XLDnaute Barbatruc
Si l'on veut que le résultat soit en majuscules il suffit d'ajouter une boucle, fichier(2) :
VB:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Target.Row < 5 Then Exit Sub
Dim c As Range
Cancel = True
With Sheets("BDD")
    With .Range("A" & .Rows.Count).End(xlUp)(2)
        .Resize(, 4) = Intersect(Target.EntireRow, [C:F]).Value 'copie uniquement les valeurs
        If .Value <= 0 Then .Value = "."
        For Each c In .Resize(, 4): c = UCase(c): Next 'majuscules
    End With
    .[A1].CurrentRegion.Sort .[B1], xlAscending, Header:=xlYes 'tri sur les sociétés
    .Activate 'facultatif
End With
End Sub
 

Pièces jointes

  • ACCES avec X(2).xlsm
    42.4 KB · Affichages: 6

Statistiques des forums

Discussions
312 111
Messages
2 085 395
Membres
102 882
dernier inscrit
Sultan94