Etendre une formule SI sans supprimer les valeurs

Bonjour à tous,

Je suis navré mais le sujet que je propose me semble simple.

Je souhaite que les cellules de ma colonne "contrôle technique date" soient vides sous la condition que la colonne "rendu" soit pleine.

J'ai essayé =Si(B5<>"";"") dans D5 puis de l'étirer jusqu'à D34.

Le problème est que cela supprime mes valeurs lorsque j'étends la formule, alors j'ai copié les cellules puis étendu ma formule puis coller mes valeurs, mais cela écrase à sont tour la formule.

Je ne pense pas savoir comment bien étendre la formule.

Je vous donne ci-joint mon fichier exemple.

Merci à vous.

Cdt,

Marce

Bonjour,

Dans une cellule tu ne peux pas avoir et une formule et une valeur en dur, c'est soit l'une soit l'autre mais par contre tu peux faire en sorte que ta formule te retourne la valeur désirée si la condition est vrai comme par exemple : =SI(B5="";"";B5+365) ce qui rajoute 365 jours à la date située en B5 si B5 contient une date sinon, aucune valeur n'apparaîtra

D'accord, merci de l'info. Le but était vraiment de supprimer la valeur si il y a une valeur dans l'autre.

Je vais étudier d'autres options.

Merci de ton aide

Bonjour Marce, le forum,

tu a écrit :

Le but était vraiment de supprimer la valeur si il y a une valeur dans l'autre.

Je vais étudier d'autres options.

je te retourne une option de plus :

Ctrl e ➯ date contrôle technique effacée si y'a une date rendu


Alt F11 pour voir le code VBA, puis revenir sur Excel

si besoin, tu peux demander une adaptation.

merci de me dire si ça te convient.

dhany

Bonjour Dhany,

Je viens de lire ta solution, parfait j'en ai compris les subtilités afin de l'adapter à mon tableau réel.

Après je n'ai pas compris le langage exact.

Je vais essayé de l'affecter à un bouton plutôt qu'à une commande clavier (ctr e) ça sera plus lisibles pour les utilisateurs.

Merci beaucoup.

Cordialement,

Marce

Bonjour Marce,

merci pour ton retour, pour le , et pour avoir passé le sujet en résolu !


tu a écrit :

Après je n'ai pas compris le langage exact.

pour le langage VBA, je remets ici la macro :

Sub EffDatesCT()
  Dim dlig&, lig&: Application.ScreenUpdating = 0
  dlig = Cells(Rows.Count, 2).End(xlUp).Row
  For lig = 5 To dlig
    With Cells(lig, 2)
      If Not IsEmpty(.Value) Then .Offset(, 2).ClearContents
    End With
  Next lig
End Sub

explication du code VBA :

dlig = Cells(Rows.Count, 2).End(xlUp).Row : dernière ligne utilisée, selon la colonne 2 ;

dans l'exemple, colonne B, la dernière donnée est en ligne 30 (la date 20/11/17) ; donc dlig = 30

For lig = 5 To dlig : lig : ligne de 5 à dlig, donc de 5 à 30

With Cells(lig, 2) : avec la cellule de la ligne lig, colonne B

If Not IsEmpty(.Value) Then : si .Value = la valeur de Cells(lig, 2) n'est pas vide, alors

.Offset(, 2).ClearContents : effacer la cellule qui est sur la même ligne, 2 colonnes à droite :

colonne B + 2 = colonne D ➯ ça efface la date du contrôle technique : c'est ce qu'il fallait !

dhany

Merci Dhany,

Limpide!

Donc "Dim lig& " dimensionne Lig comme pouvant être tout, qui sera par la suite dimensionné comme integer en l'utilisant?

Cdt

Marce

Dim lig& déclare une variable lig de type Long et à l'utilisation, c'est un entier Long

attention : il n'est pas transformé en Integer !

Rechercher des sujets similaires à "etendre formule supprimer valeurs"