Macro pour copier contenu de cellule +1 si La cellule = 0

Bonjour, SVP j'ai besoin de votre aide .

Je souhaite écrire une macro afin de répondre au besoin suivant:

J'ai un fichier Excel Qui contient plusieurs colonnes parmi lesquelles deux colonnes contenant des montants Réalisé et Budget, je souhaite copier la valeur du budget si le réalisé = 0 et aussi copier la valeur du réalisé si le budget = 0.

si on suppose que le tableau est comme suit:

Year Month Product Group Product Réalise Budget

2017 11 A AA -807 477 0

2017 11 D AD 0 258 016

2017 11 B BA 57 895 0

Le résultat souhaité est :

Year Month Product Group Product Réalise Budget

2017 11 A AA -807 477 -807 477

2017 11 D AD 258 016 258 016

2017 11 B BA 57 895 57 895

Merci de bien vouloir m'aider.

Bonjour,

J'ai du mal a saisir ce que vous voulez. Dans quelle cellule voulez-vous copier les données?

Pouvez vous fournir un classeur exemple?

Cordialement

merci d'abord de votre retour.

En fait, il s'agit de deux colonnes consécutives Réalisé et budget , Je souhaite copier la valeur d'une cellule réalisé et le déposer dans la cellule budget si budget =0 et le contraire aussi.

Merci de voir le fichier ci-joint

15macro.xlsx (9.80 Ko)

Voilà le fichier, est-ce que ça vous convient?

13macro-v1.xlsm (18.17 Ko)

Je vous remercie énormément pour votre réponse.

Après avoir tester la macro il s'est avéré qu'elle change les valeurs 0, mais aussi les valeurs différentes de 0 sont changées!

Merci de me dire qu'est ce qu'il faut corriger .

Et aussi SVP, comment faire pour sélectionner toute la colonne au lieu d'une plage

merci beaucoup

Re - Bonjour,

Effectivement, je n'avais pas fait attention...

Pour y remédier, remplacer le code dans le fichier par le suivant

Sub copie()

Dim i As Variant
Dim j As Variant

'audit
For Each i In Range("G5:G8") '--> plage à adapter
i.Activate
If i.Value = 0 Then
ActiveCell.Value = ActiveCell.Offset(0, -1).Value
Else
End If
Next i

'accrual
For Each j In Range("F5:F8") '--> plage à adapter
j.Activate
If j.Value = 0 Then
ActiveCell.Value = ActiveCell.Offset(0, 1).Value
Else
End If
Next j

End Sub

ou tout simplement remplacer if i = 0 then... par if i.value = 0 then

Pareil pour J (je vous joins le fichier).

Et aussi SVP, comment faire pour sélectionner toute la colonne au lieu d'une plage

pour collectionner une colonne entière, il ne faut pas mettre de numéro dans le range.

Exemple : il faut remplacer Range("F5:F8") par Range("F:F") pour la colonne F

Cordialement

8macro-v2.xlsm (18.29 Ko)
Rechercher des sujets similaires à "macro copier contenu"