Manipulation de date
Résolu/Fermé
Kuartz
Messages postés
852
Date d'inscription
vendredi 13 février 2015
Statut
Membre
Dernière intervention
15 février 2019
-
25 juin 2015 à 08:58
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 - 25 juin 2015 à 15:23
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 - 25 juin 2015 à 15:23
5 réponses
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 754
25 juin 2015 à 09:43
25 juin 2015 à 09:43
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?
Kuartz
Messages postés
852
Date d'inscription
vendredi 13 février 2015
Statut
Membre
Dernière intervention
15 février 2019
61
25 juin 2015 à 10:00
25 juin 2015 à 10:00
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.
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 754
25 juin 2015 à 10:14
25 juin 2015 à 10:14
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.
Kuartz
Messages postés
852
Date d'inscription
vendredi 13 février 2015
Statut
Membre
Dernière intervention
15 février 2019
61
>
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
25 juin 2015 à 10:20
25 juin 2015 à 10:20
"Il n'y a pas que des dates". C'est ce que je pensais, il faut d'abord avoir un code qui convertisse tout en date....
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 754
>
Kuartz
Messages postés
852
Date d'inscription
vendredi 13 février 2015
Statut
Membre
Dernière intervention
15 février 2019
25 juin 2015 à 10:21
25 juin 2015 à 10:21
Tu ne m'as pas donné le message entier.
Il est important de connaitre, pour moi, le numéro de la ligne qui t'a bloqué.
Il est important de connaitre, pour moi, le numéro de la ligne qui t'a bloqué.
Kuartz
Messages postés
852
Date d'inscription
vendredi 13 février 2015
Statut
Membre
Dernière intervention
15 février 2019
61
>
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
Modifié par Kuartz le 25/06/2015 à 10:46
Modifié par Kuartz le 25/06/2015 à 10:46
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"
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 754
>
Kuartz
Messages postés
852
Date d'inscription
vendredi 13 février 2015
Statut
Membre
Dernière intervention
15 février 2019
25 juin 2015 à 10:51
25 juin 2015 à 10:51
Tu n'as plus qu'à répondre aux questions ICI
Kuartz
Messages postés
852
Date d'inscription
vendredi 13 février 2015
Statut
Membre
Dernière intervention
15 février 2019
61
Modifié par Kuartz le 25/06/2015 à 10:34
Modifié par Kuartz le 25/06/2015 à 10:34
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.
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 754
25 juin 2015 à 10:41
25 juin 2015 à 10:41
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
Kuartz
Messages postés
852
Date d'inscription
vendredi 13 février 2015
Statut
Membre
Dernière intervention
15 février 2019
61
25 juin 2015 à 10:59
25 juin 2015 à 10:59
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.
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 754
25 juin 2015 à 11:14
25 juin 2015 à 11:14
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?
Kuartz
Messages postés
852
Date d'inscription
vendredi 13 février 2015
Statut
Membre
Dernière intervention
15 février 2019
61
>
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
25 juin 2015 à 11:49
25 juin 2015 à 11:49
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.
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 754
>
Kuartz
Messages postés
852
Date d'inscription
vendredi 13 février 2015
Statut
Membre
Dernière intervention
15 février 2019
25 juin 2015 à 12:06
25 juin 2015 à 12:06
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???
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 754
>
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
25 juin 2015 à 12:51
25 juin 2015 à 12:51
Combien de lignes à traiter???
Combien de colonnes à copier/coller?
Nom de la dernière colonne remplie?
Combien de colonnes à copier/coller?
Nom de la dernière colonne remplie?
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 754
>
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
25 juin 2015 à 13:47
25 juin 2015 à 13:47
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