copy donnees dans colonne donnee

KTM

XLDnaute Impliqué
Salut Chers Membres du Forum

Dans mon fichier ci-joint ; la macro suivante doit copier et coller en valeur les donnees de A5:A14 dans la plage appropriée.

Sub copy()
Dim dDate As Date, rngFind As Range
dDate = Range("B2").Value
Set rngFind = Range("C4:N4").Find(What:=dDate, LookAt:=xlWhole, MatchCase:=False)
If Not rngFind Is Nothing Then
Range(Cells(5, rngFind.Column), Cells(14, rngFind.Column)).Value = Range("A5:A14").Value
End If
End Sub

Mon problème est que cela ne marche pas.
Pouvez vous corriger ma macro? Merci
 

Pièces jointes

  • Classeur1.xlsm
    21.3 KB · Affichages: 3

BOISGONTIER

XLDnaute Barbatruc
Repose en paix
Bonjour,

B2 contient 05/05/2019 et G4 contient 01/05/2019.

Find peut poser des pb avec les dates(format). Il vaut mieux rechercher avec Match.

VB:
Sub copy()
     dDate = Range("B2").Value
     temp = CDbl(DateSerial(Year(dDate), Month(dDate), 1))
     p = Application.Match(temp, Range("C4:N4"), 0)
     If Not IsError(p) Then
       [a5:A14].Value = [c5].Offset(, p - 1).Resize(10).Value
     End If
End Sub

Boisgontier
 

Pièces jointes

  • Copie de Classeur1.xlsm
    22.4 KB · Affichages: 3
Dernière édition:

KTM

XLDnaute Impliqué
Bonjour,

B2 contient 05/05/2019 et G4 contient 01/05/2019.

Find peut poser des pb avec les dates(format). Il vaut mieux rechercher avec Match.

VB:
Sub copy()
     dDate = Range("B2").Value
     temp = CDbl(DateSerial(Year(dDate), Month(dDate), 1))
     p = Application.Match(temp, Range("C4:N4"), 0)
     If Not IsError(p) Then
       [a5:A14].Value = [c5].Offset(, p - 1).Resize(10).Value
     End If
End Sub

Boisgontier
C'est super!!!
Une ptite modif
C'est plustot:
VB:
Sub copy()
     dDate = Range("B2").Value
     temp = CDbl(DateSerial(Year(dDate), Month(dDate), 1))
     p = Application.Match(temp, Range("C4:N4"), 0)
     If Not IsError(p) Then
        [c5].Offset(, p - 1).Resize(10).Value=[a5:A14].Value 
     End If
End Sub

J'aimerais savoir comment faire la declaration des variables p ; temp
Merci c'est Super!!
 

BOISGONTIER

XLDnaute Barbatruc
Repose en paix
Bonjour,

VB:
Sub copy()
     Dim Ddate As Date, Temp As Long, p As Integer
     Ddate = Range("B2").Value
     Temp = CLng(DateSerial(Year(Ddate), Month(Ddate), 1))
     p = Application.Match(Temp, Range("C4:N4"), 0)
     If Not IsError(p) Then
       [c5].Offset(, p - 1).Resize(10).Value = [a5:A14].Value
     End If
End Sub

Boisgontier
 
Dernière édition:

Discussions similaires

Réponses
28
Affichages
969
  • Résolu(e)
Microsoft 365 Erreur VBA
Réponses
2
Affichages
188

Statistiques des forums

Discussions
312 084
Messages
2 085 194
Membres
102 814
dernier inscrit
JLGalley