XL 2013 Copier coller format texte

Pluce1

XLDnaute Nouveau
Bonjour,

J'ai un petit soucis qui est surement facile à résoudre mais bon ...

Je dois faire une macro copier coller mais au format texte, voilà la macro:

Dim lig As Long, col As Long
Dim dernièrelignetest As Long
Dim dernièreligneSug As Long

'dernièrecolonnetest = n° de la colonne la plus à droite dans la feuille Compil BP!
dernièrelignetest = Workbooks("Compil BP.xlsx").Worksheets("Feuil1").Cells(2, 1).CurrentRegion.Rows.Count

'dernièrecolonnetest = n° de la colonne la plus à droite dans la feuille [Suggestion new BP]Feuil1!
dernièreligneSug = Workbooks("Suggestion new BP.xlsm").Worksheets("feuil1").Cells(1, 1).CurrentRegion.Rows.Count

'recherche des lignes i contenant la date dans [Suggestion new BP]Feuil1!
For i = 2 To dernièreligneSug
If Workbooks("Suggestion new BP.xlsm").Worksheets("feuil1").Range("H" & i).Value = Date Then
' et affichage sur la feuille Compil BP!
Application.Workbooks("Suggestion new BP.xlsm").Worksheets("feuil1").Range("AU" & i & ":CD" & i).Value.Copy _
Workbooks("Compil BP.xlsx").Worksheets("Feuil1").Range("Y" & dernièrelignetest + 1).Text
dernièrelignetest = dernièrelignetest + 1
End If
Next i
'

J'ai une erreur "424 objet requis" sur ces deux lignes:
Application.Workbooks("Suggestion new BP.xlsm").Worksheets("feuil1").Range("AU" & i & ":CD" & i).Value.Copy _
Workbooks("Compil BP.xlsx").Worksheets("Feuil1").Range("Y" & dernièrelignetest + 1).Text

Si vous pouvez m'aider s'il vous plait, ça me faciliterait la tâche !

Merci beaucoup d'avance !

Pluce1
 

Papou-net

XLDnaute Barbatruc
Re : Copier coller format texte

Bonjour Pluce1,

Pas facile de t'aider avec un code partiel.

Si tu pouvais joindre une copie non confidentielle de ton classeur, tu obtiendrais plus sûrement une réponse adaptée.

A +

Cordialement.
 

Marc L

XLDnaute Occasionnel

Bonjour,

rien qu'en lisant l'aide VBA interne de Range.Copy,
grossière erreur de non respect du modèle objet d'Excel !

Application.Workbooks("Suggestion new BP.xlsm").Worksheets("feuil1").Range("AU" & i & ":CD" & i).Value.Copy _
Workbooks("Compil BP.xlsx").Worksheets("Feuil1").Range("Y" & dernièrelignetest + 1).Text


Donc avec des objets Range, aucun souci ! …

 

Pluce1

XLDnaute Nouveau
Re : Copier coller format texte

Bonjour,

Merci de vos réponses, ci-joint des exemples des deux fichiers, comme j'ai modifié les noms, je vous mets ci-dessous la macro avec les noms modifiés:



Sub Copier_coller_Compil_BP()
'
' Copier_coller_Compil_BP Macro
'
Dim lig As Long, col As Long
Dim dernièrelignetest As Long
Dim dernièreligneSug As Long

'dernièrecolonnetest = n° de la colonne la plus à droite dans la feuille Base Propo!
dernièrelignetest = Workbooks("test bp.xlsx").Worksheets("Feuil1").Cells(2, 1).CurrentRegion.Rows.Count

'dernièrecolonnetest = n° de la colonne la plus à droite dans la feuille [Suggestion new BP]Feuil1!
dernièreligneSug = Workbooks("Copie de Suggestion new BP.xlsm").Worksheets("feuil1").Cells(1, 1).CurrentRegion.Rows.Count

'recherche des lignes i contenant la date dans [Suggestion new BP]Feuil1!
For i = 2 To dernièreligneSug
If Workbooks("Copie de Suggestion new BP.xlsm").Worksheets("feuil1").Range("H" & i).Value = Date Then
' et affichage sur la feuille Base Propo!
Application.Workbooks("Copie de Suggestion new BP.xlsm").Worksheets("feuil1").Range("AU" & i & ":CD" & i).Copy _
Workbooks("test bp.xlsx").Worksheets("Feuil1").Range("Y" & dernièrelignetest + 1)
dernièrelignetest = dernièrelignetest + 1
End If
Next i
'
End Sub



J'ai tenté les modifications avec Value et Text mais la même erreur réapparait aux même lignes.

Cordialement,

Pluce1
 

Pièces jointes

  • Copie de Suggestion new BP.xlsm
    240.3 KB · Affichages: 41
  • test bp.xlsx
    13.6 KB · Affichages: 48
  • test bp.xlsx
    13.6 KB · Affichages: 32

Papou-net

XLDnaute Barbatruc
Re : Copier coller format texte

Bonjour Pluce1, Marc L, le Forum,

Ci-joint en PJ le fichier source modifié.

Listing de la macro corrigée:

Code:
Sub Copier_coller_Compil_BP()
'
' Copier_coller_Compil_BP Macro
'
Dim lig As Long, col As Long
Dim dernièrelignetest As Long
Dim dernièreligneSug As Long
Dim WBs As Object, WBc As Object 'WBs--->fichier source, WBc--->fichier cibbe

Set WBc = Workbooks("test bp.xlsx")
Set WBs = Workbooks("Copie de Suggestion new BP.xlsm")
'dernièrecolonnetest = n° de la colonne la plus à droite dans la feuille Base Propo!
dernièrelignetest = WBc.Worksheets("Feuil1").Cells(Rows.Count, 1).End(xlUp).Row

'dernièrecolonnetest = n° de la colonne la plus à droite dans la feuille [Suggestion new BP]Feuil1!
dernièreligneSug = WBs.Worksheets("feuil1").Cells(Rows.Count, 1).End(xlUp).Row

'recherche des lignes i contenant la date dans [Suggestion new BP]Feuil1!
For i = 2 To dernièreligneSug
  If WBs.Worksheets("feuil1").Range("H" & i).Value = Date Then
    ' et affichage sur la feuille Base Propo!
    WBs.Worksheets("feuil1").Range("AU" & i & ":CD" & i).Copy WBc.Worksheets("Feuil1").Range("Y" & dernièrelignetest + 1)
    dernièrelignetest = dernièrelignetest + 1
  End If
Next i
End Sub
A +

Cordialement.

PS: le bouton 1 fait appel à la macro modifiée dans Module2
 

Pièces jointes

  • Copie 01 de Suggestion new BP.xlsm
    251.7 KB · Affichages: 37

Papou-net

XLDnaute Barbatruc
Re : Copier coller format texte

RE:

Exact, j'ai zappé la contrainte initialle.

Essaie comme ceci:

Code:
Sub Copier_coller_Compil_BP()
'
' Copier_coller_Compil_BP Macro
'
Dim lig As Long, col As Long
Dim dernièrelignetest As Long
Dim dernièreligneSug As Long
Dim WBs As Object, WBc As Object 'WBs--->fichier source, WBc--->fichier cibbe

Set WBc = Workbooks("test bp.xlsx")
Set WBs = Workbooks("Copie de Suggestion new BP.xlsm")
'dernièrecolonnetest = n° de la colonne la plus à droite dans la feuille Base Propo!
dernièrelignetest = WBc.Worksheets("Feuil1").Cells(Rows.Count, 1).End(xlUp).Row

'dernièrecolonnetest = n° de la colonne la plus à droite dans la feuille [Suggestion new BP]Feuil1!
dernièreligneSug = WBs.Worksheets("feuil1").Cells(Rows.Count, 1).End(xlUp).Row

'recherche des lignes i contenant la date dans [Suggestion new BP]Feuil1!
For i = 2 To dernièreligneSug
  If WBs.Worksheets("feuil1").Range("H" & i).Value = Date Then
    ' et affichage sur la feuille Base Propo!
    WBs.Worksheets("feuil1").Range("AU" & i & ":CD" & i).Copy WBc.Worksheets("Feuil1").Range("Y" & dernièrelignetest + 1)
    WBc.Worksheets("Feuil1").Range("Y" & dernièrelignetest + 1 & ":BH" & dernièrelignetest + 1) = WBc.Worksheets("Feuil1").Range("Y" & dernièrelignetest + 1 & ":BH" & dernièrelignetest + 1).Value
    dernièrelignetest = dernièrelignetest + 1
  End If
Next i
End Sub
A +

Cordialement.
 

Pluce1

XLDnaute Nouveau
Bonjour,

Je reviens après plusieurs mois, j'ai de nouveaux des problèmes sur les macros.

Voilà les deux macros:

Sub Copier_coller()
'
' Copier_coller Macro
'
Dim lig As Long, col As Long
Dim dernièrelignetest As Long
Dim dernièreligneSug As Long

'dernièrecolonnetest = n° de la colonne la plus à droite dans la feuille Base Propo!
dernièrelignetest = Workbooks("Base propo unique v2 2016.xlsx").Worksheets("Base Propo").Cells(2, 1).CurrentRegion.Rows.Count

'dernièrecolonnetest = n° de la colonne la plus à droite dans la feuille [Suggestion new BP]Feuil1!
dernièreligneSug = Workbooks("Copie de Suggestion new BP.xlsm").Worksheets("feuil1").Cells(3, 1).CurrentRegion.Rows.Count

'recherche des lignes i contenant la date dans [Suggestion new BP]Feuil1!
For i = 3 To dernièreligneSug
If Workbooks("Copie de Suggestion new BP.xlsm").Worksheets("feuil1").Range("H" & i).Value = Date Then
' et affichage sur la feuille Base Propo!
Application.Workbooks("Copie de Suggestion new BP.xlsm").Worksheets("feuil1").Range("A" & i & ":V" & i).Copy _
Workbooks("Base propo unique v2 2016.xlsx").Worksheets("Base Propo").Range("A" & dernièrelignetest + 1)
Workbooks("Base propo unique v2 2016.xlsx").Worksheets("Base Propo").Cells(dernièrelignetest + 1, 18) = WorksheetFunction.Sum(Application.Workbooks("Copie de Suggestion new BP.xlsm").Worksheets("feuil1").Range("R" & i & ":X" & i))
Workbooks("Base propo unique v2 2016.xlsx").Worksheets("Base Propo").Cells(dernièrelignetest + 1, 19) = WorksheetFunction.Sum(Application.Workbooks("Copie de Suggestion new BP.xlsm").Worksheets("feuil1").Range("Y" & i & ":AI" & i))
Workbooks("Base propo unique v2 2016.xlsx").Worksheets("Base Propo").Cells(dernièrelignetest + 1, 20) = WorksheetFunction.Sum(Application.Workbooks("Copie de Suggestion new BP.xlsm").Worksheets("feuil1").Range("AJ" & i & ":AK" & i))
Workbooks("Base propo unique v2 2016.xlsx").Worksheets("Base Propo").Cells(dernièrelignetest + 1, 21) = WorksheetFunction.Sum(Application.Workbooks("Copie de Suggestion new BP.xlsm").Worksheets("feuil1").Range("AL" & i))
Workbooks("Base propo unique v2 2016.xlsx").Worksheets("Base Propo").Cells(dernièrelignetest + 1, 22) = WorksheetFunction.Sum(Application.Workbooks("Copie de Suggestion new BP.xlsm").Worksheets("feuil1").Range("AM" & i & ":AP" & i))
Workbooks("Base propo unique v2 2016.xlsx").Worksheets("Base Propo").Cells(dernièrelignetest + 1, 23) = WorksheetFunction.Sum(Application.Workbooks("Copie de Suggestion new BP.xlsm").Worksheets("feuil1").Range("AQ" & i & ":AR" & i))
Workbooks("Base propo unique v2 2016.xlsx").Worksheets("Base Propo").Cells(dernièrelignetest + 1, 24) = WorksheetFunction.Sum(Application.Workbooks("Copie de Suggestion new BP.xlsm").Worksheets("feuil1").Range("AS" & i & ":AT" & i))
dernièrelignetest = dernièrelignetest + 1
End If
Next i

End Sub

Sub Copier_coller2()

Dim lig As Long, col As Long
Dim dernièrelignetest As Long
Dim dernièreligneSug As Long

'dernièrecolonnetest = n° de la colonne la plus à droite dans la feuille Base Propo!
dernièrelignetest = Workbooks("Base propo unique v2 2016.xlsx").Worksheets("Base Propo").Cells(2, 1).CurrentRegion.Rows.Count

'dernièrecolonnetest = n° de la colonne la plus à droite dans la feuille [Suggestion new BP]Feuil1!
dernièreligneSug = Workbooks("Copie de Suggestion new BP.xlsm").Worksheets("feuil1").Cells(1, 1).CurrentRegion.Rows.Count

'recherche des lignes i contenant la date dans [Suggestion new BP]Feuil1!
For i = 2 To dernièreligneSug
If Workbooks("Copie de Suggestion new BP.xlsm").Worksheets("feuil1").Range("H" & i).Value = Date Then
' et affichage sur la feuille Base Propo!
Application.Workbooks("Copie de Suggestion new BP.xlsm").Worksheets("feuil1").Range("AU" & i & ":CD" & i).Copy _
Workbooks("Base propo unique v2 2016.xlsx").Worksheets("Base Propo").Range("Y" & dernièrelignetest + 1)
dernièrelignetest = dernièrelignetest + 1
End If
Next i
End Sub



Les problèmes sont que:
- depuis qq jours une des deux macros se colle bien à la première ligne vide mais la deuxième ne va pas se coller sur ces mêm lognes mais à la premère ligne vide en dessous. La macro n'a pas été modifié donc je ne vois pas pourquoi ça se met à buguer.
- depuis le début les formules se copient mal aux colonnes BC, BD, BG et BH, alors que dans les autres colonnes les formules se copient très bien.
Les formules qui se copient mal sont:
- NBCAR(BC11675) qui se colle comme ca: NBCAR(#REF!)
- REPT(CAR(48);6-BC11675) &B11675 qui se colle comme ca: REPT(CAR(48);6-BC11675) &#REF!
- CONCATENER(BF11675;"\";J11675) qui se colle comme ca: CONCATENER(BF11675;"\";#REF!)
- CONCATENER(BE11675;"\";J11675) qui se colle comme ca: CONCATENER(BE11675;"\";#REF!)

Les fichiers que j'avais envoyé au début de la conversation sont l'exact reflet des fichiers utilisés aujourd'hui. Quand j'utilise les macros sur un autre fichier le seul problem qui se pose est celui es colonnes qui copient mal.
Les fichiers d'aujourd'hui ont plusieurs dizaines de milliers de lignes.

Est-ce que quelqu'un aurait une idée de solution s'il vous plait? Je ne vois pas d'où vient l'erreur et nous sommes deux, un collègue et moi, à avoir chercher d'où venait le problème.

Merci par avance de votre aide !!
 

Statistiques des forums

Discussions
312 239
Messages
2 086 497
Membres
103 236
dernier inscrit
Menni