Copier le contenu de plusieurs cellules si cellule active =

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

W

waligaroux

Guest
Bonsoir à tous,

Je ne suis pas un grand expert en VBA, j'apprends un peu tous les jours et je me confronte à un problème que j'ai du mal à solutionner par moi-même.

Dans mon fichier en annexe, en choisissant dans la colonne C le statut : "confirmé", "annulé" ou "refusé", j'aimerai que le résultat de la colonne A et B se retrouve dans les colonnes correspondantes.

Et si jamais le statut change entre temps, si ça passe de en option à confirmé mais que par la suite c'est annulé, j'aimerai que ce qui se trouve dans la colonne "confirmé" se retrouve dans la colonne "annulé".

Merci de votre aide.
 

Pièces jointes

Re : Copier le contenu de plusieurs cellules si cellule active =

Merci, ça j'avais déjà trouvé.

Mais le truc c'est que ce qui est dans les colonnes Option 1 et Option 2 doit disparaitre.

C'est pour cette raison que je pensais au VBA.
 
Re : Copier le contenu de plusieurs cellules si cellule active =

Re-bonsoir,

Voici une proposition en VBA à mettre dans le code de la "Feuil1". Pour celà, tu click-droit sur le nom d'onglet de la feuille, puis "Visualiser le code".

Pour le choix "En attente", comme il n'y a pas de colonne prévue, je te laisse adapter la macro. Idem pour le contenu des 2 colonnes "Option". Le code fourni considère que "Option" est alphanumérique. Si les options sont numériques, alors il te faut remplacer les "&" dans les lignes
VB:
Opt = Cells(i, 1) & Cells(i, 4) & Cells(i, 6) & Cells(i, 8)

par des "+".

VB:
Option Explicit

Public NbLi As Integer, i As Integer, Opt

Private Sub Worksheet_Change(ByVal Target As Range)
    NbLi = [A65536].End(xlUp).Row
    For i = 2 To 9
        If Cells(65536, i).End(xlUp).Row > NbLi Then NbLi = Cells(65536, i).End(xlUp).Row
    Next
    If Not Intersect(Target, Range("C2:C" & NbLi)) Is Nothing Then
        Application.EnableEvents = False
        i = Target.Row
        If Cells(i, 3) = "Confirmé" Then
            Opt = Cells(i, 1) & Cells(i, 4) & Cells(i, 6) & Cells(i, 8)
            Range("A" & i & ",D" & i & ",F" & i & ",H" & i).ClearContents
            Cells(i, 4) = Opt
            Opt = Cells(i, 2) & Cells(i, 5) & Cells(i, 7) & Cells(i, 9)
            Range("B" & i & ",E" & i & ",G" & i & ",I" & i).ClearContents
            Cells(i, 5) = Opt
        ElseIf Cells(i, 3) = "Annulé" Then
            Opt = Cells(i, 1) & Cells(i, 4) & Cells(i, 6) & Cells(i, 8)
            Range("A" & i & ",D" & i & ",F" & i & ",H" & i).ClearContents
            Cells(i, 6) = Opt
            Opt = Cells(i, 2) & Cells(i, 5) & Cells(i, 7) & Cells(i, 9)
            Range("B" & i & ",E" & i & ",G" & i & ",I" & i).ClearContents
            Cells(i, 7) = Opt
        ElseIf Cells(i, 3) = "Refusé" Then
            Opt = Cells(i, 1) & Cells(i, 4) & Cells(i, 6) & Cells(i, 8)
            Range("A" & i & ",D" & i & ",F" & i & ",H" & i).ClearContents
            Cells(i, 8) = Opt
            Opt = Cells(i, 2) & Cells(i, 5) & Cells(i, 7) & Cells(i, 9)
            Range("B" & i & ",E" & i & ",G" & i & ",I" & i).ClearContents
            Cells(i, 9) = Opt
        End If
        Application.EnableEvents = True
    End If
End Sub

A+
 
- 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
1
Affichages
177
Réponses
18
Affichages
652
Retour