VBA copier coller sur un autre classeur
Bonjour ,
Je souhaite copier une ligne ( voir fichier , la couleur jaune correspond à la ligne )et coller sur mon deuxième classeur ( FI) selon la date qui correspond ( voir fichier , la couleur verte correspond à la date ou coller la ligne ) en VBA.
Si quelqu'un peut m'aider .
Cordialement ,
Bonjour
Un essai à tester. Te convient-il ?
Bye !
bonjour
comme ceci ?
remarque tes 2 fichiers doivent se nommer
"confirm teste.xlsm" et "fi.xlsx"
et doivent être ouvert
A plus sur le forum
Bonjour ,
merci beaucoup Gmb et papi G , mais il est impossible d’ouvrir le fichier avec le code Vba j’ai un message d’erreur « car il n’existe aucune vue de donner XSLT» disponible donc je ne vois pas le code.
Papi g , j’au vue votre remarque que mes deux fichiers doivent être ouverts , avec le code Vba n’est il pas possible d’ouvrir automatiquement le classeur ?
Cordialement ,
Re
oui comme ceci
attention adapter le chemin
Set cbut = GetWorkBook("E:\gerard\travail excel\fi.xlsx") ' il faut adapter le cheminA plus sur le forum
Merci beaucoup , mais à chaque fois que j'essaye de voir le fichier que vous me joigniez , la macro du fichier se supprime car erreur , pouvez vous me donner le code par texte stp .
Je vous remercie par avance
Cordialement ,
voili voila
Option Explicit
Sub recopie()
'déclare classeurs Source et but
Dim csource As Workbook, cbut As Workbook
'déclare feuilles Source et but
Dim fsource As Worksheet, fbut As Worksheet
'déclare derniere ligne Source et but
Dim derligsource As Long, derligbut As Long
'déclare variables de boucle
Dim i As Integer, j As Long
' initialisation
Set csource = Workbooks("confirm teste.xlsm")
Set cbut = GetWorkBook("E:\gerard\travail excel\fi.xlsx") ' il faut adapter le chemin
Set fsource = csource.Worksheets("confirm")
Set fbut = cbut.Worksheets("Feuil1")
derligbut = fbut.Cells(Application.Rows.Count, "B").End(xlUp).Row
For i = 3 To derligbut
If fbut.Cells(i, 2) = fsource.Cells(4, 11) Then
For j = 12 To 17
fbut.Cells(i, j - 9) = fsource.Cells(4, j)
Next j
i = derligbut
End If
Next i
End Sub
Function GetWorkBook(ByVal sFullName As String, Optional ReadOnly As Boolean) As Workbook
Dim sFile As String: sFile = Dir(sFullName)
On Error Resume Next
Set GetWorkBook = Workbooks(sFile)
If GetWorkBook Is Nothing Then Set GetWorkBook = Workbooks.Open(sFullName, ReadOnly:=ReadOnly)
On Error GoTo 0
End FunctionA plus sur le forum
Voilà pour moi.
Bye !
Option Explicit
Dim w As Workbook, f As Worksheet, fa As Worksheet, cell As Range
Dim dte As Date, ln&, j&, chemin$
Sub Reporter()
Set fa = ActiveSheet
dte = fa.Range("K4")
On Error Resume Next
Set w = Workbooks("fi.xlsx")
If Err.Number <> 0 Then
chemin = ThisWorkbook.Path & "\"
Workbooks.Open Filename:=chemin & "fi.xlsx"
If ThisWorkbook.Name = ActiveWorkbook.Name Then
MsgBox "Le fichier ''fi.xlsx'' n'a pas été trouvé dans le " & _
"dossier du présent fichier.", 16
Exit Sub
Else
Set w = ActiveWorkbook
End If
End If
Set f = w.Sheets("Feuil1")
Set cell = f.Range("B:B").Find(dte, lookat:=xlWhole)
ln = cell.Row
If Not cell Is Nothing Then
For j = 3 To 8
f.Cells(ln, j) = fa.Cells(4, j + 9)
Next j
End If
w.Close True
End SubMerci je vous remercie beaucoup de votre aide .
GMB votre formule permet d'ouvrir aussi le fichier automatiquement aussi ?
Cordialement
Re gmb ,
J’ai essayer votre code mai cela ne fonctionne pas Cela me dit instruction incorrect dans une procédure, je vous joint mon code en Vba en photo par lien , car c’est un ordinateur de travaille difficile de joindre le classeur
Je vous remercie par avance .
Cordialement ,
bonsoir
pas simple de faire du débogage à partir de photo
un copier coller dans un fichier texte serait plus exploitable
ceci dit tu semble avoir au milieu du code de ta macro une instruction Option Explicit qui n'a rien a faire ici
Option Explicit se met en tout début de module avant tout code pour forcer la déclaration des variables
A plus sur le forum
Bonjour voici le codes vba "dont mon chemin pour ouvrir le classeur est ( ce pc , System (c:) , utilisateur , moi , bureau )
sub visé
Dim trigramme as String , Dim as Long , derlig as Long
with sheets("confirm client")
dl = . Range("b" & Rows.count).End(xLUP).Row
for i = 3 to dl
If range ("g" & I).value ="reçus" then
sélect case ( range"h" & i).value
case "prendre", "décompte"
.Range("i" & i) = "correct"
.Range=("i" & i ) ="incorrect"
end select
else
.Range=("i" & i ) ="incorrect"
End if
Next I
Range("O4") = Date
trigramme = Inputbox ( "Trigramme ","Votre trigramme")
Range ("N4").value = trigramme
Range("P4") = Time
End with
Dim w As Workbook, f As Worksheet, fa As Worksheet, cell As Range
Dim dte As Date, ln&, j&, chemin$
Set fa = ActiveSheet
dte = fa.Range("M4")
On Error Resume Next
Set w = Workbooks("fi.xlsx")
If Err.Number <> 0 Then
chemin = ThisWorkbook.Path & "C:\Utilisateur\Moi\Bureau\Vérif.xlsx
Workbooks.Open Filename:=chemin & "Vérif.xlsx"
If ThisWorkbook.Name = ActiveWorkbook.Name Then
MsgBox "Le fichier ''fi.xlsx'' n'a pas été trouvé dans le " & _
"dossier du présent fichier.", 16
Exit Sub
Else
Set w = ActiveWorkbook
End If
End If
Set f = w.Sheets("Feuil1")
Set cell = f.Range("B:B").Find(dte, lookat:=xlWhole)
ln = cell.Row
If Not cell Is Nothing Then
For j = 3 To 8
f.Cells(ln, j) = fa.Cells(4, j + 9)
Next j
End If
w.Close True
End sub
Cordialement , merci pour votre aide
bonjour
quand tu dis
J’ai essayer votre code mai cela ne fonctionne pas
en fait tu as mis le code VBA à la sauce VBCAFFOUILLAGE
ce n'est pas étonnant que
Cela me dit instruction incorrect dans une procédure
les erreurs sont nombreuses quelques pistes sans être exhaustif
Une ligne complète en couleurs si ce n’est pas une ligne de rem (commençant par ‘) est une ligne qui contient une erreur. Dim as Long est une erreur pour vba
Dim trigramme as String , Dim as Long , derlig as Long
Syntaxe correcte :Dim trigramme as String, derlig as Long
ou :Dim trigramme as String,toto as long, derlig as Long
Tu déclares des variables que tu n’utilises pas (derlig) mais celle que tu utilises(dl) tu ne les déclare pas ? (bon ça ok c'est pas bloquant)
Il n’y a pas d’accent à select
sélect case range("h" & i).value
Syntaxe correcte : Select Case Range("h" & i).Value
Si le fichier ou est la macro est C:\Utilisateur\Moi\Bureau
Le résultat de
chemin = ThisWorkbook.Path & "C:\Utilisateur\Moi\Bureau\Vérif.xlsx"
est C:\Utilisateur\Moi\BureauC:\Utilisateur\Moi\Bureau\Vérif.xlsx
Là ça ne veut rien dire
.Range=("i" & i ) ="incorrect"
Syntaxe correcte : .Range("i" & i ) ="incorrect"
corrige déjà ça et utilise un peu l'outil de débogage parce que sans tes datas il n'est guere possible de faire mieux
A plus sur le forum
Bonjour papiG ,
Désolé de revenir sur le sujet , la formule de GMB fonctionne mais n’arrive pas à trouver le fichier .
Pour tant je met bien le chemin où est classer le fichier .
Cordialement je vous remercie d’avance
Re Luc
pas de soucis on va y arriver mais
fait moi parvenir (même copie au format texte) la dernière version de ta macro corrigée
qu'on puisse se baser sur du concret
A plus sur le forum
Bonjour ,
Je te joins les deux tableaux Excel similaire à ceux du travaille avec le même code VBA .
Bizarrement le code VBA sur un ordi apple ne fonctionne pas comme celui de mon travaille .
Les codes VBA que j'ai mis sur le Excel joint fonctionne très bien mis à part pour ouvrir le classeur .
Cordialement je te remercie d'avance de ton aide .
Bonsoir
au vu de ton code il semble que tu ai certains problèmes de police de caractères sur certains de tes postes qui pourraient peut être expliquer tes problèmes
pour palier à ces problèmes ma méthode est simple aucun autre caractère autre que des chiffres ou les 26 lettres classiques de l'alphabet sans aucun accent dans les noms de macro, de feuille, de fichier, de variable.....
car tu as comme dans ta macro ceci qui doit engendrer tes erreurs
Sub visŽ()Workbooks.Open FileName:=chemin & "VŽrif.xlsx"enlève les accents tu t'en portera mieux
sinon deux autres erreurs :
ne pas mettre d'espace entre ) et .
Range("N4") .Value= trigrammeSi tu veux mettre la date du jour en O4 met bien un o et pas un zero
Range("04") = DateA plus sur le forum