XL 2010 Macro Copier Coller Valeur avec conditions

ACDEB

XLDnaute Nouveau
Bonjour à tous !!

Je commence tout juste à essayer de faire des macros... Donc je rame un peu ! J'ai déjà vu des sujets un peu similaires au miens mais je ne comprend pas très bien...
C'est pour ça que j'aurais besoin de votre aide.

Dans le cadre de mon alternance, j'ai créé un formulaire via KIZEO. Or, la mise en page que je voulais au final n'est pas possible avec KIZEO. C'est pourquoi j'aurais aimé faire un copier coller des valeurs dans un autre fichier afin de faire la mise en page comme j'aurais voulu.

Mais, le copier coller doit se faire en fonction des valeurs. Je m'explique : quand dans le fichier que me donne KIZEO (Essai Macro KIZEO) il est marqué "VOIE COTE ROUTE", je voudrais que les valeurs contenues dans la colonne "Wagons" se copient dans le nouveau fichier (Etat des lieux Plf) dans la colonne correspondant à "VOIE COTE ROUTE" etc...

Voici ce que j'avais essayé de faire :

Sub Essai()

Workbooks.Open Filename:= _
"P:\INFRALOG\URA\COMMUN_UNITE\28_Parc_SES\Stagiaires\Anne-Charlotte\KIZEO\Essai Macro\Essai Macro KIZEO.xlsx"

' ma_variable = "VOIE COTE ROUTE"

' Do Until ma_variable = "VOIE MILIEU"

If Columns("A:A") = "VOIE COTE ROUTE" Then

Workbooks("Essai Macro KIZEO.xlsx").Sheets("PLF").Range("B6").Copy Destination:=Workbooks("Etat des lieux Pft.xlsm").Sheets("PLF").Range("B3")
' Loop

End Sub

Sauf que je n'ai pas réussi à trouver une macro correspondant, ou alors je ne les comprend pas...

Pouvez vous m'aider à comprendre afin que je puisse faire ma macro ou m'aiguiller ?

Merci beaucoup,

ACDEB
 

Johan

XLDnaute Occasionnel
Coucou !

Une tentative rapide, remplaçe tout ton code par ça :

Code:
Sub Essai()
  
Dim wb As Workbook
Dim ws As Worksheet
Dim derLigne As Integer

Set targetWorkbook = Application.ActiveWorkbook

Application.DisplayAlerts = False
Set wb = Workbooks.Open("P:\INFRALOG\URA\COMMUN_UNITE\28_Parc_SES\Stagiaires\Anne-Charlotte\KIZEO\Essai Macro\Essai Macro KIZEO.xlsx")
Application.DisplayAlerts = True
Set ws = wb.Sheets("PLF")

derLigne = Feuil1.Range("B1048576").End(xlUp).Row + 1

totalLignes = ws.UsedRange.Rows.Count
  
    For i = 1 To totalLignes
        valeurCherchee = Cells(i, 1).Value
        If valeurCherchee = "VOIE COTE ROUTE " Then
                targetWorkbook.Sheets("PLF").Range("B2" & derLigne) = ws.Cells(i, 2).Value
               derLigne = derLigne + 1
        End If
   Next


wb.Close (False)

End Sub
 

Johan

XLDnaute Occasionnel
Quel est le problème ? Un msg d'erreur ou aucun import de données ?

Jviens de voir que ton fichier contenant la macro peut peut-être poser problème, t'as encore des formules dans tes cellules de la colonne B, du coup le code les considèrera comme déja remplies. De plus tu commences une nouvelle "sous-colonne" en B24, comment tu feras si t'as plus de 20 lignes à importer au dessus ??
Efface de d'effacer tout ton contenu de colonne à partir de ta cellule B3 et reteste

J'attends ton retour :)
 
Dernière édition:

ACDEB

XLDnaute Nouveau
Il n'y a aucun import de données
Oui je viens de voir aussi qu'il y a des formules dans la colonne B... Je les ai supprimé, mais toujours rien ne se passe :(
Et non il n'y aura pas plus de lignes, avant la "sous-colonne" en B24 donc pas de soucis :)

Je t'ai joint le nouveau fichier, sans les formules :)

Merci pour ton aide en tout cas, je commençais à désespérer, j'ai regardé un nombre incroyable de tutos et de formules, mais rien y fait, je suis toujours novice haha

Si tu as une autre solution pour moi je suis preneuse !

Cordialement,
 

Pièces jointes

  • Etat des lieux Pft.xlsm
    33.6 KB · Affichages: 24

ACDEB

XLDnaute Nouveau
Niquel ça marche je te remercie infiniment !!!
Si je comprends bien, par la suite si je veux copier les valeurs de la colonne "VOIE MILIEU" j'ai juste à remplacer dans la macro "VOIE MILIEU" dans la condition If et changer la cellule de destination ?
 

ACDEB

XLDnaute Nouveau
Bonjour,

j'ai encore un petit soucis...

Cette macro marche parfaitement avec la première colonne... Mais le problème c'est que j'ai plusieurs "tableaux" dans un tableau...
Comment faire pour retranscrire ce que fais cette macro, mais dans les autres colonnes ?

Merci pour votre aide...

Cordialement,
 

Johan

XLDnaute Occasionnel
Re,

Ce code là copie bien les 3 colonnes B / Route, F / Milieu et J / Dot sur le fichier Etat des Lieux. Aucun souci chez moi

La macro efface les données du traitement précédent (pour éviter la duplication) et les recopie à nouveau en tenant compte des nouveaux ajouts.

J'ai volontairement virer vos sous-colonnes pour éviter que ça finisse par écrire par dessus.


Code:
Sub Essai()

  
Dim wb As Workbook
Dim ws As Worksheet
Dim derLigne As Long

Set TargetWorkbook = Application.ActiveWorkbook


TargetWorkbook.Sheets("PLF").Range("B3:M1048576").ClearContents

derLigne = TargetWorkbook.Sheets("PLF").Range("B1048576").End(xlUp).Row + 1
'TargetWorkbook.Sheets("PLF").Range("B" & derLigne).Select

Application.DisplayAlerts = False
Set wb = Workbooks.Open("P:\INFRALOG\URA\COMMUN_UNITE\28_Parc_SES\Stagiaires\Anne-Charlotte\KIZEO\Essai Macro\Essai Macro KIZEO.xlsx")

Application.DisplayAlerts = True
Set ws = wb.Sheets("PLF")

totalLignes = ws.UsedRange.Rows.Count

Dim valeurCherchee As String

  
    For i = 1 To totalLignes
        valeurCherchee = Cells(i, 1).Value
        'MsgBox valeurCherchee
        If valeurCherchee = "VOIE COTE ROUTE " Then
               j = j + 1
               TargetWorkbook.Sheets("PLF").Range("B" & derLigne - k - l) = ws.Cells(i, 2).Value
               derLigne = derLigne + 1
        End If
        If valeurCherchee = "VOIE MILIEU" Then
               k = k + 1
               TargetWorkbook.Sheets("PLF").Range("F" & derLigne - j - l) = ws.Cells(i, 2).Value
               derLigne = derLigne + 1
        End If
        If valeurCherchee = "VOIE COTE DOT" Then
               l = l + 1
               TargetWorkbook.Sheets("PLF").Range("J" & derLigne - j - k) = ws.Cells(i, 2).Value
               derLigne = derLigne + 1
        End If
   Next


wb.Close (False)

End Sub

Pouvez-vous essayer à nouveau et me dire ce qu'il se passe ? Hésitez pas à mettre des points d'arrêt

Johan
 
Dernière édition:

ACDEB

XLDnaute Nouveau
C'est bon ça marche ! En revanche j'ai besoin des sous colonnes que vous avez effacé, et quand j'essaie de faire la macro pour les sous colonnes, cela me copie les données mais tout en bas de la page... Alors que je voudrais que les données soient copiées à partir de la cellule B25...
 

Discussions similaires

Statistiques des forums

Discussions
312 104
Messages
2 085 344
Membres
102 865
dernier inscrit
FreyaSalander