begin process at 2010 02 10 14:02:54
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Visual Basic 6

 > 

Langages dérivés

 > 

VBA

 > 

Erreur d'execution '1004' mais sur Excel 2007


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Erreur d'execution '1004' mais sur Excel 2007

mardi 18 décembre 2007 à 10:44:20 | Erreur d'execution '1004' mais sur Excel 2007

kgadhi

Bonjour tous le monde et merci d'avance pour votre aide,
J'ai développé une macro qui permet de mettre à jour un fichier excel depuis un autre fichier.

Je travaille sous excel 2003. Aprés plusieurs tentatives, la macro marche.
Apres j'ai voulu afficher le fichier sous excel 2007 et la j'ai l'erreur suivante :
Erreur d'execution '1004' : Excel ne parvient pas à insérer les feuilles dans le classeur de destination car il contient moins de lignes et de colonnes que le classeur source. Pour déplacer ou copier les données vers le classeur de destination, vous pouvez les selectionner, puis utiliser les commandes Copier et Coller pour les insérer dans les feuilles d'un autre classeur.

Je vous mets aussi le code source
<code source>
' Récuperer le nom du rep courant
    nomRepCourant = ThisWorkbook.Path
    longueur = Len(nomRepCourant)
   
    If longueur > 0 Then
        pos = InStr(nomRepCourant, "\")
        ' MsgBox nomRepCourant & " " & pos
        If (pos <> 0) Then
            trouve = True
            While trouve
                longueur = Len(nomRepCourant)
                nomRepCourant = Right(nomRepCourant, longueur - pos)
                pos = InStr(nomRepCourant, "\")
                ' MsgBox "rep1 : " & nomRepCourant & " " & pos
                If (pos = 0) Then
                    trouve = False
                End If
            Wend
        End If
    End If
   
    ' MsgBox "Fichier: " & nomRepCourant
   
    ' Le nom du fichier
    Fichier = nomRepCourant & ".txt"
    nomFichier = nomRepCourant
   
    CheminFichier = CheminFichier & "\" & Fichier
   
    ' MsgBox "Fichier: " & CheminFichier
   
    NbEntrAjout = 0
    NbEntrSupp = 0
   
    Application.ScreenUpdating = False
   
    If Dir(CheminFichier) <> "" Then
        ' Ouvrir et lire le fichier
        Workbooks.OpenText Filename:=CheminFichier, Origin:= _
            xlMSDOS, StartRow:=1, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote _
            , ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=True, Comma:=False _
            , Space:=False, Other:=False, FieldInfo:=Array(Array(1, 1), Array(2, 1), _
            Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1), Array(7, 1), Array(8, 1), Array(9, 1), _
            Array(10, 1)), TrailingMinusNumbers:=True
        Sheets(nomFichier).Select
       
        ' MsgBox "fichier : " & nomFichier
       
Sheets(nomFichier).Move After:=Workbooks("SUIVI DES VISIT¦'ENTREPRISE.xls").Sheets(1)        L'erreur est à cette ligne     
       
        ' Compter le nombre de lignes recupérées
        Open CheminFichier For Input As #1
   
        While Not EOF(1)
            Line Input #1, Texte
            NbLignes = NbLignes + 1
        Wend
   
        Close #1
       
        Lignes = 0
       
        ' Verifier l'existance de la feuille modPortefeuille
        If FeuilleExiste(ThisWorkbook, "modPortefeuille") Then  ' La feuille existe donc on la vide
            Sheets("modPortefeuille").Select
            ActiveSheet.Shapes.SelectAll
            Selection.Delete
            ActiveSheet.Cells.Clear
        Else    ' On ajoute la feuille
            Sheets.Add
            ActiveSheet.Name = "modPortefeuille"
            Sheets("modPortefeuille").Select
            Sheets("modPortefeuille").Move Before:=Sheets(4)
        End If
       
        Range("C3:F3").Select
        With Selection
            .HorizontalAlignment = xlCenter
            .VerticalAlignment = xlBottom
            .WrapText = False
            .Orientation = 0
            .AddIndent = False
            .IndentLevel = 0
            .ShrinkToFit = False
            .ReadingOrder = xlContext
            .MergeCells = False
        End With
        Selection.Merge
        ActiveCell.FormulaR1C1 = "Les entreprises ajoutées"
       
        Range("J3:M3").Select
        With Selection
            .HorizontalAlignment = xlCenter
            .VerticalAlignment = xlBottom
            .WrapText = False
            .Orientation = 0
            .AddIndent = False
            .IndentLevel = 0
            .ShrinkToFit = False
            .ReadingOrder = xlContext
            .MergeCells = False
        End With
        Selection.Merge
        ActiveCell.FormulaR1C1 = "Les entreprises supprimées"
       
        Sheets("Suivi des visites entreprise").Select
        Range("B4:G4").Select
        Selection.Copy
        Sheets("modPortefeuille").Select
        Range("B4").Select
        ActiveSheet.Paste
       
        Range("I4").Select
        ActiveSheet.Paste
       
        Range("C3:F3").Select
        Application.CutCopyMode = False
        Selection.Borders(xlDiagonalDown).LineStyle = xlNone
        Selection.Borders(xlDiagonalUp).LineStyle = xlNone
        With Selection.Borders(xlEdgeLeft)
            .LineStyle = xlContinuous
            .Weight = xlThin
            .ColorIndex = xlAutomatic
        End With
        With Selection.Borders(xlEdgeTop)
            .LineStyle = xlContinuous
            .Weight = xlThin
            .ColorIndex = xlAutomatic
        End With
        With Selection.Borders(xlEdgeBottom)
            .LineStyle = xlContinuous
            .Weight = xlThin
            .ColorIndex = xlAutomatic
        End With
        With Selection.Borders(xlEdgeRight)
            .LineStyle = xlContinuous
            .Weight = xlThin
            .ColorIndex = xlAutomatic
        End With
        Selection.Borders(xlInsideVertical).LineStyle = xlNone
               
        Range("J3:M3").Select
        Application.CutCopyMode = False
        Selection.Borders(xlDiagonalDown).LineStyle = xlNone
        Selection.Borders(xlDiagonalUp).LineStyle = xlNone
        With Selection.Borders(xlEdgeLeft)
            .LineStyle = xlContinuous
            .Weight = xlThin
            .ColorIndex = xlAutomatic
        End With
        With Selection.Borders(xlEdgeTop)
            .LineStyle = xlContinuous
            .Weight = xlThin
            .ColorIndex = xlAutomatic
        End With
        With Selection.Borders(xlEdgeBottom)
            .LineStyle = xlContinuous
            .Weight = xlThin
            .ColorIndex = xlAutomatic
        End With
        With Selection.Borders(xlEdgeRight)
            .LineStyle = xlContinuous
            .Weight = xlThin
            .ColorIndex = xlAutomatic
        End With
        Selection.Borders(xlInsideVertical).LineStyle = xlNone
       
        Range("B5").Select
       
        Sheets(nomFichier).Select
       
        ' MsgBox "nbrelignes : " & NbLignes
       
        For i = 1 To NbLignes + 1
            DoEvents
            RefAMI = Cells(i, 1).Value
            ' MsgBox "i : " & i & " , RefAmi : " & RefAMI
            If Cells(i, 9).Value = "" Then  'Ajout de la ligne
                Sheets("Suivi des visites entreprise").Select
               
                ' Verifier que le Ref Ami n'existe pas deja dans la liste
                TrouveRef = False
                               
                For j = 1 To ActiveSheet.UsedRange.Rows.Count + 1
                    If Cells(j, 2).Value = RefAMI Then
                        TrouveRef = True
                    End If
                Next j
               
                ' Ajouter la ligne
                If TrouveRef = False Then
                    Sheets(nomFichier).Select
                    Lignes = Lignes + 1
                    Range(Cells(i, 1), Cells(i, 8)).Select
                    Selection.Copy
                    Sheets("Suivi des visites entreprise").Select
                    Range("B65536").End(xlUp).Offset(1, 0).PasteSpecial
                   
                    ' Cadrer
                    Selection.Borders(xlDiagonalDown).LineStyle = xlNone
                    Selection.Borders(xlDiagonalUp).LineStyle = xlNone
                    With Selection.Borders(xlEdgeLeft)
                        .LineStyle = xlContinuous
                        .Weight = xlThin
                        .ColorIndex = xlAutomatic
                    End With
                    With Selection.Borders(xlEdgeTop)
                        .LineStyle = xlContinuous
                        .Weight = xlThin
                        .ColorIndex = xlAutomatic
                    End With
                    With Selection.Borders(xlEdgeBottom)
                        .LineStyle = xlContinuous
                        .Weight = xlThin
                        .ColorIndex = xlAutomatic
                    End With
                    With Selection.Borders(xlEdgeRight)
                        .LineStyle = xlContinuous
                        .Weight = xlThin
                        .ColorIndex = xlAutomatic
                    End With
                    With Selection.Borders(xlInsideVertical)
                        .LineStyle = xlContinuous
                        .Weight = xlThin
                        .ColorIndex = xlAutomatic
                    End With
                End If
               
                NbEntrAjout = NbEntrAjout + 1
                Sheets(nomFichier).Select
                Range(Cells(i, 1), Cells(i, 6)).Select
                Selection.Copy
                Sheets("modPortefeuille").Select
                Range(Cells(NbEntrAjout + 4, 2), Cells(NbEntrAjout + 4, 2)).Select
                ActiveSheet.Paste
               
                ' Cadrer
                Selection.Borders(xlDiagonalDown).LineStyle = xlNone
                Selection.Borders(xlDiagonalUp).LineStyle = xlNone
                With Selection.Borders(xlEdgeLeft)
                    .LineStyle = xlContinuous
                    .Weight = xlThin
                    .ColorIndex = xlAutomatic
                End With
                With Selection.Borders(xlEdgeTop)
                    .LineStyle = xlContinuous
                    .Weight = xlThin
                    .ColorIndex = xlAutomatic
                End With
                With Selection.Borders(xlEdgeBottom)
                    .LineStyle = xlContinuous
                    .Weight = xlThin
                    .ColorIndex = xlAutomatic
                End With
                With Selection.Borders(xlEdgeRight)
                    .LineStyle = xlContinuous
                    .Weight = xlThin
                    .ColorIndex = xlAutomatic
                End With
                With Selection.Borders(xlInsideVertical)
                    .LineStyle = xlContinuous
                    .Weight = xlThin
                    .ColorIndex = xlAutomatic
                End With
               
                Sheets(nomFichier).Select
            Else    ' Suppression de la ligne
                Sheets("Suivi des visites entreprise").Select
               
                For j = 1 To ActiveSheet.UsedRange.Rows.Count
                    If Cells(j, 2).Value = RefAMI Then
                        Cells(j, 1).EntireRow.Delete
                        'Range(Trim(Str(ActiveCell.Row)) & ":" & Trim(Str(ActiveCell.Row))).Select
                        'Selection.Delete Shift:=xlUp
                    End If
                Next j
               
                NoLgnFin = ActiveSheet.UsedRange.Rows.Count
                ' MsgBox "Nb de ligne du fichier modPortefeuilleMed.txt : " & NoLgnFin
               
                NbEntrSupp = NbEntrSupp + 1
                Sheets(nomFichier).Select
                Range(Cells(i, 1), Cells(i, 6)).Select
                Selection.Copy
                Sheets("modPortefeuille").Select
                Range(Cells(NbEntrSupp + 4, 9), Cells(NbEntrSupp + 4, 9)).Select
                ActiveSheet.Paste
               
                ' Cadrer
                Selection.Borders(xlDiagonalDown).LineStyle = xlNone
                Selection.Borders(xlDiagonalUp).LineStyle = xlNone
                With Selection.Borders(xlEdgeLeft)
                    .LineStyle = xlContinuous
                    .Weight = xlThin
                    .ColorIndex = xlAutomatic
                End With
                With Selection.Borders(xlEdgeTop)
                    .LineStyle = xlContinuous
                    .Weight = xlThin
                    .ColorIndex = xlAutomatic
                End With
                With Selection.Borders(xlEdgeBottom)
                    .LineStyle = xlContinuous
                    .Weight = xlThin
                    .ColorIndex = xlAutomatic
                End With
                With Selection.Borders(xlEdgeRight)
                    .LineStyle = xlContinuous
                    .Weight = xlThin
                    .ColorIndex = xlAutomatic
                End With
                With Selection.Borders(xlInsideVertical)
                    .LineStyle = xlContinuous
                    .Weight = xlThin
                    .ColorIndex = xlAutomatic
                End With
               
                Sheets(nomFichier).Select
            End If
        Next i
       
        'Sheets("modPortefeuilleMed").Select
       
        'ActiveSheet.Shapes.SelectAll
        'Selection.Delete
        'ActiveSheet.Cells.Clear
       
        Application.CutCopyMode = False
        Application.DisplayAlerts = False
        ActiveWindow.SelectedSheets.Delete
        Application.DisplayAlerts = True
       
        ' MsgBox "Nb de ligne: " & Lignes
       
        'Range("B5").CurrentRegion.Rows(Range("B5").CurrentRegion.Rows.Count).Copy
        'Range("B65536").End(xlUp).Offset(1, 0).PasteSpecial
        'Selection.ClearContents
    End If
   
    ' Sheets("Suivi des visites entreprise").Select
    Sheets("modPortefeuille").Select
   
    Application.ScreenUpdating = True

End Sub
</code source>

Et le probleme c'est que sous excel 2003 ça marche tres bien.
Je suis débutant en vba.
mardi 18 décembre 2007 à 11:18:34 | Re : Erreur d'execution '1004' mais sur Excel 2007

MPi

Comme le message te l'indique, pourquoi ne pas utiliser le copier/coller plutôt que Move ?

Est-ce que les 2 classeurs ont le même nombre de lignes et de colonnes ? Je pense que la version 2007 a beaucoup plus de colonnes et de lignes que les versions précédentes. Il y donc peut-être conflit entre tes 2 classeurs à ce niveau (?)

MPi²


Cette discussion est classée dans : end, selection, with, borders, linestyle


Répondre à ce message

Sujets en rapport avec ce message

Mise ene page excel a partir de VB(macro) [ par titto7 ] Bonjour ,J'ai une probleme sur la mise en page d'excel apres l'avoir rempli a partir de vb.je souhaite (une fois la page excel remplie) faire sa mise Problème macro activation cellule [ par nanotechno ] Bonjour, J'ai un problème sur  ma macro.Ma macro ci dessous est correcte. Cependant, elle ne marche que si je me positionne en A8 et puis que je réali VB-coloration arrière plan d une cellule (macro) [ par Malliki ] Bonjour !! J'ai un problème : j'ai fait une macro avec le langage visual basic concernant la coloration de l'arrière plan d'une cellule avec la fon Cells.. [ par jeanjeandada ] Bonjour, J'aimerai utiliser la propriété With Selection.Borders(xlEdgeLeft) .Weight = xlMedium End Withpour une mise e selectionner la premiere cellule de la ligne suivante dans un tableau word [ par brau ] Bonjour,je voudrais parcourir un tableau word, et tester à chaque fois le contenu de la première cellule pour savoir si le contenu à + de 2 caractères Pbm sur un macro de mise en forme d'un graphique issu d'un tableau croisé dynamique [ par ShaVBA ] Bonjour,J'ai rédigé une macro pour mettre en forme mes graphiques croisés dynamiques cependant je fais face à un problème que je ne sais pas ressoudre Pb de graphisme [ par tedparker ] Bonjour J'essaye de mettre en forme un graphe Excel à partir de ACCESS mais cela ne fonctionne pas.Aucune erreur d'éxécution mais la mise en forme ne Code aléatoire !! [ par tedparker ] Bonjour Je crée des graphiques sous VBA à partir d'ACCESS pour les afficher sur Excel. J'exporte ma requête sur une feuille Excel et je mets mon grap mise en forme automatique d'un fichier excel extrait d'une base de données excel [ par orobert01 ] Je copie le résultat d'un état d'access vers excel à partir d'une macro access. Par contre je voudrais avoir par défaut une mise en forme à l'ouvertur conversion macro excel en visual basic [ par kalf2000 ] Salut a tous,voila mon probleme n'a pas l'air trop compliqué mais j'y arrive pas!! pour pouvoir piloter excel via vb g utiliser le code généré par les


Nos sponsors


Sondage...

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 2,418 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales