Autres Copier coller sous conditions

  • Initiateur de la discussion Initiateur de la discussion delta6x
  • 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 !

delta6x

XLDnaute Junior
Bonjour,

Je ne sais pas si c'est possible avec une ou plusieurs formules, sans VBA ni Query, pour (par exemple) :

- Si la cellule A13 = "X", les cellules A1 à C3 soient remplacées par les cellules k1 à M3, sinon on ne change rien

- Si la cellule B13 = "X", les cellules A1 à C3 soient remplacées par les cellules k5 à M7, sinon on ne change rien

- Si la cellule C13 = "X", les cellules A1 à C3 soient remplacées par les cellules K9 à M11, sinon on ne change rien

Merci d'avance et bon dimanche.
 

Pièces jointes

Bonjour Delta6x,
Deux solutions en PJ.
Feuil1 : il suffit de cliquer sur des trois cellules pour faire le transfert avec :
VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
On Error GoTo Fin: If Target.Count > 1 Then Exit Sub
    If Not Intersect(Target, [A13:C13]) Is Nothing Then
        Application.ScreenUpdating = False
        Application.EnableEvents = False
        [A13:C13].ClearContents
        If Target.Address = "$A$13" Then
            [A13] = "X": [A1:C3] = [K1:M3].Value
        ElseIf Target.Address = "$B$13" Then
            [B13] = "X": [A1:C3] = [K5:M7].Value
        ElseIf Target.Address = "$C$13" Then
            [C13] = "X": [A1:C3] = [K9:M11].Value
         End If
    End If
Fin:
Application.ScreenUpdating = True
Application.EnableEvents = True
End Sub
Feuil2, il faut mettre un X pour faire le transfert, mais ça me semble moins convivial car il faut effacer les autres X auparavant, avec :
Code:
Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo Fin: If Target.Count > 1 Then Exit Sub
    If Not Intersect(Target, [A13:C13]) Is Nothing Then
        Application.ScreenUpdating = False
        Application.EnableEvents = False
        If [A13] = "X" Then
            [A1:C3] = [K1:M3].Value
        ElseIf [B13] = "X" Then
            [A1:C3] = [K5:M7].Value
        ElseIf [C13] = "X" Then
            [A1:C3] = [K9:M11].Value
        End If
    End If
Fin:
Application.ScreenUpdating = True
Application.EnableEvents = True
End Sub
 

Pièces jointes

Merci à Sylvanu, à Phil69970, et c'est sincère. Mais j'essaie depuis bien longtemps de finir mon fichier sans VBA, ni Power Query dans Excel. (les deux solutions que vous proposez sont pourtant au top). Fanch55 m'a donné la solution sans VBA, et je l'en remercie tout autant. Je vais essayer d'adapter sa solution à mon fichier. Bon dimanche à vous.
Bonjour Delta6x,
Deux solutions en PJ.
Feuil1 : il suffit de cliquer sur des trois cellules pour faire le transfert avec :
VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
On Error GoTo Fin: If Target.Count > 1 Then Exit Sub
    If Not Intersect(Target, [A13:C13]) Is Nothing Then
        Application.ScreenUpdating = False
        Application.EnableEvents = False
        [A13:C13].ClearContents
        If Target.Address = "$A$13" Then
            [A13] = "X": [A1:C3] = [K1:M3].Value
        ElseIf Target.Address = "$B$13" Then
            [B13] = "X": [A1:C3] = [K5:M7].Value
        ElseIf Target.Address = "$C$13" Then
            [C13] = "X": [A1:C3] = [K9:M11].Value
         End If
    End If
Fin:
Application.ScreenUpdating = True
Application.EnableEvents = True
End Sub
Feuil2, il faut mettre un X pour faire le transfert, mais ça me semble moins convivial car il faut effacer les autres X auparavant, avec :
Code:
Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo Fin: If Target.Count > 1 Then Exit Sub
    If Not Intersect(Target, [A13:C13]) Is Nothing Then
        Application.ScreenUpdating = False
        Application.EnableEvents = False
        If [A13] = "X" Then
            [A1:C3] = [K1:M3].Value
        ElseIf [B13] = "X" Then
            [A1:C3] = [K5:M7].Value
        ElseIf [C13] = "X" Then
            [A1:C3] = [K9:M11].Value
        End If
    End If
Fin:
Application.ScreenUpdating = True
Application.EnableEvents = True
End Sub
Bonjour,
Bonjour Delta6x,
Deux solutions en PJ.
Feuil1 : il suffit de cliquer sur des trois cellules pour faire le transfert avec :
VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
On Error GoTo Fin: If Target.Count > 1 Then Exit Sub
    If Not Intersect(Target, [A13:C13]) Is Nothing Then
        Application.ScreenUpdating = False
        Application.EnableEvents = False
        [A13:C13].ClearContents
        If Target.Address = "$A$13" Then
            [A13] = "X": [A1:C3] = [K1:M3].Value
        ElseIf Target.Address = "$B$13" Then
            [B13] = "X": [A1:C3] = [K5:M7].Value
        ElseIf Target.Address = "$C$13" Then
            [C13] = "X": [A1:C3] = [K9:M11].Value
         End If
    End If
Fin:
Application.ScreenUpdating = True
Application.EnableEvents = True
End Sub
Feuil2, il faut mettre un X pour faire le transfert, mais ça me semble moins convivial car il faut effacer les autres X auparavant, avec :
Code:
Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo Fin: If Target.Count > 1 Then Exit Sub
    If Not Intersect(Target, [A13:C13]) Is Nothing Then
        Application.ScreenUpdating = False
        Application.EnableEvents = False
        If [A13] = "X" Then
            [A1:C3] = [K1:M3].Value
        ElseIf [B13] = "X" Then
            [A1:C3] = [K5:M7].Value
        ElseIf [C13] = "X" Then
            [A1:C3] = [K9:M11].Value
        End If
    End If
Fin:
Application.ScreenUpdating = True
Application.EnableEvents = True
End Sub
Bonjour, Sylvanu. J'ai dérogé à mes règles et adapté ta première solution. J'y ai mis le temps, mais y suis parvenu. C'est ma première macro. Je sais pas comment tu fais pour aller aussi vite, T'as peut-être un ordinateur dans le cerveau. En tous cas, tu dois avoir un sacré niveau. Encore merci, c'est super.
 
- 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

Discussions similaires

Réponses
8
Affichages
312
Réponses
7
Affichages
359
Retour