Manipulation de date
Résolu
Kuartz
Messages postés
852
Date d'inscription
Statut
Membre
Dernière intervention
-
pijaku Messages postés 12263 Date d'inscription Statut Modérateur Dernière intervention -
pijaku Messages postés 12263 Date d'inscription Statut Modérateur Dernière intervention -
A voir également:
- Manipulation de date
- Airpods 3 date de sortie - Guide
- Office 2024 date de sortie - Accueil - Bureautique
- Samsung a33 date de sortie - Guide
- Whatsapp date incorrecte ✓ - Forum Mobile
- Jm date avis - Forum Consommation & Internet
5 réponses
Bonjour,
Quelqu'un peut-il m'aider svp?
Bien entendu.
1- a-t'on, selon toi, besoin de vérifier que la cellule dans la colonne B contient une date?
En clair, dans ta colonne B peut-il y avoir autre chose qu'une date?
Quelqu'un peut-il m'aider svp?
Bien entendu.
1- a-t'on, selon toi, besoin de vérifier que la cellule dans la colonne B contient une date?
En clair, dans ta colonne B peut-il y avoir autre chose qu'une date?
En fait, la colonne B contient des valeurs qui proviennent d'une extraction de mon SAP. Elles sont en format "Personnalisé" en mode "jjmmaa".
Peut-être effectivement faudrait-il forcer une conversion en date?
Merci d'avance.
Cordialement.
Peut-être effectivement faudrait-il forcer une conversion en date?
Merci d'avance.
Cordialement.
Peux tu essayer ce code :
Et revenir me dire quel est le message obtenu.
Sub Test() Dim L As Long, DL As Long DL = Columns(2).Find("*", , , , xlByColumns, xlPrevious).Row For L = 2 To DL If Not IsDate(Cells(L, 2)) Then MsgBox "Il n'y a pas que des dates. Cf ligne : " & L: GoTo Fin Next L MsgBox "Il n'y a que des dates" Fin: End Sub
Et revenir me dire quel est le message obtenu.
Sub Test() Dim L As Long, DL As Long DL = Columns(1).Find("*", , , , xlByColumns, xlPrevious).Row For L = 5 To DL If Not IsDate(Cells(L, 1)) Then MsgBox "Il n'y a pas que des dates. Cf ligne : " & L: GoTo Fin Next L MsgBox "Il n'y a que des dates" Fin: End Sub
Voilà le code que j'ai mis. En effet, les dates sont en A (erreur de ma part) et le tableau commence à la ligne 5.
Et le message est "Il n'y a que des dates"
Pendant que je vous tiens, serait-il possible que tu m'aide dans ce code également?
Je vous explique, en fait, je n'arrive pas à créer un code ou des conditions se succederaient. J'ai besoin de comparer les colonnes C, E et J et là je ne compare que la colonne C qui n'est pas un conditions suffisante. Mais je n'arrive pas à intégrer plusieurs variables, j'ai du mal en VBA. Dès que j'ajoute une variable à t, ça ne marche plus. En fait, il faut que les colonnes C, E, et J soient égales pour qu'il ne se passe rien. Sinon la ligne est copiée sur une feuille 4 avec un commentaire.
De plus, si au lieu de copier la ligne sur la feuille 4, la ligne pouvait être supprimée du tableau 2 dans le cas ou "La référence n'est pas dans le grand livre" et ou alors ajoutée sur le tableau dans le cas ou "La référence n'est pas dans le tableau de relance".
Désolé de la complexité de ma demande et merci infiniment de m'aider.
Cordialement.
Sub COMPARATIF() Dim DLig As Long Dim DLig2 As Long DLig = Sheets(1).Range("C5").End(xlDown).Row DLig2 = Sheets(2).Range("C5").End(xlDown).Row x = 3 'boucle sur les lignes de Feuil2 For t = 5 To DLig2 If Application.WorksheetFunction.CountIf(Sheets(1).Range("C:C"), Sheets(2).Range("C" & t)) = 0 Then x = x + 1 For k = 1 To 10 Sheets(4).Cells(x, k) = Sheets(2).Cells(t, k) Next Sheets(4).Range("K" & x) = "La référence n'est pas dans le grand livre" End If Next t 'boucle sur les lignes de Feuil1 For t = 5 To DLig If Application.WorksheetFunction.CountIf(Sheets(2).Range("C:C"), Sheets(1).Range("C" & t)) = 0 Then x = x + 1 For k = 1 To 10 Sheets(4).Cells(x, k) = Sheets(1).Cells(t, k) Next Sheets(4).Range("K" & x) = "La référence n'est pas dans le tableau de relance" End If Next t End Sub
Je vous explique, en fait, je n'arrive pas à créer un code ou des conditions se succederaient. J'ai besoin de comparer les colonnes C, E et J et là je ne compare que la colonne C qui n'est pas un conditions suffisante. Mais je n'arrive pas à intégrer plusieurs variables, j'ai du mal en VBA. Dès que j'ajoute une variable à t, ça ne marche plus. En fait, il faut que les colonnes C, E, et J soient égales pour qu'il ne se passe rien. Sinon la ligne est copiée sur une feuille 4 avec un commentaire.
De plus, si au lieu de copier la ligne sur la feuille 4, la ligne pouvait être supprimée du tableau 2 dans le cas ou "La référence n'est pas dans le grand livre" et ou alors ajoutée sur le tableau dans le cas ou "La référence n'est pas dans le tableau de relance".
Désolé de la complexité de ma demande et merci infiniment de m'aider.
Cordialement.
1- répondre à ma dernière question ICI
2- Si Sheets(1).Col(C) = Sheets(2).Col(C) ET Sheets(1).Col(E) = Sheets(2).Col(E) ET Sheets(1).Col(J) = Sheets(2).Col(J) alors on ne fait rien, sinon on copie/colle dans la Sheets(4).
C'est ça?
3- quel est le rapport avec la question en cours sur les dates colonne B??
4- De plus, si au lieu de copier la ligne sur la feuille 4, la ligne pouvait être supprimée du tableau 2 dans le cas ou "La référence n'est pas dans le grand livre" et ou alors ajoutée sur le tableau dans le cas ou "La référence n'est pas dans le tableau de relance".
Ne me parle pas du tout.
Il te faut traduire en termes Excel :
"La référence n'est pas dans le grand livre"
par exemple : la valeur contenue dans la colonne V n'est pas référencée colonne A de la feuille "Gd Livre"...
"La référence n'est pas dans le tableau de relance"??? Même chose
2- Si Sheets(1).Col(C) = Sheets(2).Col(C) ET Sheets(1).Col(E) = Sheets(2).Col(E) ET Sheets(1).Col(J) = Sheets(2).Col(J) alors on ne fait rien, sinon on copie/colle dans la Sheets(4).
C'est ça?
3- quel est le rapport avec la question en cours sur les dates colonne B??
4- De plus, si au lieu de copier la ligne sur la feuille 4, la ligne pouvait être supprimée du tableau 2 dans le cas ou "La référence n'est pas dans le grand livre" et ou alors ajoutée sur le tableau dans le cas ou "La référence n'est pas dans le tableau de relance".
Ne me parle pas du tout.
Il te faut traduire en termes Excel :
"La référence n'est pas dans le grand livre"
par exemple : la valeur contenue dans la colonne V n'est pas référencée colonne A de la feuille "Gd Livre"...
"La référence n'est pas dans le tableau de relance"??? Même chose
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
1 - "Il n'y a que des dates"
2 - C'est presque ça mais effectivement, ce sera beaucoup plus simple dans ce langage là. Je traduis ma demande :
Si Sheets(1).Col(C) = Sheets(2).Col(E) ET Sheets(1).Col(E) = Sheets(2).Col(J) ET Sheets(1).Col(C) = Sheets(2).Col(J) alors on ne fait rien, sinon Si une ligne (toujours en comparant les mêmes colonnes) appartient à Sheets(1) et pas à Sheets(2) alors, on l'ajoute à Sheets(2) et Si une ligne (toujours en comparant les mêmes colonnes) appartient à Sheets(2) et pas à Sheets(1) alors, on la supprime de Sheets(2).
D'où l'intérêt dans le code joint de comparer les tableaux dans un sens puis dans l'autre, savoir ce qui appartient à Sheets(1) et pas à Sheets(2) et inversement.
3- Le retraitement de la date fait partie des retraitements préalables à ce comparatif. Il s'agit d'un bouton sur lequel j'appuierai avant.
4- Je te prie de m'excuser pour ces phrases qui ne veulent absolument rien dire pour toi. En gros "La référence n'est pas dans le grand livre" veut dire : "La ligne est sur sheets(2) mais pas sur sheets(1)" Et "La référence n'est pas dans le tableau de relance" veut dire : "La ligne est sur Sheets(1) mais pas sur Sheets(2).
Sauf que je souhaiterais que ces phrases n'apparaissent plus et qu'à la place, les actions que j'ai formulé en haut soit exécutées, soit la suppression ou l'ajout des lignes.
Cordialement.
2 - C'est presque ça mais effectivement, ce sera beaucoup plus simple dans ce langage là. Je traduis ma demande :
Si Sheets(1).Col(C) = Sheets(2).Col(E) ET Sheets(1).Col(E) = Sheets(2).Col(J) ET Sheets(1).Col(C) = Sheets(2).Col(J) alors on ne fait rien, sinon Si une ligne (toujours en comparant les mêmes colonnes) appartient à Sheets(1) et pas à Sheets(2) alors, on l'ajoute à Sheets(2) et Si une ligne (toujours en comparant les mêmes colonnes) appartient à Sheets(2) et pas à Sheets(1) alors, on la supprime de Sheets(2).
D'où l'intérêt dans le code joint de comparer les tableaux dans un sens puis dans l'autre, savoir ce qui appartient à Sheets(1) et pas à Sheets(2) et inversement.
3- Le retraitement de la date fait partie des retraitements préalables à ce comparatif. Il s'agit d'un bouton sur lequel j'appuierai avant.
4- Je te prie de m'excuser pour ces phrases qui ne veulent absolument rien dire pour toi. En gros "La référence n'est pas dans le grand livre" veut dire : "La ligne est sur sheets(2) mais pas sur sheets(1)" Et "La référence n'est pas dans le tableau de relance" veut dire : "La ligne est sur Sheets(1) mais pas sur Sheets(2).
Sauf que je souhaiterais que ces phrases n'apparaissent plus et qu'à la place, les actions que j'ai formulé en haut soit exécutées, soit la suppression ou l'ajout des lignes.
Cordialement.
Pour être sur.....
1- les dates sont en colonne A de la feuille Sheets(1)
2- Es tu sur de ton test : Sheets(1).Col(C) = Sheets(2).Col(E) ET Sheets(1).Col(E) = Sheets(2).Col(J) ET Sheets(1).Col(C) = Sheets(2).Col(J)
En effet, il y a deux fois Sheets(1).Col(C)
3- en fait le point 4 évoqué avant correspond à ce test?
4- les feuilles concernées sont bien Sheets(1) et Sheets(2)?
5- sinon Si une ligne (toujours en comparant les mêmes colonnes) appartient à Sheets(1) et pas à Sheets(2) alors, on l'ajoute à Sheets(2) et Si une ligne (toujours en comparant les mêmes colonnes) appartient à Sheets(2) et pas à Sheets(1) alors, on la supprime de Sheets(2).
Plus question de Sheets(4)??? C'est ton dernier mot?
1- les dates sont en colonne A de la feuille Sheets(1)
2- Es tu sur de ton test : Sheets(1).Col(C) = Sheets(2).Col(E) ET Sheets(1).Col(E) = Sheets(2).Col(J) ET Sheets(1).Col(C) = Sheets(2).Col(J)
En effet, il y a deux fois Sheets(1).Col(C)
3- en fait le point 4 évoqué avant correspond à ce test?
4- les feuilles concernées sont bien Sheets(1) et Sheets(2)?
5- sinon Si une ligne (toujours en comparant les mêmes colonnes) appartient à Sheets(1) et pas à Sheets(2) alors, on l'ajoute à Sheets(2) et Si une ligne (toujours en comparant les mêmes colonnes) appartient à Sheets(2) et pas à Sheets(1) alors, on la supprime de Sheets(2).
Plus question de Sheets(4)??? C'est ton dernier mot?
1 - Exact
2 - Non, je me suis complètement planté..... Pardon. Sheets(1).Col(C) = Sheets(2).Col(C) ET Sheets(1).Col(E)=Sheets(2).Col(E) ET Sheets(1).Col(J)=Sheets(2).Col(J).
Sachant qu'il faut comparer chaque cellule étant donné que les valeurs ne sont pas triées et ne doivent pas l'être.
3 - Le code que j'utilise provient d'un autre fichier excel mais les conditions sont vraiment différentes.
4 - Oui.
5 - Oui, c'est mon dernier mot.
Merci.
2 - Non, je me suis complètement planté..... Pardon. Sheets(1).Col(C) = Sheets(2).Col(C) ET Sheets(1).Col(E)=Sheets(2).Col(E) ET Sheets(1).Col(J)=Sheets(2).Col(J).
Sachant qu'il faut comparer chaque cellule étant donné que les valeurs ne sont pas triées et ne doivent pas l'être.
3 - Le code que j'utilise provient d'un autre fichier excel mais les conditions sont vraiment différentes.
4 - Oui.
5 - Oui, c'est mon dernier mot.
Merci.
Bon.
J'essaie de te faire un test pour cet après midi.
En attendant, essaie cette macro pour supprimer en fonction des dates en colonne A :
Combien de lignes à traiter???
J'essaie de te faire un test pour cet après midi.
En attendant, essaie cette macro pour supprimer en fonction des dates en colonne A :
Sub Supprime_Selon_Date_Col_A() Dim L As Long, DL As Long, maDate As Date With Sheets(1) DL = Columns(1).Find("*", , , , xlByColumns, xlPrevious).Row For L = DL To 2 Step -1 maDate = .Range("A" & L) If DateSerial(Year(maDate), Month(maDate), Day(maDate) + 30) < Date Then .Rows(L).Delete End If Next L End With End Sub
Combien de lignes à traiter???
Concernant ta seconde question, elle est en bonne voie ici :
https://forums.commentcamarche.net/forum/affich-32156064-comparaison-de-2-tableaux
https://forums.commentcamarche.net/forum/affich-32156064-comparaison-de-2-tableaux