Macro de récupération de données d'un onglet à un autre

Nnaks

XLDnaute Nouveau
Bonjour chers amis internautes,

Je viens vers vous aujourd'hui car j'ai un souci avec une macro qui a pour but de copier les données d'une feuille source et de les coller dans les onglets spécifique au critère défini. Le seul souci, c'est que cette dernière s'arrête sans raison au 24eme onglet et je ne comprend pas pourquoi elle na va pas jusqu'au bout.
Pourrier vous m'aider s'il vous plait?
Je vous copie le code VBA en question:

Code:
Sub Extrait()
  Application.DisplayAlerts = False
  Application.ScreenUpdating = False
  Set f = Sheets("V15")
  '--- Liste des travées
  For Each c In f.Range("AF11", f.[AF65000].End(xlUp)) ' pour chaque travée
    On Error Resume Next
    temp = CStr(c.Value)
    Sheets(temp).Delete
    On Error GoTo 0
    Sheets("Tab. Type").Copy After:=Sheets(Sheets.Count)
    ActiveSheet.Name = c.Value
    '-- extraction
    ligne = 6
    For I = 11 To f.[AD65000].End(xlUp).Row
      If CStr(f.Cells(I, "AD")) = temp Then
        Cells(ligne, "A") = f.Cells(I, "AD")
        Cells(ligne, "J") = f.Cells(I, "H")
        Cells(ligne, "I") = f.Cells(I, "G")
        ligne = ligne + 1
      End If
    Next I
  Next c
End Sub
Ou pensez vous qu'il y a un problème qui bloque le déroulement de la macro?

Je vous remercie d'avance pour votre aide.
 

JNP

XLDnaute Barbatruc
Re : Macro de récupération de données d'un onglet à un autre

Bonjour le fil :),
Nommer des onglets d'après les cellules n'est pas toujours une bonne idée, surtout sans contrôle :rolleyes:...
Déjà, pourquoi ne pas utiliser temp qui est déjà défini et converti en texte :p ?
Code:
ActiveSheet.Name = temp
Ensuite, n'y a t-il pas une cellule vide ou contenant des caractères interdits :eek: ?
Sans le fichier, difficile d'en dire plus :rolleyes:...
Bon courage :cool:
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : Macro de récupération de données d'un onglet à un autre

Bonjour Nnaks, bonjour le forum,

Peut-être comme ça :
Code:
Sub Extrait()
Dim f As WorkSheet
Dim c As Range
Dim temp As String
 
Application.ScreenUpdating = False
Set f = Sheets("V15")
 
'--- Liste des travées
For Each c In f.Range("AF11", f.[AF65000].End(xlUp)) ' pour chaque travée
    On Error Resume Next
    temp = CStr(c.Value)
    Application.DisplayAlerts = False
    Sheets(temp).Delete
    If Err > 0 Then Err = 0
    Application.DisplayAlerts = True
    On Error GoTo 0
    Sheets("Tab. Type").Copy After:=Sheets(Sheets.Count)
    ActiveSheet.Name = c.Value
 
    '-- extraction
    ligne = 6
    For I = 11 To f.[AD65000].End(xlUp).Row
        If CStr(f.Cells(I, "AD")) = temp Then
            Cells(ligne, "A") = f.Cells(I, "AD")
            Cells(ligne, "J") = f.Cells(I, "H")
            Cells(ligne, "I") = f.Cells(I, "G")
            ligne = ligne + 1
        End If
    Next I
Next c
Application.ScreenUpdating = True
End Sub

[Édition]
Bonjour Roro, JNP, on s'est croisé
 

Nnaks

XLDnaute Nouveau
Re : Macro de récupération de données d'un onglet à un autre

Bonjour à tous et merci pour vos réponses,

Pour répondre à JNP, il n' y a aucune cellule vide et aucun caractère interdit. Ce sont tous des caractères en format texte.
A Robert, j'ai essayé avec ton code mais il présente exactement le même problème au même endroit :/

J'aurai aimé vous mettre en pj le fichier sauf que ce dernier pèse plus de 50 Mo.

Si vous pensez avoir une autre idée, je suis preneur car ce problème me bloque depuis maintenant 2 jours :(

Je vous remercie enormément pour votre aide.
 

Yaloo

XLDnaute Barbatruc
Re : Macro de récupération de données d'un onglet à un autre

Bonjour tout le monde,

@Nnaks : Allèges ton fichier au maximum, mais en laissant les données relatives à tes copies.

Il doit y avoir qq chose dans le nom ou le nb de caractère (supérieur à 31) etc....
 

Discussions similaires

Réponses
8
Affichages
538

Statistiques des forums

Discussions
312 571
Messages
2 089 811
Membres
104 280
dernier inscrit
MeThOxXx