Copie de valeurs d'un onglet à l'autre [VBA]

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

S

skygoat76

Guest
Bonjour,

mon est problème est le suivant:
J'ai 2 onglets "LUP VIE SERIE" (disons A) et "ACTIONS" (disons B)

Je veux balayer ma colonne Y de l'onglet A et si on trouve le mot "OUI" alors je veux copier le texte (colonne I) de la ligne en question dans l'onglet B 1ère colonne et premiere case vide

Si la case de l'onglet B n'est pas vide, il faut passer à la ligne toujours colonne A

J'ai commencé ceci mais cela ne fonctionne pas :

Private Sub Worksheet_Activate()

Dim i, j As Integer

j = 1

For i = 1 To 10000
If Cells(j, 1) = "" Then
If Cells(i, 25).Sheets("LUP VIE SERIE") = "OUI" Then
Cells(j, 1) = Cells(i, 9).Sheets("LUP VIE SERIE")
End If
Else
j = j + 1
End If
Next i

End Sub
 
Re : Copie de valeurs d'un onglet à l'autre [VBA]

re,

si tu veux effacer l'ensemble des données de l'onglet "ACTIONS", il faut remplacer
Code:
    'effacer le contenu de "A2" à "A<fin>" de l'ongletB
    ongletB.Range("A2:[B]A[/B]" & ongletB.Rows.Count).ClearContents
par
Code:
    'effacer le contenu de "A2" à "A<fin>" de l'ongletB
    ongletB.Range("A2:[B]F[/B]" & ongletB.Rows.Count).ClearContents

a+
 
Re : Copie de valeurs d'un onglet à l'autre [VBA]

Non, ce n'est pas ce que je souhaite faire. Si je fais cela, toutes mes actions seront supprimées alors que je ne veux supprimer que les actions du sujet "Soldée".

Autrement dit, si je solde une ligne dans l'onglet "LUP VIE SERIE", il doit se supprimer de l'onglet "ACTIONS" avec ces actions propres et non supprimer TOUTES les actions des autres lignes.

Suis-je clair?

Edit: j'ai trouvé cette fonction Rows(11).EntireRow.Delete Shift:=xlUp mais pour l'utiliser, il faudrait pouvoir identifier clairement les lignes de l'onglet A qui se copie dans l'onglet B avec un compteur peut etre?!
 
Dernière modification par un modérateur:
Re : Copie de valeurs d'un onglet à l'autre [VBA]

re,

ton problème a pas mal changé depuis le début tout de même...

un autre essai :
supprimer la macro "Private Sub Worksheet_Activate()" sur la feuille ACTIONS (la macro précédente.

et sur la feuille LUP VIE SERIE, modifier la macro "Private Sub Worksheet_Change(ByVal Target As Range)" :
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim cellRecherche As Range

If Target.Column = 25 Then
    If Target = "" Then
        Range(Cells(Target.Row, 27), Cells(Target.Row, 30)).Interior.Color = RGB(125, 125, 125)
    Else
        Range(Cells(Target.Row, 27), Cells(Target.Row, 30)).Interior.Color = RGB(256, 256, 256)
    End If
End If

With ThisWorkbook.Sheets("ACTIONS")
    If UCase(Range("Y" & Target.Row).Text) = "OUI" Then
        Set cellRecherche = .Columns("A").Find(Range("I" & Target.Row).Value, , xlValues, xlWhole, , , False)
        If Range("V" & Target.Row).Text = "Soldée" Then
            If Not cellRecherche Is Nothing Then cellRecherche.EntireRow.Delete
        Else
            If cellRecherche Is Nothing Then .Range("A" & .Rows.Count).End(xlUp).Offset(1, 0) = Range("I" & Target.Row).Value
        End If
    End If
End With
End Sub

a+
 
Re : Copie de valeurs d'un onglet à l'autre [VBA]

Re,

Au départ quand j'ai inséré ta macro, cela fonctionnait EXACTEMENT comme je t'ai demandé et puis j'ai voulu testé en supprimant tous les sujets dans l'onglet "ACTIONS".

J'ai fait un aller-retour ongletA, ongletB mais aucun sujet ne s'est recopié.

Bizarre?! comment je fais pour réinitialiser ta macro?

Regarde par toi-même... Cijoint.fr - Service gratuit de dépôt de fichiers

PS: Oui, ma demande a évolué mais là, c'est pile ce que je veux!!!
 
Re : Copie de valeurs d'un onglet à l'autre [VBA]

OK! je recommence.

Le code ci-dessous que tu viens de me donner marche parfaitement. C'est ce que j'ai toujours voulu.

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim cellRecherche As Range

If Target.Column = 25 Then
    If Target = "" Then
        Range(Cells(Target.Row, 27), Cells(Target.Row, 30)).Interior.Color = RGB(125, 125, 125)
    Else
        Range(Cells(Target.Row, 27), Cells(Target.Row, 30)).Interior.Color = RGB(256, 256, 256)
    End If
End If

With ThisWorkbook.Sheets("ACTIONS")
    If UCase(Range("Y" & Target.Row).Text) = "OUI" Then
        Set cellRecherche = .Columns("A").Find(Range("I" & Target.Row).Value, , xlValues, xlWhole, , , False)
        If Range("V" & Target.Row).Text = "Soldée" Then
            If Not cellRecherche Is Nothing Then cellRecherche.EntireRow.Delete
        Else
            If cellRecherche Is Nothing Then .Range("A" & .Rows.Count).End(xlUp).Offset(1, 0) = Range("I" & Target.Row).Value
        End If
    End If
End With
End Sub

MAIS (regarde le fichier Cijoint.fr - Service gratuit de dépôt de fichiers)
J'ai fait cet essai : j'ai supprimé dans l'onglet "ACTIONS" toutes les valeurs des cellules en colonne A pour voir si ta macro allait recopier toutes les cellules de l'onglet "LUP VIE SERIE" concernées par la condition "Oui"

Et malheureusement, rien...Pourquoi? tu peux le voir toi-même l'onglet "ACTIONS" est vide... J'ai loupé qqch?
 
Dernière modification par un modérateur:
Re : Copie de valeurs d'un onglet à l'autre [VBA]

re,

essaye en rajoutant ce code sur la feuille "ACTIONS"

Code:
Private Sub Worksheet_Activate()
Dim ongletA As Worksheet, ongletB As Worksheet
Dim celluleRecherche As Range
Dim premiereAdresse As String
    
    Set ongletA = ThisWorkbook.Sheets("LUP VIE SERIE")
    Set ongletB = ThisWorkbook.Sheets("ACTIONS")
    
    Set celluleRecherche = ongletA.Columns("Y").Find("oui", , xlValues, xlWhole, , , False)
    If Not celluleRecherche Is Nothing Then
        premiereAdresse = celluleRecherche.Address
        Do
            ongletB.Range("A" & ongletB.Rows.Count).End(xlUp).Offset(1, 0).Value = _
            ongletA.Range("I" & celluleRecherche.Row)
            Set celluleRecherche = ongletA.Columns("Y").FindNext(celluleRecherche)
        
        Loop Until celluleRecherche.Address = premiereAdresse
    End If
End Sub

sinon, je ne vois pas...

a+
 
Re : Copie de valeurs d'un onglet à l'autre [VBA]

Oui, j'ai ajouté ton code puis ajouter une ligne de plus et ca marche!

Encore merci pour ta patience! tu m'as fait gagné un temps plus que précieux!
 
- 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
15
Affichages
815
Réponses
8
Affichages
797
Réponses
5
Affichages
926
Réponses
2
Affichages
528
  • Question Question
XL 2021 VBA excel
Réponses
4
Affichages
463
Retour