[Résolu] Manipulation de Dates [XL2007]

kraenys

XLDnaute Junior
Bonjour le forum,

Voici mon problème,

J'ai des formules qui fonctionnent très bien et j'aimerai les adapter en code VBA sous un module,

Ces formules traitent des données au départ de type texte qui deviennent des dates par la suite. (on a au départ que les 3 premières colonnes. Puis on complète les autres avec leur formules respectives)

Voici ci-joint le fichier avec les formules et un début de code VBA (le début de code VBA sera sans doute peu utile, mais sait-on jamais?)

Ce que j'aimerai, c'est obtenir le résultat tel qu'il est affiché dans mon fichier, mais en lançant une macro et non en me servant des formules. Je souhaite également que le code puisse s'adapter à un nombre de lignes et de colonnes non prédéfini (d'où la présence de DerLig et DerCol).

Merci d'avance de votre aide.


EDIT: Le fichier étant un peu trop volumineux, j'ai laissé les formules que sur les premières lignes, il suffit de développer pour obtenir toutes les autres lignes.

Bien à vous.

Kraenys
 

Pièces jointes

  • Requête2.zip
    178.1 KB · Affichages: 59
Dernière édition:

kraenys

XLDnaute Junior
Re : Manipulation de Dates [XL2007]

Bonjour PierreJean,

Effectivement, je me suis fait piéger, le format xlsb n'est pas accepté, j'ai donc du le compresser un peu d'abord^^

Merci de votre aide et de votre réponse extrêmement rapide.

Bien à vous.
 

kraenys

XLDnaute Junior
Re : Manipulation de Dates [XL2007]

Bonjour Pierrejean,

Le résultat convient presque parfaitement, il manque juste une petite chose lors de la quatrième fonction:
tablo(n - 1, 4) = "=Si(F2>E2;""ERREUR"";""*"")"

Celle ci renvoi à tout les coups ERREUR alors que ça ne devrais pas être le cas, je pense qu'elle ne traite que le cas à la ligne 2 et renvoi ce résultat sur toutes les lignes. Il faudrait pouvoir mettre une variable au lieu de 2 et l'incrémenter de 1 à chaque boucle Next, ou quelquechose du type pour pouvoir faire ligne par ligne.

J'ai essayé ceci:
Code:
Dim i
i = 1

...

  tablo(n - 1, 4) = "=Si(Fi>Ei;""ERREUR"";""*"")"

...

   i = i + 1
Next

mais ça ne passe pas, je continu à essayer de résoudre ce problème. :confused: Si vous avez une solution, c'est bien volontiers.:eek:

Merci de votre aide, je n'aurai pas espéré une réponse si rapide et si proche du résultat attendu! Merci de votre aide

Bien à vous.

Kraenys
 
Dernière édition:

pierrejean

XLDnaute Barbatruc
Re : Manipulation de Dates [XL2007]

Re

A tester:

Code:
Sub test()
Application.ScreenUpdating = False
ReDim tablo(1 To Range("B" & Rows.Count).End(xlUp).Row - 1, 1 To 4)
For n = 2 To Range("B" & Rows.Count).End(xlUp).Row
  tablo(n - 1, 1) = Left(Range("B" & n), 4) & "/" & Mid(Range("B" & n), 5, 2) & "/" & Right(Range("B" & n), 2)
  tablo(n - 1, 2) = CDate(Right(Range("B" & n), 2) & "/" & Mid(Range("B" & n), 5, 2) & "/" & Left(Range("B" & n), 4)) - 140
  tablo(n - 1, 3) = Date
  tablo(n - 1, 4) = "=SI(F2>E" & n & ";""ERREUR"";""*"")"
Next
For n = LBound(tablo, 1) To UBound(tablo, 1)
  For m = LBound(tablo, 2) To UBound(tablo, 2) - 1
   Cells(1 + n, 3 + m) = tablo(n, m)
  Next
   Cells(1 + n, 7).FormulaLocal = tablo(n, 4)
Next
Application.ScreenUpdating = True
End Sub
 

Discussions similaires

Réponses
11
Affichages
504

Statistiques des forums

Discussions
312 094
Messages
2 085 242
Membres
102 833
dernier inscrit
Hassna