Copier le contenu de plusieurs cellules si cellule active =

waligaroux

XLDnaute Nouveau
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

  • Test copie cellule.xlsm
    9.3 KB · Affichages: 31
  • Test copie cellule.xlsm
    9.3 KB · Affichages: 32
  • Test copie cellule.xlsm
    9.3 KB · Affichages: 33

Fred0o

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

Bonsoir waligaroux,

Une solution par formule qui fonctionne...

A+
 

Pièces jointes

  • Test copie cellule.xlsm
    10.1 KB · Affichages: 30
  • Test copie cellule.xlsm
    10.1 KB · Affichages: 30
  • Test copie cellule.xlsm
    10.1 KB · Affichages: 33

Fred0o

XLDnaute Barbatruc
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+
 

Discussions similaires

Statistiques des forums

Discussions
312 492
Messages
2 088 936
Membres
103 987
dernier inscrit
Doctami