Macro copier-coller une cellule si une autre contient un mot

Fermé
empereurtilleul Messages postés 26 Date d'inscription jeudi 22 avril 2021 Statut Membre Dernière intervention 15 décembre 2023 - 3 janv. 2022 à 17:45
Le Pingou Messages postés 12141 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 19 septembre 2024 - 18 janv. 2022 à 17:26
Bonjour,

Je voudrais créer une macro qui copie une cellule B dans une autre cellule A si la dernière cellule C contient un mot spécifique.

Je vous joint ce fichier: https://www.cjoint.com/c/LAdqTh8lr7G

Je souhaite une macro car mon fichier réel fait plusieurs centaines de lignes.

Merci d'avance


Configuration: Windows / Firefox 91.0
A voir également:

14 réponses

Le Pingou Messages postés 12141 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 19 septembre 2024 1 446
Modifié le 3 janv. 2022 à 18:06
Bonjour,
Pas besoin de macro, une simple formule en A2 que vous tirez vers le bas
Selon votre exemple: en A2
=SI(C2="Orange";B2;"")


0
empereurtilleul Messages postés 26 Date d'inscription jeudi 22 avril 2021 Statut Membre Dernière intervention 15 décembre 2023
4 janv. 2022 à 09:07
Bonjour,

En amont de cette fonction, je copie colle des données en A:B ce qui supprime le contenu des cellules en A.

Je voudrais donc une macro qui puisse faire cela.

Merci
0
Le Pingou Messages postés 12141 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 19 septembre 2024 1 446
4 janv. 2022 à 10:41
Bonjour,
Petite question avez-vous vraiment besoin des valeurs de la colonne "A" que vous copier/coller?
0
empereurtilleul Messages postés 26 Date d'inscription jeudi 22 avril 2021 Statut Membre Dernière intervention 15 décembre 2023
4 janv. 2022 à 10:53
Bonjour,

Je comprend votre question mais oui on en a vraiment besoin, les valeurs de la colonne A sont "prioritaires".

J'ai refait le fichier, au lieu d'avoir des fruits j'ai mis le choix de la colonne (Date A ou Date B).

https://www.cjoint.com/c/LAejUmVn4DG

Je voudrais que si dans la cellule C il est écrit "Date B" alors je copie la cellule B de cette même ligne et la copier dans la cellule A de cette ligne.
Et faire cela en boucle jusqu'à la dernière ligne, c'est la où j'ai vraiment un problème.

Pour la condition je pense que je dois faire (je ne suis pas sur, il est possible qu'il y ai des erreurs):
If cells(lig, 3) = "Date B" Then
cells(lig, 3).Copy
cells(lig, 1).Paste

lig étant la ligne qui boucle.

Merci d'avance
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Le Pingou Messages postés 12141 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 19 septembre 2024 1 446
4 janv. 2022 à 14:07
Bonjour,
Selon vos explications il faut simplement copier en cellule A la cellule B si cellule A est vide !
0
empereurtilleul Messages postés 26 Date d'inscription jeudi 22 avril 2021 Statut Membre Dernière intervention 15 décembre 2023
4 janv. 2022 à 14:17
Et bien comment faire cela en macro?
Car si je rentre en A2:
=SI(A2="";B2;A2)
J'ai une référence circulaire donc pas un bon résultat, d'où l'intervention de la cellule C
(Je ne peux pas insérer une nouvelle colonne dans mon fichier réel)
Encore une fois, le fichier réel fait plusieurs centaines de lignes donc je ne vais pas le faire manuellement
0
Le Pingou Messages postés 12141 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 19 septembre 2024 1 446
4 janv. 2022 à 15:09
Bonjour,
Une solution: https://www.cjoint.com/c/LAeojoVNfxn
0
empereurtilleul Messages postés 26 Date d'inscription jeudi 22 avril 2021 Statut Membre Dernière intervention 15 décembre 2023
4 janv. 2022 à 15:19
Super c'est exactement ce qu'il me fallait, merci beaucoup!
0
empereurtilleul Messages postés 26 Date d'inscription jeudi 22 avril 2021 Statut Membre Dernière intervention 15 décembre 2023
Modifié le 6 janv. 2022 à 09:32
J'ai un nouveau problème avec ce code, en adaptant la formule à mon fichier réel j'ai le message d'erreur: "Incompatibilité de type"

Voici mon code
Sub adaptercolA()
Dim c As Long
For c = 2 To Cells(Rows.Count, 2).End(xlUp).Row
    If Cells(c, 37) = "Ftard" Then
        Cells(c, 9).Value = Cells(c, 36)
    End If
Next c
End Sub


J'ai l'erreur au niveau de :
If Cells(c, 37) = "Ftard" Then
0
Le Pingou Messages postés 12141 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 19 septembre 2024 1 446
Modifié le 6 janv. 2022 à 13:11
Bonjour,
Eh bien sans connaitre la structure du fichier (Feuille concernée) ,même les miracles sont impossibles.

0
empereurtilleul Messages postés 26 Date d'inscription jeudi 22 avril 2021 Statut Membre Dernière intervention 15 décembre 2023
18 janv. 2022 à 10:30
Je ne peux vous montrer les données dans le fichier, mais les données de la colonne 0 (15ème colonne) sont sous forme de texte, donc je pense que l'erreur vient surement de la

Voici le code entier

Sub PreOCA()
Sheets("PreOCA").Select
Range("A2:U2").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.ClearContents
Sheets("Calcul S").Select
For li = 1 To Cells(Rows.Count, 1).End(xlUp).Row
Application.ScreenUpdating = False

    If Cells(li, 15).Value = "Décaler" Then
        Rows(li).Copy
        Sheets("PreOCA").Select
        Range("A" & Rows.Count).End(xlUp).Offset(1, 0).Select
        ActiveSheet.Paste
        Application.CutCopyMode = False
        Sheets("Calcul S").Activate
    End If
    If Cells(li, 15).Value = "Avancer" Then
        Rows(li).Copy
        Sheets("PreOCA").Select
        Range("A" & Rows.Count).End(xlUp).Offset(1, 0).Select
        ActiveSheet.Paste
        Application.CutCopyMode = False
        Sheets("Calcul S").Activate
    End If
    If Cells(li, 15) = "Stade Bord" Then
        Rows(li).Copy
        Sheets("PreOCA").Select
        Range("A" & Rows.Count).End(xlUp).Offset(1, 0).Select
        ActiveSheet.Paste
        Application.CutCopyMode = False
        Sheets("Calcul S").Activate
    End If
Next li
Application.ScreenUpdating = True
Sheets("PreOCA").Select
Range("M2").Select
    Range(Selection, Selection.End(xlDown)).Select
    Selection.Copy
    Range("J2").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
End Sub
0
Le Pingou Messages postés 12141 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 19 septembre 2024 1 446
18 janv. 2022 à 11:11
Bonjour,
Ce code n'a aucune relation avec la question du poste 9, désolé je ne peux rien proposer.
0
empereurtilleul Messages postés 26 Date d'inscription jeudi 22 avril 2021 Statut Membre Dernière intervention 15 décembre 2023
18 janv. 2022 à 12:07
Les deux codes ont la même structure mais bref

Au niveau de
If Cells(li, 15).Value = "Décaler" Then
je reçois une erreur "Incompatibilité de type"
Je suppose que l'erreur vient du fait que les données de la colonne O (15ème colonne) viennent d'une recherchev
0
Le Pingou Messages postés 12141 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 19 septembre 2024 1 446
Modifié le 18 janv. 2022 à 17:28
Bonjour,
Mais bref, pas de réponse.

0