erreur définin par l'application ou par l'objet

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

thyuki

XLDnaute Nouveau
Bonjour Forum,

j'ai une erreur sur le code suivant a la dernière ligne,
en faite j'essaie de dupliquer les 4 dernières colonnes non vide dans la première colonne qui suit.
je le fais avec des variables sur les colonnes car cette opération se fera de temps en temps et agrandira la taille du tableau.

mais ma dernière ligne plante et je ne sais pas pourquoi.

et si je retire les deux Worksheets("Indicateurs Opé"). , le message d'erreur change il devient :
"la méthode 'Range' de l'objet '_GLOBAL' a échoué" et je ne sais pas non plus d'où cela provient
l'erreur reste sur la même ligne

A l'aide !!!!
merci


Code:
 Sub test()
    Dim derniereColonne As Integer
    Dim premiereColonne As Integer
    Dim nouvelleColonne As Integer
    
    derniereColonne = Worksheets("Indicateurs Opé").Cells(3, Cells.Columns.Count).End(xlToLeft).Column
    premiereColonne = derniereColonne - 3
    nouvelleColonne = derniereColonne + 1
    
    Worksheets("Indicateurs Opé").Range(Cells(3, premiereColonne) & Cells(29, derniereColonne)).Copy Worksheets("Indicateurs Opé").Range(Cells(3, nouvelleColonne))
    
End Sub
 
Dernière édition:
Re : erreur définin par l'application ou par l'objet

Bonjour,

C'est la dernière ligne qui n'est pas bonne.
Code:
Sub test()
    Dim derniereColonne As Integer
    Dim premiereColonne As Integer
    Dim nouvelleColonne As Integer

    derniereColonne = Worksheets("Indicateurs Opé").Cells(3, _
        Cells.Columns.Count).End(xlToLeft).Column
    premiereColonne = derniereColonne - 3
    nouvelleColonne = derniereColonne + 1
    
    Worksheets("Indicateurs Opé").Range(Cells(3, premiereColonne), Cells(29, _
        derniereColonne)).Copy Worksheets("Indicateurs Opé").Cells(3, _
        nouvelleColonne)
End Sub
 
Re : erreur définin par l'application ou par l'objet

bonjour

comme ça peut-être

Code:
    Worksheets("Indicateurs Opé").Range(Cells(3, premiereColonne), Cells(29, derniereColonne)).Copy Worksheets("Indicateurs Opé").Cells(3, nouvelleColonne)

oupss en retard 😛
 
Re : erreur définin par l'application ou par l'objet

fausse alerte, l'erreur est toujours là,
sur la même ligne:

Worksheets("Indicateurs Opé").Range(Cells(3, premiereColonne), Cells(29, derniereColonne)).Copy _
Worksheets("Indicateurs opé").Cells(3, nouvelleColonne)

avec toujours la même erreur : erreur d'execution '1004' erreur défini par l'application ou par l'objet
 
Re : erreur définin par l'application ou par l'objet

fausse alerte, l'erreur est toujours là,
sur la même ligne:

Worksheets("Indicateurs Opé").Range(Cells(3, premiereColonne), Cells(29, derniereColonne)).Copy _
Worksheets("Indicateurs opé").Cells(3, nouvelleColonne)

avec toujours la même erreur : erreur d'execution '1004' erreur défini par l'application ou par l'objet

voir la valeur de premiereColonne 😛
si elle est < 1 alors erreur
 
Dernière édition:
Re : erreur définin par l'application ou par l'objet

Amélioration : Cela fonctionne quand je teste la fonction seule mais elle continue de mettre le message d'erreur lors de l’implantation dans le code finale,

je vais vous mettre tout mon code
Code:
 Sub charge()

    Dim fso As Object, Dossier As Object, NomDossier
    Dim NomEngagement As String, NomActivite As String, NomDispo As String
    Dim maDate As String
    Dim derniereColonne As Integer
    Dim premiereColonne As Integer
    Dim nouvelleColonne As Integer

    Set fso = CreateObject("Scripting.FileSystemObject")
    NomDossier = ChoisirDossier
    If NomDossier = "" Then Exit Sub
    Set Dossier = fso.getfolder(NomDossier)
    
    Set Files = Dossier.Files
    If Files.Count <> 0 Then
        For Each File In Files
            If Left(File.Name, 7) = "CTO_NVM" Then
                Fichier_Nvms = File.Name
            ElseIf Left(File.Name, 7) = "CTO_DBA" Then
                Fichier_Dba = File.Name
            ElseIf Left(File.Name, 7) = "CTO_EXP" Then
                Fichier_Exp = File.Name
            ElseIf Left(File.Name, 7) = "CTO_URX" Then
                Fichier_Urx = File.Name
            ElseIf Left(File.Name, 11) = "aipsi30_nvm" Then
                Aipsi_Nvm = File.Name
            ElseIf Left(File.Name, 11) = "aipsi30_dba" Then
                Aipsi_Dba = File.Name
            ElseIf Left(File.Name, 11) = "aipsi30_exp" Then
                Aipsi_Exp = File.Name
            ElseIf Left(File.Name, 11) = "aipsi30_urx" Then
                Aipsi_Urx = File.Name
            End If
        Next
    End If

    'Ouverture des fichiers a traiter
    Workbooks.Open Filename:=Dossier & "\" & Fichier_Nvms
    Workbooks.Open Filename:=Dossier & "\" & Fichier_Urx
    Workbooks.Open Filename:=Dossier & "\" & Fichier_Exp
    Workbooks.Open Filename:=Dossier & "\" & Fichier_Dba
    Workbooks.Open Filename:=Dossier & "\" & Aipsi_Nvm
    Workbooks.Open Filename:=Dossier & "\" & Aipsi_Dba
    Workbooks.Open Filename:=Dossier & "\" & Aipsi_Exp
    Workbooks.Open Filename:=Dossier & "\" & Aipsi_Urx
            
    'copie des pages nécessaires
    Application.DisplayAlerts = False
   
    Windows(Fichier_Nvms).Activate
    Sheets("Check AIPSI30").Copy After:=Workbooks("COPIL005 du 11012012 - TBA.xls").Sheets("Graphe")
    Sheets("Check AIPSI30").Name = "CTO_NVMS"
    
    Windows(Fichier_Urx).Activate
    Sheets("Check AIPSI30").Copy After:=Workbooks("COPIL005 du 11012012 - TBA.xls").Sheets("CTO_NVMS")
    Sheets("Check AIPSI30").Name = "CTO_URX"
    
    Windows(Fichier_Exp).Activate
    Sheets("Check AIPSI30").Copy After:=Workbooks("COPIL005 du 11012012 - TBA.xls").Sheets("CTO_URX")
    Sheets("Check AIPSI30").Name = "CTO_EXP"
    
    Windows(Fichier_Dba).Activate
    Sheets("Check AIPSI30").Copy After:=Workbooks("COPIL005 du 11012012 - TBA.xls").Sheets("CTO_EXP")
    Sheets("Check AIPSI30").Name = "CTO_DBA"
    
    
    Windows(Aipsi_Nvm).Activate
    Sheets(1).Copy After:=Workbooks("COPIL005 du 11012012 - TBA.xls").Sheets("CTO_DBA")
    Sheets("Sheet1").Name = "Aipsi30_Nvm"
    
    Windows(Aipsi_Dba).Activate
    Sheets(1).Copy After:=Workbooks("COPIL005 du 11012012 - TBA.xls").Sheets("Aipsi30_Nvm")
    Sheets("Sheet1").Name = "Aipsi30_Dba"
    
    Windows(Aipsi_Exp).Activate
    Sheets(1).Copy After:=Workbooks("COPIL005 du 11012012 - TBA.xls").Sheets("Aipsi30_Dba")
    Sheets("Sheet1").Name = "Aipsi30_Exp"
    
    Windows(Aipsi_Urx).Activate
    Sheets(1).Copy After:=Workbooks("COPIL005 du 11012012 - TBA.xls").Sheets("Aipsi30_Exp")
    Sheets("Sheet1").Name = "Aipsi30_Urx"
    
    Application.DisplayAlerts = True
    
    'fermeture des fichiers sources
    Windows(Fichier_Nvms).Close (False)
    Windows(Fichier_Urx).Close (False)
    Windows(Fichier_Dba).Close (False)
    Windows(Fichier_Exp).Close (False)
    
    Windows(Aipsi_Nvm).Close (False)
    Windows(Aipsi_Dba).Close (False)
    Windows(Aipsi_Exp).Close (False)
    Windows(Aipsi_Urx).Close (False)
    
    'paramétrage selon le mois en cour
    Sheets(3).Name = "Aipsi30_" & Year(Date) & Month(Date)
    Sheets(5).Name = Year(Date) & "-" & Month(Date)
    
    'Mise a Zero du tableau aispi30
    Sheets(3).Activate
    Range("L5:M19").Select
    Selection.ClearContents
    Range("P5:Q19").Select
    Selection.ClearContents
    Range("D5:E19").Select
    Selection.ClearContents
    Range("H5:I19").Select
    Selection.ClearContents
    
    'mise en page Tableur data Aipsi30
    Sheets(3).Activate
    Range("Y5:Z19,AC5:AD19,AG5:AH19,AK5:AL19").Select
    Selection.Font.ColorIndex = 0                           'remet le texte des cellules en noir
    With Selection.Interior
        .ColorIndex = 2                                     'met les cellules en blanc
        .Pattern = xlSolid
    End With
    Range("Y14:Y15,AC14:AC15,AG14:AG15,AK14:AK15").Select
    Selection.Interior.ColorIndex = 45                      'met les cellules necessaire en orange
    Range("Z14:Z15,AD14:AD15,AH14:AH15,AL14:AL15").Select
    Selection.Interior.ColorIndex = 35                      'met les cellules necessaire en vert
    Range("Z16:Z18,AD16:AD18,AH16:AH18,AL16:AL18").Select
    Selection.Interior.ColorIndex = 15                      'met les cellules necessaire en gris
    
    'Mise en page des indicateurs opé

    derniereColonne = Worksheets("Indicateurs Opé").Cells(3, Cells.Columns.Count).End(xlToLeft).Column
    premiereColonne = derniereColonne - 3
    nouvelleColonne = derniereColonne + 1
 
    Worksheets("Indicateurs Opé").Range(Cells(3, premiereColonne), Cells(29, derniereColonne)).Copy Worksheets("Indicateurs Opé").Cells(3, nouvelleColonne)
    
End Sub


Function ChoisirDossier()

    Dim objShell, objFolder, chemin, SecuriteSlash
                                            
    Set objShell = CreateObject("Shell.Application")
    Set objFolder = _
        objShell.BrowseForFolder(&H0&, "Choisisser un répertoire", &H1&)
    On Error Resume Next
    chemin = objFolder.ParentFolder.ParseName(objFolder.Title).Path & ""
    If objFolder.Title = "Bureau" Then
        chemin = "C:\Windows\Bureau"
    End If
    If objFolder.Title = "" Then
        chemin = ""
    End If

    SecuriteSlash = InStr(objFolder.Title, ":")

    If SecuriteSlash > 0 Then
        chemin = Mid(objFolder.Title, SecuriteSlash - 1, 2) & ""
    End If
    ChoisirDossier = chemin
End Function

l'erreur est toujours ligne 133 :
Worksheets("Indicateurs Opé").Range(Cells(3, premiereColonne), Cells(29, derniereColonne)).Copy Worksheets("Indicateurs Opé").Cells(3, nouvelleColonne)
 
Re : erreur définin par l'application ou par l'objet

oui c'est bien ce que je pensais

http://i48.servimg.com/u/f48/11/38/07/30/premie10.jpg

la premierecolonne =-2

remplacez cette ligne
Code:
derniereColonne = Worksheets("Indicateurs Opé").Cells(3, Cells.Columns.Count).End(xlToLeft).Column

par celle-ci

Code:
derniereColonne = Worksheets("Indicateurs Opé").Cells(1, Cells.Columns.Count).End(xlToLeft).Column
 
Dernière édition:
Re : erreur définin par l'application ou par l'objet

a effectivement c'est bien derniereColonne qui n'est pas a la bonne valeur, malheureusement, je ne vois pas comment la corrigé parce que même en corrigeant avec votre ligne, qui fonctionne sur le fichier de test, elle ne fonctionne toujours pas dans le fichier original
 
Re : erreur définin par l'application ou par l'objet

a effectivement c'est bien derniereColonne qui n'est pas a la bonne valeur, malheureusement, je ne vois pas comment la corrigé parce que même en corrigeant avec votre ligne, qui fonctionne sur le fichier de test, elle ne fonctionne toujours pas dans le fichier original
il faut que dernierecolonne soit > 2 sinon premierecolonne se trouve a 0 et là c'est l'erreur
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
5
Affichages
818
  • Question Question
Microsoft 365 Cpier/coller en VBA
Réponses
7
Affichages
698
Retour