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]

Si, si le X est nécessaire, ne touchez à rien à ce sujet.

Le "X" va permettre de ne pas régénérer toute la liste de sujets quand j'irai sur l'onglet "ACTIONS", c'est donc un gain de temps.

Le "Soldée" est autre chose, pour conclure une ligne.

Mon unique petit soucis est que si je me trompe et mets "Soldée" à un moment, votre macro va mettre un X même si par la suite je change le "Soldée" en "A traiter", le X restera...

Donc, si ca ne vous dérange pas, il faudrait une condition ou un test pour faire que le X ne se mettent que si la ligne est "A traiter".

Regardez mon fichier joint post #15 vous le verrez par vous-même...
 
Re : Copie de valeurs d'un onglet à l'autre [VBA]

Re,

Vu le fichier que vous avez ajouté au post #15.

C'est peut-être ce test que vous voulez :

Code:
If .Cells(i, "Y") = "OUI" And (.Cells(i, "A") <> "X" [COLOR="Red"]Or[/COLOR] .Cells(i, "V") <> "Soldée") Then

Edit : attention aux parenthèses qui encadrent les expressions de chaque coté de Or.

A+
 
Dernière édition:
Re : Copie de valeurs d'un onglet à l'autre [VBA]

Non, pas du tout. Le résultat obtenu est complètement erroné.

C'est pas grave, je vais essayer de ne pas me tromper...

En fait, je suis têtu : Votre test avec les 2 "And" est bon MAIS il faudrait que, si je mets Soldée et le retire, votre macro retire également le "X" qui aura été ajouté.

Est-ce clair?
 
Re : Copie de valeurs d'un onglet à l'autre [VBA]

Re,

On n'arrive plus à ouvrir votre fichier, vous auriez dû le mettre sur Cijoint.fr.

De mémoire, "Soldée" apparaît en colonne V quand la colonne K est renseignée.

Vous voulez donc effacer les "X" en colonne A quand on efface les valeurs en colonne K (des dates je crois).

C'est donc un problème différent, car alors la recopie en feuille "ACTIONS" va pouvoir se faire, même si elle a été faite auparavant.

Si c'est ça que vous voulez, utiliser la macro suivante dans le code de la feuille "LUP VIE SERIE" :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Set Target = Target.Cells(1, 1)
If Not Intersect(Target, Columns("K")) Is Nothing And Target = "" Then Range("A" & Target.Row) = ""
End Sub

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

Re,

Aucune raison qu'il y ait conflit, la 1ère macro est une Worksheet_Activate, la seconde une Worksheet_Change.

A moins qu'il y ait déjà une Worksheet_Change, dans ce cas il en faut une seule...

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

Job75,

Je viens de m'apercevoir d'un GROS problème.

Quand je solde un sujet dans l'onglet "LUP VIE SERIE" et que donc, il y a un "X", "Soldée" et "OUI", le sujet RESTE dans la liste de l'onglet "ACTIONS".
Or, il est soldé donc il devrait y avoir une mise à jour avec votre macro non???
 
Re : Copie de valeurs d'un onglet à l'autre [VBA]

Re,

Vous n'avez jamais rien demandé de ce genre, ma macro n'efface jamais rien dans la feuille ACTIONS.

Voyez la macro de mromain qui efface tout avant de copier.

Je vous avais dit que des choses n'étaient pas claires. Avant de poser un problème, il faut savoir ce qu'on veut faire 🙄

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

re bonjour le fil,

une autre solution :
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")
    
    ongletB.Columns("A").ClearContents
    
    Set celluleRecherche = ongletA.Columns("Y").Find("oui", , xlValues, xlWhole, , , False)
    If Not celluleRecherche Is Nothing Then
        premiereAdresse = celluleRecherche.Address
        Do
            If ongletA.Range("V" & celluleRecherche.Row).Text <> "Soldée" Then _
                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
a+
 

Pièces jointes

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

Le problème est que la macro de mromain ne gère pas les lignes "Soldées" comme la vôtre.

Et comme elle est très compliquée, je n'arrive pas à l'adapter... :-(

Edit: SUPER mromain! cette fois-ci elle gère les lignes "Soldées"!!
Comment faire pour que ta macro ne supprime pas ma cellule A1 dans l'onglet "ACTIONS" quand les valeurs sont recopiées (elle contient mon titre)
 
Dernière modification par un modérateur:
Re : Copie de valeurs d'un onglet à l'autre [VBA]

bonjour skygoat76, job75,

j'ai modifiée la ligne en gras (pour ne pas effacer la cellule A1) et rajouté du commentaire :
Code:
Private Sub Worksheet_Activate()
Dim ongletA As Worksheet, ongletB As Worksheet
Dim celluleRecherche As Range
Dim premiereAdresse As String
    
    'définir les "onglet de travail"
    Set ongletA = ThisWorkbook.Sheets("LUP VIE SERIE")
    Set ongletB = ThisWorkbook.Sheets("ACTIONS")
    
    'effacer le contenu de "A2" à "A<fin>" de l'ongletB
    [B]ongletB.Range("A2:A" & ongletB.Rows.Count).ClearContents[/B]
    
    'rechercher dans la colonne "Y" de l'ongletA la valeur "oui" (ignorer la casse)
    Set celluleRecherche = ongletA.Columns("Y").Find("oui", , xlValues, xlWhole, , , False)
    'si une cellule est trouvée
    If Not celluleRecherche Is Nothing Then
        
        'BOUCLE SUR CHAQUE CELLULE TROUVEE
        
        'mémoriser l'adresse de la mremière cellule trouvée
        premiereAdresse = celluleRecherche.Address
        'boucler...
        Do
            'si la cellule de la colonne "V" et de la même ligne que la cellule trouvée, alors
            'copier à la suite de la colonne "A" de l'ongletB la valeur cellule de la colonne "I"
            'et de la même ligne que la cellule trouvée
            If ongletA.Range("V" & celluleRecherche.Row).Text <> "Soldée" Then _
                ongletB.Range("A" & ongletB.Rows.Count).End(xlUp).Offset(1, 0).Value = _
                ongletA.Range("I" & celluleRecherche.Row)
            'chercher la cellule suivante (contenant le mot "oui")
            Set celluleRecherche = ongletA.Columns("Y").FindNext(celluleRecherche)
        '...tant que la cellule actuelle n'est pas la première trouvée
        Loop Until celluleRecherche.Address = premiereAdresse
        
        'FIN BOUCLE
        
    End If
End Sub

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

Bonjour mromain,

tu es bien matinal!
J'ai déjà testé ta macro qui, évidemment, fonctionne...

Une dernière chose à laquelle j'ai pensé cette nuit (je suis désolé d'ajouter des trucs au fur et à mesure mais je ne me rends compte que maintenant des pbs auquels je n'avais pas réfléchi, difficile de tout cerner)

Je t'ai mis le fichier : Cijoint.fr - Service gratuit de dépôt de fichiers

Tu peux constater que tout se recopie parfaitement MAIS
Quand je solde une ligne (exemple la 1ere "Echappement 8 soupapes") dans l'onglet "LUP VIE SERIE", les actions que j'aurais mises pour chaque métier dans l'onglet "ACTIONS" vont rester alors que le sujet, lui, aura disparu.

Peux-tu faire en sorte que, quand le sujet est "Soldée" dans l'onglet "LUP VIE SERIE" alors le sujet disparait de l'onglet "ACTIONS" et également les actions qui s'y rapportent??
 
- 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