SI + Macro

8test-sheet.xlsx (11.39 Ko)

Bonjour à tous,

Je crois que le sujet a déjà été abordé un certain nombre de fois mais pour autant, je n'ai pas trouvé ma réponse.

Dans le fichier joint, je voudrais faire une règle simple:

En function du contenu d'une case, une autre doit se couper-coller dans une 3ème case.

ainsi, si G2= SAO (il y aura une liste sur le "vrai" fichier), il faut que le contenu H2 se coupe et se colle en I2

et l'opération doit pouvoir se repeter à chaque ligne que je rajoute

J'ai enregistré manuellement (sans coder moi meme) une macro qui coupe et colle de H vers I mais je n'arrive pas avec VBA à créer le code qui va automatiser la macro en fonction du contenu de la case G, et ce pour chaque nouvelle ligne.

Merci d'avance de votre aide

Bonne journée

Bonjour,

voici un code mettre sur le VBA de ta feuille correspondante (sélectionner la feuille sur la partie gauche de la fenetre VBA) :

Private Sub Worksheet_Change(ByVal Target As Range)

For Each Cel In Range("G2:G" & Range("G" & Rows.Count).End(xlUp).Row)

    If Cel.Value = "SAO" Then
        If Range(Cel.Address).Offset(0, 1) <> "" Then
            Range(Cel.Address).Offset(0, 1).Cut
            Range(Cel.Address).Offset(0, 2).Select
            ActiveSheet.Paste
        End If
    End If
Next Cel

End Sub

A plus !

Non, rien ne change.

Y a-t-il quelque chose à faire pour "activer" le code dans la feuille en question?

Normalement, une fois que le code a été convenablement inséré, il suffit de changer une valeur de la feuille concernée pour activer la macro.

OK j'ai trouvé. Ca fonctionne par contre, j'ai une dernière modif.

Quand la case deviant SAO, il ya une mise en forme conditionnelle qui change la couleur de la ligne (colonnes A à L) en vert.

Maintenant le code fonctionnel, quand la case avec le montant se coupe et colle, la case initiale reste blanche et ne prend pas la mise en forme conditionnelle.

en tout cas, merci déjà pour votre aide!

Nous n'avons pas les MFC dans le fichier que tu as joint. Si tu peux en joindre un nouveau avec la macro et les MFC ce serait parfait.

J'ai trouvé, c'est tout bon.

Merci pour votre précieuse aide.

Bonne journée

re bonjour,

Finalement, j'ai toujours le soucis...

Votre code marche nikel mais il y a toujours la MFC qui ne s'applique pas après.

fichier joint (contenu des colonnes effacées pour confidentialité (je suis obligé))

Merci de votre aide encore


Je pense que la solution serait de "transformer" ma MFC en un code VBA.

La raison me semble venir du fait que le couper coller de la macro coupe également la mise en forme de la case.

Est-il possible de ne couper que le contenu?

Bonjour,

Le problème vient du "couper". Donc tu peux remplacer

Range(Cel.Address).Offset(0, 1).Cut
Range(Cel.Address).Offset(0, 2).Select
ActiveSheet.Paste

Par :

Range(Cel.Address).Offset(0, 1).Copy
Range(Cel.Address).Offset(0, 2).PasteSpecial
Range(Cel.Address).Offset(0, 1).ClearContents

Petite question, est ce que toutes tes lignes sont amenées à être modifiées par n'importe quel moyen ? ou bien tu as besoin de mettre à jour uniquement la ligne saisie ? Car à plus grande échelle et selon le rythme de saisie, cette macro risque de devenir gênante pour toi.

EDIT :

Pour le problème de temps d’exécution, tu peux rajouter un If comme suit :

For Each Cel In Range("I2:I" & Range("I" & Rows.Count).End(xlUp).Row)

    If Cel.Value = "SAO" Then
        If Range(Cel.Address).Offset(0, 2) = "" Then
            If Range(Cel.Address).Offset(0, 1) <> "" Then
                Range(Cel.Address).Offset(0, 1).Copy
                Range(Cel.Address).Offset(0, 2).PasteSpecial
                Range(Cel.Address).Offset(0, 1).ClearContents
            End If
        End If
    End If
Next Cel

En fait, il s'agit d'un fichier sur lesquelles je note chaque commande passée de façon à pouvoir faire des cross check avec des outils internes.

Donc, je rajoute des lignes au fur et à mesure des commandes.

Au final, il ne devrait pas y en avoir plus de 500 mais chaque ligne est amenée à être passée de QUOTE à SAO et donc en vert.

Le code couleur me permet de render le fichier lisible très vite et la macro uniquement à me simplifier la tâche et éviter pleins de clics...

merci

Dans ce cas, voir la partie "EDIT" de mon précédent message !

A plus

Ca a l'air tout bon maintenant! Super.

Merci beaucoup.

Puis-je laisser le post ouvert encore quelque temps le temps de verifier sur le moyen terme?

Bien sur, tu fais comme tu veux.

Mais penses y, c'est plus clair pour ceux qui répondent aux post et cela évite de lire un sujet qui est déjà résolu !

A plus !

Hello,

J'ai bien fait de laisser ouvert.

Aujourd'hui, j'ai rajouté une colonne avant ma collone I (qui devient donc J) et du coup, la VBA ne fonctionne plus.

Le couper Coller quand la case de la colonne J devient SAO ne marche plus.

merci d'avance de l'aide

Rechercher des sujets similaires à "macro"