Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

déplacement simultané de 2 cellules non contigues

  • Initiateur de la discussion Initiateur de la discussion cycy
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

C

cycy

Guest
bonjour et merci à vous accordé de l'importance à mon problème
je souhaite sur un tableau déplacer le contenu d'une cellule vers la droite de 1,2,3.. colonnes et qu'en même temps le contenu d'une cellule 4 lignes plus bas ce déplace elle aussi en simultané vers la droite de 1,2,3 ....colonnes
le contenu des cellules est uniquement du texte
je ne veux avoir à sélectionner qu'une seule cellule
cordialement
cyrille
 
Re : déplacement simultané de 2 cellules non contigues

softmama bonjour ,
ta réponse est de plus en plus proche de ce que j'ai besoin
cependant j'ai fais des notes sur la pj pour que tu vois les probèmes qui subsistent et qui sont pour moi très importants
avant de chercher des solutions , si ce que j'ai noté n'est pas clair , n'hésite pas à me poser des questions
merci
cyrille
 

Pièces jointes

Re: Re : déplacement simultané de 2 cellules non contigues

Re,

Tu vas être content je pense. Ton fichier fonctionne et en plus, je pense que j'ai compris ce que tu voulais...

VB:
Private MemoVal, BoolDépl As Boolean, MemoSel

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
Dim c As Range
If (Target.Row - 24) Mod 11 < 2 Then
    Set c = Range("B" & Target.Row & ":B" & Target.Row + 11).Find(what:=MemoSel, LookIn:=xlValues, lookat:=xlWhole)
    If Target = "" Then
        If Not c Is Nothing Then
            MemoVal = Target.Offset(c.Row - Target.Row, 0).Value
            Target.Offset(c.Row - Target.Row, 0) = ""
            BoolDépl = True
        End If
    Else
        If Not c Is Nothing Then
            If BoolDépl = True Then
                Target.Offset(c.Row - Target.Row, 0) = MemoVal
                BoolDépl = False
            End If
        End If
    End If
End If
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    MemoSel = Target.Value
End Sub

cf. fichier joint 🙂
 

Pièces jointes

Re : Re: Re : déplacement simultané de 2 cellules non contigues

re ,
ce que tu viens de faire est absolument génial et correspond à 100 % à mes besoins
je ne sais pas comment te remercier
merci et à + pour d'autres défis
cyrille
 
Re : déplacement simultané de 2 cellules non contigues

bonjour , softmama à travaillé sur ce dossier et à créé qq chose de parfait
j'aimerai y apporter une évolution
merci d'ouvrir le fichier joint pour voir les explications
 

Pièces jointes

Re : déplacement simultané de 2 cellules non contigues

Bonjour cycy,

Ceci devrait fonctionner pour ce que tu demandes (à la place des macros en place) :
VB:
Private MemoVal, BoolDépl As Boolean, MemoSel

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
Dim c As Range, LignMasquée()
Application.ScreenUpdating = False
ReDim LignMasquée(1 To ActiveSheet.UsedRange.Rows.Count)
For t = 1 To UBound(LignMasquée)
    LignMasquée(t) = IIf(Cells(t, 1).EntireRow.Hidden, True, False)
Next t
Rows.Hidden = False
If (Target.Row - 24) Mod 11 < 2 Then
    Set c = Range("B" & Target.Row & ":B" & Target.Row + 11).Find(what:=MemoSel, LookIn:=xlValues, lookat:=xlWhole)
    If Target = "" Then
        If Not c Is Nothing Then
            MemoVal = Target.Offset(c.Row - Target.Row, 0).Value
            Target.Offset(c.Row - Target.Row, 0) = ""
            BoolDépl = True
        End If
    Else
        If Not c Is Nothing Then
            If BoolDépl = True Then
                Target.Offset(c.Row - Target.Row, 0) = MemoVal
                BoolDépl = False
            End If
        End If
    End If
End If
For t = 1 To UBound(LignMasquée)
    If LignMasquée(t) = True Then Cells(t, 1).EntireRow.Hidden = True
Next t
Application.ScreenUpdating = True
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    MemoSel = Target.Value
End Sub
 
Re : déplacement simultané de 2 cellules non contigues

re ,
je viens de remplacer et adapter la macro dans mon tableau réel
cela fonctionne mais comme j'ai environ 27 clients avec chaque fois 40 lignes par client , quand je déplace une cellule , l'action que tu à rajouté ( afficher les lignes puis masquer les lignes ) deviens très long
y à il une solution plus rapide
merci
cyrille
 
Re : déplacement simultané de 2 cellules non contigues

Re,

Ha oui, si bcp de lignes, ça risque d'être un peu long, ceci devrait être plus rapide, (à tester) :
VB:
Private MemoVal, BoolDépl As Boolean, MemoSel

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
Dim c As Range
If (Target.Row - 24) Mod 11 < 2 Then
    Set c = Cells(Target.Row, 2)
    Do While c.Row < Target.Row + 40 ' Si 40 lignes par client
        If c = MemoSel Then Exit Do
        Set c = c(2, 1)
    Loop
    If Target = "" Then
        If c = MemoSel Then
            MemoVal = Target.Offset(c.Row - Target.Row, 0).Value
            Target.Offset(c.Row - Target.Row, 0) = ""
            BoolDépl = True
        End If
    Else
        If c = MemoSel Then
            If BoolDépl = True Then
                Target.Offset(c.Row - Target.Row, 0) = MemoVal
                BoolDépl = False
            End If
        End If
    End If
End If
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    MemoSel = Target.Value
End Sub

cf. Fichier en PJ
 

Pièces jointes

Dernière édition:
Re : déplacement simultané de 2 cellules non contigues

bonjour softmama , le forum ,
après avoir fait quelques essais ça me semble tout à fait concluant
merci pour ta disponibilité
cyrille
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
11
Affichages
930
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…