Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Chercher dates correspondantes

ABDELHAK

XLDnaute Occasionnel
Bonjour le forum,

Me revoilà avec une nouvelle demande, j’ai bien essayé de réaliser cette macro mais hélas les boucles VBA restent toujours incompréhensibles pour moi.
Voici ma requête, j’ai un fichier où:

en colonne A (A5:A7000) = des dates (7000 dates)
en colonne Q (Q5:Q4000) = des dates (4000 dates)
en colonne R (R5:R4000) = chiffres (4000 chiffres)
en colonne S (S5:S4000) = chiffres (4000 chiffres)
en colonne T (T5:T4000) = chiffres (4000 chiffres)
en colonne U (U5:U4000) = chiffres (4000 chiffres)
en colonne V (V5:V4000) = chiffres (4000 chiffres)
en colonne W (W5:W4000) = chiffres (4000 chiffres)
en colonne X (X5:X4000) = chiffres (4000 chiffres)

J’aimerais que la macro cherche les dates se trouvant dans la colonne C correspondantes aux dates se trouvant en colonne A.
Exemple :
Si la date se trouvant en Q5 = date se trouvant en A5, alors exécuter un copier / coller des colonnes Q5, R5, S5, T5, U5, V5, W5, X5 vers les colonnes A5, B5, C5, D5, E5, F5, G5, H5
Si la date se trouvant en Q6 = date se trouvant en A11, alors exécuter un copier / coller des colonnes Q6, R6, S6, T6, U6, V6, W6, X6 vers les colonnes A11, B11, C11, D11, E11, F11, G11, H11
Si la date se trouvant en Q8 = date se trouvant en A18, alors exécuter un copier / coller des colonnes Q8, R8, S8, T8, U8, V8, W8, X8 vers les colonnes A18, B18, C18, D18, E18, F18, G18, H18

TEST_TEST_1 est la pièce jointe qu’il faut consulté.

En vous remerciant à l’avance pour l’aide que vous m’avez apporté.

Amicalement vôtre

Abdelhak
 

Pièces jointes

  • TEST_TEST_1.xls
    19 KB · Affichages: 28
  • TEST_TEST_1.xls
    19 KB · Affichages: 35
  • TEST_TEST_1.xls
    19 KB · Affichages: 31
Dernière édition:

ABDELHAK

XLDnaute Occasionnel
Re : Chercher dates correspondantes

Bonjour le forum,

Me revoilà avec une nouvelle demande, j’ai bien essayé de réaliser cette macro mais hélas les boucles VBA restent toujours incompréhensibles pour moi.
Voici ma requête, j’ai un fichier où:

en colonne A (A5:A7000) = des dates (7000 dates)
en colonne Q (Q5:Q4000) = des dates (4000 dates)
en colonne R (R5:R4000) = chiffres (4000 chiffres)
en colonne S (S5:S4000) = chiffres (4000 chiffres)
en colonne T (T5:T4000) = chiffres (4000 chiffres)
en colonne U (U5:U4000) = chiffres (4000 chiffres)
en colonne V (V5:V4000) = chiffres (4000 chiffres)
en colonne W (W5:W4000) = chiffres (4000 chiffres)
en colonne X (X5:X4000) = chiffres (4000 chiffres)

J’aimerais que la macro cherche les dates se trouvant dans la colonne C correspondantes aux dates se trouvant en colonne A.
Exemple :
Si la date se trouvant en Q5 = date se trouvant en A5, alors exécuter un copier / coller des colonnes Q5, R5, S5, T5, U5, V5, W5, X5 vers les colonnes A5, B5, C5, D5, E5, F5, G5, H5
Si la date se trouvant en Q6 = date se trouvant en A11, alors exécuter un copier / coller des colonnes Q6, R6, S6, T6, U6, V6, W6, X6 vers les colonnes A11, B11, C11, D11, E11, F11, G11, H11
Si la date se trouvant en Q8 = date se trouvant en A18, alors exécuter un copier / coller des colonnes Q8, R8, S8, T8, U8, V8, W8, X8 vers les colonnes A18, B18, C18, D18, E18, F18, G18, H18

TEST_TEST_1 est la pièce jointe qu’il faut consulté.

En vous remerciant à l’avance pour l’aide que vous m’avez apporté.

Amicalement vôtre

Abdelhak
 

Pièces jointes

  • TEST_TEST_1.xls
    19 KB · Affichages: 33
  • TEST_TEST_1.xls
    19 KB · Affichages: 32
  • TEST_TEST_1.xls
    19 KB · Affichages: 32

ABDELHAK

XLDnaute Occasionnel
Re : COPIER / COLLER UNE LIGNE DE15 COLONNE VERS 1 COLONNE

Bonjour le forum,

Me revoilà avec une nouvelle demande, j’ai bien essayé de réaliser cette macro mais hélas les boucles VBA restent toujours incompréhensibles pour moi.
Voici ma requête, j’ai un fichier où:

en colonne A (A5:A7000) = des dates (7000 dates)
en colonne Q (Q5:Q4000) = des dates (4000 dates)
en colonne R (R5:R4000) = chiffres (4000 chiffres)
en colonne S (S5:S4000) = chiffres (4000 chiffres)
en colonne T (T5:T4000) = chiffres (4000 chiffres)
en colonne U (U5:U4000) = chiffres (4000 chiffres)
en colonne V (V5:V4000) = chiffres (4000 chiffres)
en colonne W (W5:W4000) = chiffres (4000 chiffres)
en colonne X (X5:X4000) = chiffres (4000 chiffres)

J’aimerais que la macro cherche les dates se trouvant dans la colonne C correspondantes aux dates se trouvant en colonne A.
Exemple :
Si la date se trouvant en Q5 = date se trouvant en A5, alors exécuter un copier / coller des colonnes Q5, R5, S5, T5, U5, V5, W5, X5 vers les colonnes A5, B5, C5, D5, E5, F5, G5, H5
Si la date se trouvant en Q6 = date se trouvant en A11, alors exécuter un copier / coller des colonnes Q6, R6, S6, T6, U6, V6, W6, X6 vers les colonnes A11, B11, C11, D11, E11, F11, G11, H11
Si la date se trouvant en Q8 = date se trouvant en A18, alors exécuter un copier / coller des colonnes Q8, R8, S8, T8, U8, V8, W8, X8 vers les colonnes A18, B18, C18, D18, E18, F18, G18, H18

TEST_TEST_1 est la pièce jointe qu’il faut consulté.

En vous remerciant à l’avance pour l’aide que vous m’avez apporté.

Amicalement vôtre

Abdelhak
 

job75

XLDnaute Barbatruc
Re : Chercher dates correspondantes

Bonjour ABDELHAK,

Cela ne sert à rien de poser 36 fois la même question.

Si vous n'avez pas de réponse c'est parce que votre exemple est incohérent avec la question posée :

- en colonne Q il n'y a pas de dates

- en lignes 11 et 18 les dates ne correspondent pas

- on copie quoi vers quoi exactement ?

- faut-il copier les couleurs et lesquelles ?

Je vous conseille d'utiliser 2 feuilles : la 1ère l'état initial, la 2ème l'état final.

A+
 

ABDELHAK

XLDnaute Occasionnel
Re : Chercher dates correspondantes

Bonjour job75,

Je suis très heureux que vous ayez répondu à ma requête. Et en effet dans la pièce jointe rien ne correspondait. 1000 excuses.
Ceci dit je vous envoie une autre pièce jointe ( TEST_TEST_2). Les couleurs utilisées sont facultatives. Elles sont là juste pour rendre « + claire « les explications.

Merci

A+

ABDELHAK
 

Pièces jointes

  • TEST_TEST_2.xls
    21.5 KB · Affichages: 36

job75

XLDnaute Barbatruc
Re : Chercher dates correspondantes

Re,

Ci-joint une tentative de reconstruction du fichier à partir des indications (?) du post #1.

La macro :

Code:
Sub Copier()
Dim ncol%, S As Range, D As Range, ts, h&, td, i&, j&
ncol = 8 'nombre de colonnes du tableau source, à adapter
Set S = Range("Q5", Range("Q" & Rows.Count).End(xlUp)).Resize(, ncol)
Set D = Range("A5", Range("A" & Rows.Count).End(xlUp))
'---préparation---
Application.ScreenUpdating = False
Range("B5:B" & Rows.Count).Resize(, ncol - 1).Clear 'RAZ
If D.Row < 5 Then Exit Sub
D.Resize(, ncol).Borders.Weight = xlThin 'bordures
If S.Row < 5 Then Exit Sub
ts = S 'matrice, plus rapide
h = UBound(ts)
td = D.Resize(D.Count + 1) 'au moins 2 éléments
'---copier-coller---
For i = 1 To UBound(td) - 1
  For j = 1 To h
    If td(i, 1) = ts(j, 1) Then S(j, 1).Resize(, ncol).Copy D(i): Exit For
  Next
Next
End Sub
A+
 

Pièces jointes

  • ABDELHAK(1).xls
    44 KB · Affichages: 35

job75

XLDnaute Barbatruc
Re : Chercher dates correspondantes

Re,

S'il n'y a pas besoin de copier les couleurs, il suffit de transférer les valeurs, c'est beaucoup plus rapide :

Code:
Sub Copier()
Dim ncol%, S As Range, D As Range, ts, h&, td, i&, x, j&, k%
ncol = 8 'nombre de colonnes du tableau source, à adapter
Set S = Range("Q5", Range("Q" & Rows.Count).End(xlUp)).Resize(, ncol)
Set D = Range("A5", Range("A" & Rows.Count).End(xlUp)).Resize(, ncol)
'---préparation---
Application.ScreenUpdating = False
With Range("B5:B" & Rows.Count).Resize(, ncol - 1) 'RAZ
  .ClearContents
  .Borders.LineStyle = xlNone
End With
If D.Row < 5 Then Exit Sub
D.Borders.Weight = xlThin 'bordures
If S.Row < 5 Then Exit Sub
ts = S 'matrice, plus rapide
h = UBound(ts)
td = D 'matrice, plus rapide
'---transfert des valeurs---
For i = 1 To UBound(td)
  x = td(i, 1)
  For j = 1 To h
    If x = ts(j, 1) Then
      For k = 2 To ncol
        td(i, k) = ts(j, k)
      Next
      Exit For
    End If
  Next
Next
'---restitution---
D = td
End Sub
Edit : ajouté la variable x, plus rapide.

Mettre les colonnes C:H au format nombre adéquat (0,00).

Fichier (2).

A+
 

Pièces jointes

  • ABDELHAK(2).xls
    45 KB · Affichages: 26
Dernière édition:

ABDELHAK

XLDnaute Occasionnel
Re : Chercher dates correspondantes

Bonjour job75,

Merci et encore merci les 2 macro fonctionnent parfaitement .
Je voudrais néanmoins vous faire une réflexion. La voici, j’ai essayé de réaliser cette macro depuis +ieurs jours en m’inspirant de la toute 1ière macro que vous m’avez envoyé sans succès. Il me semblait pourtant que les 2 projets se ressemblaient mais je me suis royalement trompé.
Comment faire pour enfin réaliser 1 macro simple avec 1 boucle ?

Amicalement vôtre.

ABDELHAK
 

job75

XLDnaute Barbatruc
Re : Chercher dates correspondantes

Re,

Comment faire pour enfin réaliser 1 macro simple avec 1 boucle ?

1 boucle non.

Mais au lieu de 3 boucles on peut faire avec 2 boucles, en mémorisant les n° de lignes dans un Dictionary :

Code:
Sub Copier()
Dim ncol%, S As Range, D As Range, ts, td, dico As Object, i&, j&, k%
ncol = 8 'nombre de colonnes du tableau source, à adapter
Set S = Range("Q5", Range("Q" & Rows.Count).End(xlUp)).Resize(, ncol)
Set D = Range("A5", Range("A" & Rows.Count).End(xlUp)).Resize(, ncol)
'---préparation---
Application.ScreenUpdating = False
With Range("B5:B" & Rows.Count).Resize(, ncol - 1) 'RAZ
  .ClearContents
  .Borders.LineStyle = xlNone
End With
If D.Row < 5 Then Exit Sub
D.Borders.Weight = xlThin 'bordures
If S.Row < 5 Then Exit Sub
ts = S 'matrice, plus rapide
td = D 'matrice, plus rapide
'---mémorisation des n° de lignes---
Set dico = CreateObject("Scripting.Dictionary")
For i = 1 To UBound(ts)
  If Not dico.exists(ts(i, 1)) Then dico(ts(i, 1)) = i
Next
'---transfert des valeurs---
For i = 1 To UBound(td)
  If dico.exists(td(i, 1)) Then
    j = dico(td(i, 1))
    For k = 2 To ncol
        td(i, k) = ts(j, k)
    Next
  End If
Next
'---restitution---
D = td
End Sub
Ce devrait être plus rapide, mais vérifiez sur le fichier réel.

Fichier (3).

A+
 

Pièces jointes

  • ABDELHAK(3).xls
    46 KB · Affichages: 32

ABDELHAK

XLDnaute Occasionnel
Re : Chercher dates correspondantes

Bonjour job75,

J'ai été agréablement surpris de voir une 3ième macro dans mes messages. Elle fonctionne à merveille et elle est en effet + rapide.
je vous en remercie.
Lorsque je vous ai dit "à quand je pourrais réaliser une macro simple avec une boucle", c'était juste un projet que j'aimerais réaliser personnellement
de bout en bout .
En tout cas 1000 mercis pour votre aide.

Amicalement vôtre

ABDELHAK
 

Discussions similaires

Réponses
16
Affichages
2 K
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…