Je vous expose mon problème. J'ai créé une variable tableau. Pour chacune
des variables rencontrées, la variable est filtrée et le résultat copié dans
une feuille nommée du même nom que la variable ceci grâce à une boucle.
Le problème est que ma base de données ne comporte pas toujours toutes les
variables de mon tableau et là tout s'arrête alors que je souhaiterais que
la boucle continue même si une ou plusieurs variables n'existent pas dans la
base de données.
Merci d'avance pour votre aide.
Ci-dessous le texte que j'ai utilisé.
Dim tabl(13) As Variant
tabl(0) = "721040"
tabl(1) = "721035"
tabl(2) = "721030"
tabl(3) = "721020"
tabl(4) = "721019"
tabl(5) = "721016"
tabl(6) = "721013"
tabl(7) = "721011"
tabl(8) = "721005"
tabl(9) = "721004"
tabl(10) = "721003"
tabl(11) = "721002"
tabl(12) = "721001"
Dim i As Integer
i = 0
Dim macell As Range
Dim resugm As Range
Dim donugm As Range
Dim nomugm As Range
Selection.CurrentRegion.Select
base = Selection.Address
Rem tri des données par ordre décroissant des UGM (important +++)
For Each macell In Worksheets("resultats").Range(base)
If macell.Text = tabl(i) Then
Worksheets("resultats").Range("A18").AutoFilter Field:=1,
Criteria1:=tabl(i)
Sheets.Add.Name = tabl(i)
Set resugm = Sheets(tabl(i)).Range("A1")
Set donugm = Worksheets("resultats").AutoFilter.Range
donugm.Copy resugm
Call miseenformeugm
i = i + 1
If (i > 13) Then
Exit Sub
End If
End If
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Papyjac
Bonjour crcam.lemans
J'espère que le bilan comptable de la banque n'est pas basé la dessus... plus sérieusement le problème est que tu devrais faire 2 boucles tout simplement :
For Each macell In Worksheets("resultats").Range(base) for I = 0 To 12 If macell.Text = tabl(i) Then Worksheets("resultats").Range("A18").AutoFilter Field:=1, Criteria1:=tabl(i) Sheets.Add.Name = tabl(i) Set resugm = Sheets(tabl(i)).Range("A1") Set donugm = Worksheets("resultats").AutoFilter.Range donugm.Copy resugm Call miseenformeugm
End If
Next macell -- Papyjac
"crcam.lemans" a écrit :
Bonjour,
Je vous expose mon problème. J'ai créé une variable tableau. Pour chacune des variables rencontrées, la variable est filtrée et le résultat copié dans une feuille nommée du même nom que la variable ceci grâce à une boucle.
Le problème est que ma base de données ne comporte pas toujours toutes les variables de mon tableau et là tout s'arrête alors que je souhaiterais que la boucle continue même si une ou plusieurs variables n'existent pas dans la base de données.
Merci d'avance pour votre aide.
Ci-dessous le texte que j'ai utilisé.
Dim tabl(13) As Variant tabl(0) = "721040" tabl(1) = "721035" tabl(2) = "721030" tabl(3) = "721020" tabl(4) = "721019" tabl(5) = "721016" tabl(6) = "721013" tabl(7) = "721011" tabl(8) = "721005" tabl(9) = "721004" tabl(10) = "721003" tabl(11) = "721002" tabl(12) = "721001" Dim i As Integer i = 0
Dim macell As Range Dim resugm As Range Dim donugm As Range Dim nomugm As Range
Selection.CurrentRegion.Select base = Selection.Address
Rem tri des données par ordre décroissant des UGM (important +++)
For Each macell In Worksheets("resultats").Range(base) If macell.Text = tabl(i) Then Worksheets("resultats").Range("A18").AutoFilter Field:=1, Criteria1:=tabl(i) Sheets.Add.Name = tabl(i) Set resugm = Sheets(tabl(i)).Range("A1") Set donugm = Worksheets("resultats").AutoFilter.Range donugm.Copy resugm Call miseenformeugm i = i + 1 If (i > 13) Then Exit Sub End If End If
Next macell
Bonjour crcam.lemans
J'espère que le bilan comptable de la banque n'est pas basé la dessus...
plus sérieusement le problème est que tu devrais faire 2 boucles tout
simplement :
For Each macell In Worksheets("resultats").Range(base)
for I = 0 To 12
If macell.Text = tabl(i) Then
Worksheets("resultats").Range("A18").AutoFilter Field:=1,
Criteria1:=tabl(i)
Sheets.Add.Name = tabl(i)
Set resugm = Sheets(tabl(i)).Range("A1")
Set donugm = Worksheets("resultats").AutoFilter.Range
donugm.Copy resugm
Call miseenformeugm
End If
Next macell
--
Papyjac
"crcam.lemans" a écrit :
Bonjour,
Je vous expose mon problème. J'ai créé une variable tableau. Pour chacune
des variables rencontrées, la variable est filtrée et le résultat copié dans
une feuille nommée du même nom que la variable ceci grâce à une boucle.
Le problème est que ma base de données ne comporte pas toujours toutes les
variables de mon tableau et là tout s'arrête alors que je souhaiterais que
la boucle continue même si une ou plusieurs variables n'existent pas dans la
base de données.
Merci d'avance pour votre aide.
Ci-dessous le texte que j'ai utilisé.
Dim tabl(13) As Variant
tabl(0) = "721040"
tabl(1) = "721035"
tabl(2) = "721030"
tabl(3) = "721020"
tabl(4) = "721019"
tabl(5) = "721016"
tabl(6) = "721013"
tabl(7) = "721011"
tabl(8) = "721005"
tabl(9) = "721004"
tabl(10) = "721003"
tabl(11) = "721002"
tabl(12) = "721001"
Dim i As Integer
i = 0
Dim macell As Range
Dim resugm As Range
Dim donugm As Range
Dim nomugm As Range
Selection.CurrentRegion.Select
base = Selection.Address
Rem tri des données par ordre décroissant des UGM (important +++)
For Each macell In Worksheets("resultats").Range(base)
If macell.Text = tabl(i) Then
Worksheets("resultats").Range("A18").AutoFilter Field:=1,
Criteria1:=tabl(i)
Sheets.Add.Name = tabl(i)
Set resugm = Sheets(tabl(i)).Range("A1")
Set donugm = Worksheets("resultats").AutoFilter.Range
donugm.Copy resugm
Call miseenformeugm
i = i + 1
If (i > 13) Then
Exit Sub
End If
End If
J'espère que le bilan comptable de la banque n'est pas basé la dessus... plus sérieusement le problème est que tu devrais faire 2 boucles tout simplement :
For Each macell In Worksheets("resultats").Range(base) for I = 0 To 12 If macell.Text = tabl(i) Then Worksheets("resultats").Range("A18").AutoFilter Field:=1, Criteria1:=tabl(i) Sheets.Add.Name = tabl(i) Set resugm = Sheets(tabl(i)).Range("A1") Set donugm = Worksheets("resultats").AutoFilter.Range donugm.Copy resugm Call miseenformeugm
End If
Next macell -- Papyjac
"crcam.lemans" a écrit :
Bonjour,
Je vous expose mon problème. J'ai créé une variable tableau. Pour chacune des variables rencontrées, la variable est filtrée et le résultat copié dans une feuille nommée du même nom que la variable ceci grâce à une boucle.
Le problème est que ma base de données ne comporte pas toujours toutes les variables de mon tableau et là tout s'arrête alors que je souhaiterais que la boucle continue même si une ou plusieurs variables n'existent pas dans la base de données.
Merci d'avance pour votre aide.
Ci-dessous le texte que j'ai utilisé.
Dim tabl(13) As Variant tabl(0) = "721040" tabl(1) = "721035" tabl(2) = "721030" tabl(3) = "721020" tabl(4) = "721019" tabl(5) = "721016" tabl(6) = "721013" tabl(7) = "721011" tabl(8) = "721005" tabl(9) = "721004" tabl(10) = "721003" tabl(11) = "721002" tabl(12) = "721001" Dim i As Integer i = 0
Dim macell As Range Dim resugm As Range Dim donugm As Range Dim nomugm As Range
Selection.CurrentRegion.Select base = Selection.Address
Rem tri des données par ordre décroissant des UGM (important +++)
For Each macell In Worksheets("resultats").Range(base) If macell.Text = tabl(i) Then Worksheets("resultats").Range("A18").AutoFilter Field:=1, Criteria1:=tabl(i) Sheets.Add.Name = tabl(i) Set resugm = Sheets(tabl(i)).Range("A1") Set donugm = Worksheets("resultats").AutoFilter.Range donugm.Copy resugm Call miseenformeugm i = i + 1 If (i > 13) Then Exit Sub End If End If
Next macell
Papyjac
Bonjour Cracam.lemans
Nous avons été coupé, je reprends
Il faut faire 2 boucles tout simplement et éventuellement sortir un message si tu ne trouve pas dans le tableau
For Each macell In Worksheets("resultats").Range(base) for i = 0 to 12 If macell.Text = tabl(i) Then Worksheets("resultats").Range("A18").AutoFilter Field:=1, Criteria1:=tabl(i) Sheets.Add.Name = tabl(i) Set resugm = Sheets(tabl(i)).Range("A1") Set donugm = Worksheets("resultats").AutoFilter.Range donugm.Copy resugm Call miseenformeugm End If next i Next macell
-- Papyjac
"crcam.lemans" a écrit :
Bonjour,
Je vous expose mon problème. J'ai créé une variable tableau. Pour chacune des variables rencontrées, la variable est filtrée et le résultat copié dans une feuille nommée du même nom que la variable ceci grâce à une boucle.
Le problème est que ma base de données ne comporte pas toujours toutes les variables de mon tableau et là tout s'arrête alors que je souhaiterais que la boucle continue même si une ou plusieurs variables n'existent pas dans la base de données.
Merci d'avance pour votre aide.
Ci-dessous le texte que j'ai utilisé.
Dim tabl(13) As Variant tabl(0) = "721040" tabl(1) = "721035" tabl(2) = "721030" tabl(3) = "721020" tabl(4) = "721019" tabl(5) = "721016" tabl(6) = "721013" tabl(7) = "721011" tabl(8) = "721005" tabl(9) = "721004" tabl(10) = "721003" tabl(11) = "721002" tabl(12) = "721001" Dim i As Integer i = 0
Dim macell As Range Dim resugm As Range Dim donugm As Range Dim nomugm As Range
Selection.CurrentRegion.Select base = Selection.Address
Rem tri des données par ordre décroissant des UGM (important +++)
For Each macell In Worksheets("resultats").Range(base) If macell.Text = tabl(i) Then Worksheets("resultats").Range("A18").AutoFilter Field:=1, Criteria1:=tabl(i) Sheets.Add.Name = tabl(i) Set resugm = Sheets(tabl(i)).Range("A1") Set donugm = Worksheets("resultats").AutoFilter.Range donugm.Copy resugm Call miseenformeugm i = i + 1 If (i > 13) Then Exit Sub End If End If
Next macell
Bonjour Cracam.lemans
Nous avons été coupé, je reprends
Il faut faire 2 boucles tout simplement et éventuellement sortir un message
si tu ne trouve pas dans le tableau
For Each macell In Worksheets("resultats").Range(base)
for i = 0 to 12
If macell.Text = tabl(i) Then
Worksheets("resultats").Range("A18").AutoFilter Field:=1,
Criteria1:=tabl(i)
Sheets.Add.Name = tabl(i)
Set resugm = Sheets(tabl(i)).Range("A1")
Set donugm = Worksheets("resultats").AutoFilter.Range
donugm.Copy resugm
Call miseenformeugm
End If
next i
Next macell
--
Papyjac
"crcam.lemans" a écrit :
Bonjour,
Je vous expose mon problème. J'ai créé une variable tableau. Pour chacune
des variables rencontrées, la variable est filtrée et le résultat copié dans
une feuille nommée du même nom que la variable ceci grâce à une boucle.
Le problème est que ma base de données ne comporte pas toujours toutes les
variables de mon tableau et là tout s'arrête alors que je souhaiterais que
la boucle continue même si une ou plusieurs variables n'existent pas dans la
base de données.
Merci d'avance pour votre aide.
Ci-dessous le texte que j'ai utilisé.
Dim tabl(13) As Variant
tabl(0) = "721040"
tabl(1) = "721035"
tabl(2) = "721030"
tabl(3) = "721020"
tabl(4) = "721019"
tabl(5) = "721016"
tabl(6) = "721013"
tabl(7) = "721011"
tabl(8) = "721005"
tabl(9) = "721004"
tabl(10) = "721003"
tabl(11) = "721002"
tabl(12) = "721001"
Dim i As Integer
i = 0
Dim macell As Range
Dim resugm As Range
Dim donugm As Range
Dim nomugm As Range
Selection.CurrentRegion.Select
base = Selection.Address
Rem tri des données par ordre décroissant des UGM (important +++)
For Each macell In Worksheets("resultats").Range(base)
If macell.Text = tabl(i) Then
Worksheets("resultats").Range("A18").AutoFilter Field:=1,
Criteria1:=tabl(i)
Sheets.Add.Name = tabl(i)
Set resugm = Sheets(tabl(i)).Range("A1")
Set donugm = Worksheets("resultats").AutoFilter.Range
donugm.Copy resugm
Call miseenformeugm
i = i + 1
If (i > 13) Then
Exit Sub
End If
End If
Il faut faire 2 boucles tout simplement et éventuellement sortir un message si tu ne trouve pas dans le tableau
For Each macell In Worksheets("resultats").Range(base) for i = 0 to 12 If macell.Text = tabl(i) Then Worksheets("resultats").Range("A18").AutoFilter Field:=1, Criteria1:=tabl(i) Sheets.Add.Name = tabl(i) Set resugm = Sheets(tabl(i)).Range("A1") Set donugm = Worksheets("resultats").AutoFilter.Range donugm.Copy resugm Call miseenformeugm End If next i Next macell
-- Papyjac
"crcam.lemans" a écrit :
Bonjour,
Je vous expose mon problème. J'ai créé une variable tableau. Pour chacune des variables rencontrées, la variable est filtrée et le résultat copié dans une feuille nommée du même nom que la variable ceci grâce à une boucle.
Le problème est que ma base de données ne comporte pas toujours toutes les variables de mon tableau et là tout s'arrête alors que je souhaiterais que la boucle continue même si une ou plusieurs variables n'existent pas dans la base de données.
Merci d'avance pour votre aide.
Ci-dessous le texte que j'ai utilisé.
Dim tabl(13) As Variant tabl(0) = "721040" tabl(1) = "721035" tabl(2) = "721030" tabl(3) = "721020" tabl(4) = "721019" tabl(5) = "721016" tabl(6) = "721013" tabl(7) = "721011" tabl(8) = "721005" tabl(9) = "721004" tabl(10) = "721003" tabl(11) = "721002" tabl(12) = "721001" Dim i As Integer i = 0
Dim macell As Range Dim resugm As Range Dim donugm As Range Dim nomugm As Range
Selection.CurrentRegion.Select base = Selection.Address
Rem tri des données par ordre décroissant des UGM (important +++)
For Each macell In Worksheets("resultats").Range(base) If macell.Text = tabl(i) Then Worksheets("resultats").Range("A18").AutoFilter Field:=1, Criteria1:=tabl(i) Sheets.Add.Name = tabl(i) Set resugm = Sheets(tabl(i)).Range("A1") Set donugm = Worksheets("resultats").AutoFilter.Range donugm.Copy resugm Call miseenformeugm i = i + 1 If (i > 13) Then Exit Sub End If End If
Next macell
crcam.lemans
Bonjour Papyjac et merci.
J'avais oublié de préciser que la variable se rencontrait x fois. Ta solution serait idéale si la variable se rencontrait une seule fois.
J'ai essayé de contourner le problème en utilisant la gestion des erreurs mais elle marche une fois puis est désactivée.
Je fais donc appel à nouveau aux pros : comment faire pour que i passe à la variable suivante dès qu'elle a été traité une fois ou comment réactiver la gestion des erreurs.
Ci-dessous mon exemple :
For Each macell In Worksheets("resultats").Range(base) For i = 0 To 12 If macell.Text = tabl(i) Then Worksheets("resultats").Range("A18").AutoFilter Field:=1, Criteria1:=tabl(i) On Error GoTo ligne1 Sheets.Add.Name = tabl(i) Set resugm = Sheets(tabl(i)).Range("A1") Set donugm = Worksheets("resultats").AutoFilter.Range donugm.Copy resugm Call miseenformeugm End If
GoTo fin
ligne1: Application.DisplayAlerts = False ActiveSheet.Delete GoTo fin
fin: Next i
Merci à tous pour votre aide.
Jocelyne
"Papyjac" a écrit dans le message de news:
Bonjour Cracam.lemans
Nous avons été coupé, je reprends
Il faut faire 2 boucles tout simplement et éventuellement sortir un message si tu ne trouve pas dans le tableau
For Each macell In Worksheets("resultats").Range(base) for i = 0 to 12 If macell.Text = tabl(i) Then Worksheets("resultats").Range("A18").AutoFilter Field:=1, Criteria1:=tabl(i) Sheets.Add.Name = tabl(i) Set resugm = Sheets(tabl(i)).Range("A1") Set donugm = Worksheets("resultats").AutoFilter.Range donugm.Copy resugm Call miseenformeugm End If next i Next macell
-- Papyjac
"crcam.lemans" a écrit :
Bonjour,
Je vous expose mon problème. J'ai créé une variable tableau. Pour chacune des variables rencontrées, la variable est filtrée et le résultat copié dans une feuille nommée du même nom que la variable ceci grâce à une boucle.
Le problème est que ma base de données ne comporte pas toujours toutes les variables de mon tableau et là tout s'arrête alors que je souhaiterais que la boucle continue même si une ou plusieurs variables n'existent pas dans la base de données.
Merci d'avance pour votre aide.
Ci-dessous le texte que j'ai utilisé.
Dim tabl(13) As Variant tabl(0) = "721040" tabl(1) = "721035" tabl(2) = "721030" tabl(3) = "721020" tabl(4) = "721019" tabl(5) = "721016" tabl(6) = "721013" tabl(7) = "721011" tabl(8) = "721005" tabl(9) = "721004" tabl(10) = "721003" tabl(11) = "721002" tabl(12) = "721001" Dim i As Integer i = 0
Dim macell As Range Dim resugm As Range Dim donugm As Range Dim nomugm As Range
Selection.CurrentRegion.Select base = Selection.Address
Rem tri des données par ordre décroissant des UGM (important +++)
For Each macell In Worksheets("resultats").Range(base) If macell.Text = tabl(i) Then Worksheets("resultats").Range("A18").AutoFilter Field:=1, Criteria1:=tabl(i) Sheets.Add.Name = tabl(i) Set resugm = Sheets(tabl(i)).Range("A1") Set donugm = Worksheets("resultats").AutoFilter.Range donugm.Copy resugm Call miseenformeugm i = i + 1 If (i > 13) Then Exit Sub End If End If
Next macell
Bonjour Papyjac et merci.
J'avais oublié de préciser que la variable se rencontrait x fois. Ta
solution serait idéale si la variable se rencontrait une seule fois.
J'ai essayé de contourner le problème en utilisant la gestion des erreurs
mais elle marche une fois puis est désactivée.
Je fais donc appel à nouveau aux pros : comment faire pour que i passe à la
variable suivante dès qu'elle a été traité une fois ou comment réactiver la
gestion des erreurs.
Ci-dessous mon exemple :
For Each macell In Worksheets("resultats").Range(base)
For i = 0 To 12
If macell.Text = tabl(i) Then
Worksheets("resultats").Range("A18").AutoFilter Field:=1,
Criteria1:=tabl(i)
On Error GoTo ligne1
Sheets.Add.Name = tabl(i)
Set resugm = Sheets(tabl(i)).Range("A1")
Set donugm = Worksheets("resultats").AutoFilter.Range
donugm.Copy resugm
Call miseenformeugm
End If
GoTo fin
ligne1:
Application.DisplayAlerts = False
ActiveSheet.Delete
GoTo fin
fin:
Next i
Merci à tous pour votre aide.
Jocelyne
"Papyjac" <Papyjac@discussions.microsoft.com> a écrit dans le message de
news: A5A94662-DED0-4C29-A24B-4EF5F76E14EC@microsoft.com...
Bonjour Cracam.lemans
Nous avons été coupé, je reprends
Il faut faire 2 boucles tout simplement et éventuellement sortir un
message
si tu ne trouve pas dans le tableau
For Each macell In Worksheets("resultats").Range(base)
for i = 0 to 12
If macell.Text = tabl(i) Then
Worksheets("resultats").Range("A18").AutoFilter Field:=1,
Criteria1:=tabl(i)
Sheets.Add.Name = tabl(i)
Set resugm = Sheets(tabl(i)).Range("A1")
Set donugm = Worksheets("resultats").AutoFilter.Range
donugm.Copy resugm
Call miseenformeugm
End If
next i
Next macell
--
Papyjac
"crcam.lemans" a écrit :
Bonjour,
Je vous expose mon problème. J'ai créé une variable tableau. Pour chacune
des variables rencontrées, la variable est filtrée et le résultat copié
dans
une feuille nommée du même nom que la variable ceci grâce à une boucle.
Le problème est que ma base de données ne comporte pas toujours toutes
les
variables de mon tableau et là tout s'arrête alors que je souhaiterais
que
la boucle continue même si une ou plusieurs variables n'existent pas dans
la
base de données.
Merci d'avance pour votre aide.
Ci-dessous le texte que j'ai utilisé.
Dim tabl(13) As Variant
tabl(0) = "721040"
tabl(1) = "721035"
tabl(2) = "721030"
tabl(3) = "721020"
tabl(4) = "721019"
tabl(5) = "721016"
tabl(6) = "721013"
tabl(7) = "721011"
tabl(8) = "721005"
tabl(9) = "721004"
tabl(10) = "721003"
tabl(11) = "721002"
tabl(12) = "721001"
Dim i As Integer
i = 0
Dim macell As Range
Dim resugm As Range
Dim donugm As Range
Dim nomugm As Range
Selection.CurrentRegion.Select
base = Selection.Address
Rem tri des données par ordre décroissant des UGM (important +++)
For Each macell In Worksheets("resultats").Range(base)
If macell.Text = tabl(i) Then
Worksheets("resultats").Range("A18").AutoFilter Field:=1,
Criteria1:=tabl(i)
Sheets.Add.Name = tabl(i)
Set resugm = Sheets(tabl(i)).Range("A1")
Set donugm = Worksheets("resultats").AutoFilter.Range
donugm.Copy resugm
Call miseenformeugm
i = i + 1
If (i > 13) Then
Exit Sub
End If
End If
J'avais oublié de préciser que la variable se rencontrait x fois. Ta solution serait idéale si la variable se rencontrait une seule fois.
J'ai essayé de contourner le problème en utilisant la gestion des erreurs mais elle marche une fois puis est désactivée.
Je fais donc appel à nouveau aux pros : comment faire pour que i passe à la variable suivante dès qu'elle a été traité une fois ou comment réactiver la gestion des erreurs.
Ci-dessous mon exemple :
For Each macell In Worksheets("resultats").Range(base) For i = 0 To 12 If macell.Text = tabl(i) Then Worksheets("resultats").Range("A18").AutoFilter Field:=1, Criteria1:=tabl(i) On Error GoTo ligne1 Sheets.Add.Name = tabl(i) Set resugm = Sheets(tabl(i)).Range("A1") Set donugm = Worksheets("resultats").AutoFilter.Range donugm.Copy resugm Call miseenformeugm End If
GoTo fin
ligne1: Application.DisplayAlerts = False ActiveSheet.Delete GoTo fin
fin: Next i
Merci à tous pour votre aide.
Jocelyne
"Papyjac" a écrit dans le message de news:
Bonjour Cracam.lemans
Nous avons été coupé, je reprends
Il faut faire 2 boucles tout simplement et éventuellement sortir un message si tu ne trouve pas dans le tableau
For Each macell In Worksheets("resultats").Range(base) for i = 0 to 12 If macell.Text = tabl(i) Then Worksheets("resultats").Range("A18").AutoFilter Field:=1, Criteria1:=tabl(i) Sheets.Add.Name = tabl(i) Set resugm = Sheets(tabl(i)).Range("A1") Set donugm = Worksheets("resultats").AutoFilter.Range donugm.Copy resugm Call miseenformeugm End If next i Next macell
-- Papyjac
"crcam.lemans" a écrit :
Bonjour,
Je vous expose mon problème. J'ai créé une variable tableau. Pour chacune des variables rencontrées, la variable est filtrée et le résultat copié dans une feuille nommée du même nom que la variable ceci grâce à une boucle.
Le problème est que ma base de données ne comporte pas toujours toutes les variables de mon tableau et là tout s'arrête alors que je souhaiterais que la boucle continue même si une ou plusieurs variables n'existent pas dans la base de données.
Merci d'avance pour votre aide.
Ci-dessous le texte que j'ai utilisé.
Dim tabl(13) As Variant tabl(0) = "721040" tabl(1) = "721035" tabl(2) = "721030" tabl(3) = "721020" tabl(4) = "721019" tabl(5) = "721016" tabl(6) = "721013" tabl(7) = "721011" tabl(8) = "721005" tabl(9) = "721004" tabl(10) = "721003" tabl(11) = "721002" tabl(12) = "721001" Dim i As Integer i = 0
Dim macell As Range Dim resugm As Range Dim donugm As Range Dim nomugm As Range
Selection.CurrentRegion.Select base = Selection.Address
Rem tri des données par ordre décroissant des UGM (important +++)
For Each macell In Worksheets("resultats").Range(base) If macell.Text = tabl(i) Then Worksheets("resultats").Range("A18").AutoFilter Field:=1, Criteria1:=tabl(i) Sheets.Add.Name = tabl(i) Set resugm = Sheets(tabl(i)).Range("A1") Set donugm = Worksheets("resultats").AutoFilter.Range donugm.Copy resugm Call miseenformeugm i = i + 1 If (i > 13) Then Exit Sub End If End If
Next macell
crcam.lemans
Je viens de trouver la solution. Il suffisait que je rajoute resume fin au lieu de goto fin dans ma gestion des erreurs.
Merci encore.
"crcam.lemans" a écrit dans le message de news: 49350a8d$0$939$
Bonjour Papyjac et merci.
J'avais oublié de préciser que la variable se rencontrait x fois. Ta solution serait idéale si la variable se rencontrait une seule fois.
J'ai essayé de contourner le problème en utilisant la gestion des erreurs mais elle marche une fois puis est désactivée.
Je fais donc appel à nouveau aux pros : comment faire pour que i passe à la variable suivante dès qu'elle a été traité une fois ou comment réactiver la gestion des erreurs.
Ci-dessous mon exemple :
For Each macell In Worksheets("resultats").Range(base) For i = 0 To 12 If macell.Text = tabl(i) Then Worksheets("resultats").Range("A18").AutoFilter Field:=1, Criteria1:=tabl(i) On Error GoTo ligne1 Sheets.Add.Name = tabl(i) Set resugm = Sheets(tabl(i)).Range("A1") Set donugm = Worksheets("resultats").AutoFilter.Range donugm.Copy resugm Call miseenformeugm End If
GoTo fin
ligne1: Application.DisplayAlerts = False ActiveSheet.Delete GoTo fin
fin: Next i
Merci à tous pour votre aide.
Jocelyne
"Papyjac" a écrit dans le message de news:
Bonjour Cracam.lemans
Nous avons été coupé, je reprends
Il faut faire 2 boucles tout simplement et éventuellement sortir un message si tu ne trouve pas dans le tableau
For Each macell In Worksheets("resultats").Range(base) for i = 0 to 12 If macell.Text = tabl(i) Then Worksheets("resultats").Range("A18").AutoFilter Field:=1, Criteria1:=tabl(i) Sheets.Add.Name = tabl(i) Set resugm = Sheets(tabl(i)).Range("A1") Set donugm = Worksheets("resultats").AutoFilter.Range donugm.Copy resugm Call miseenformeugm End If next i Next macell
-- Papyjac
"crcam.lemans" a écrit :
Bonjour,
Je vous expose mon problème. J'ai créé une variable tableau. Pour chacune des variables rencontrées, la variable est filtrée et le résultat copié dans une feuille nommée du même nom que la variable ceci grâce à une boucle.
Le problème est que ma base de données ne comporte pas toujours toutes les variables de mon tableau et là tout s'arrête alors que je souhaiterais que la boucle continue même si une ou plusieurs variables n'existent pas dans la base de données.
Merci d'avance pour votre aide.
Ci-dessous le texte que j'ai utilisé.
Dim tabl(13) As Variant tabl(0) = "721040" tabl(1) = "721035" tabl(2) = "721030" tabl(3) = "721020" tabl(4) = "721019" tabl(5) = "721016" tabl(6) = "721013" tabl(7) = "721011" tabl(8) = "721005" tabl(9) = "721004" tabl(10) = "721003" tabl(11) = "721002" tabl(12) = "721001" Dim i As Integer i = 0
Dim macell As Range Dim resugm As Range Dim donugm As Range Dim nomugm As Range
Selection.CurrentRegion.Select base = Selection.Address
Rem tri des données par ordre décroissant des UGM (important +++)
For Each macell In Worksheets("resultats").Range(base) If macell.Text = tabl(i) Then Worksheets("resultats").Range("A18").AutoFilter Field:=1, Criteria1:=tabl(i) Sheets.Add.Name = tabl(i) Set resugm = Sheets(tabl(i)).Range("A1") Set donugm = Worksheets("resultats").AutoFilter.Range donugm.Copy resugm Call miseenformeugm i = i + 1 If (i > 13) Then Exit Sub End If End If
Next macell
Je viens de trouver la solution. Il suffisait que je rajoute resume fin au
lieu de goto fin dans ma gestion des erreurs.
Merci encore.
"crcam.lemans" <crcam.lemans@wanadoo.fr> a écrit dans le message de news:
49350a8d$0$939$ba4acef3@news.orange.fr...
Bonjour Papyjac et merci.
J'avais oublié de préciser que la variable se rencontrait x fois. Ta
solution serait idéale si la variable se rencontrait une seule fois.
J'ai essayé de contourner le problème en utilisant la gestion des erreurs
mais elle marche une fois puis est désactivée.
Je fais donc appel à nouveau aux pros : comment faire pour que i passe à
la variable suivante dès qu'elle a été traité une fois ou comment
réactiver la gestion des erreurs.
Ci-dessous mon exemple :
For Each macell In Worksheets("resultats").Range(base)
For i = 0 To 12
If macell.Text = tabl(i) Then
Worksheets("resultats").Range("A18").AutoFilter Field:=1,
Criteria1:=tabl(i)
On Error GoTo ligne1
Sheets.Add.Name = tabl(i)
Set resugm = Sheets(tabl(i)).Range("A1")
Set donugm = Worksheets("resultats").AutoFilter.Range
donugm.Copy resugm
Call miseenformeugm
End If
GoTo fin
ligne1:
Application.DisplayAlerts = False
ActiveSheet.Delete
GoTo fin
fin:
Next i
Merci à tous pour votre aide.
Jocelyne
"Papyjac" <Papyjac@discussions.microsoft.com> a écrit dans le message de
news: A5A94662-DED0-4C29-A24B-4EF5F76E14EC@microsoft.com...
Bonjour Cracam.lemans
Nous avons été coupé, je reprends
Il faut faire 2 boucles tout simplement et éventuellement sortir un
message
si tu ne trouve pas dans le tableau
For Each macell In Worksheets("resultats").Range(base)
for i = 0 to 12
If macell.Text = tabl(i) Then
Worksheets("resultats").Range("A18").AutoFilter Field:=1,
Criteria1:=tabl(i)
Sheets.Add.Name = tabl(i)
Set resugm = Sheets(tabl(i)).Range("A1")
Set donugm = Worksheets("resultats").AutoFilter.Range
donugm.Copy resugm
Call miseenformeugm
End If
next i
Next macell
--
Papyjac
"crcam.lemans" a écrit :
Bonjour,
Je vous expose mon problème. J'ai créé une variable tableau. Pour
chacune
des variables rencontrées, la variable est filtrée et le résultat copié
dans
une feuille nommée du même nom que la variable ceci grâce à une boucle.
Le problème est que ma base de données ne comporte pas toujours toutes
les
variables de mon tableau et là tout s'arrête alors que je souhaiterais
que
la boucle continue même si une ou plusieurs variables n'existent pas
dans la
base de données.
Merci d'avance pour votre aide.
Ci-dessous le texte que j'ai utilisé.
Dim tabl(13) As Variant
tabl(0) = "721040"
tabl(1) = "721035"
tabl(2) = "721030"
tabl(3) = "721020"
tabl(4) = "721019"
tabl(5) = "721016"
tabl(6) = "721013"
tabl(7) = "721011"
tabl(8) = "721005"
tabl(9) = "721004"
tabl(10) = "721003"
tabl(11) = "721002"
tabl(12) = "721001"
Dim i As Integer
i = 0
Dim macell As Range
Dim resugm As Range
Dim donugm As Range
Dim nomugm As Range
Selection.CurrentRegion.Select
base = Selection.Address
Rem tri des données par ordre décroissant des UGM (important +++)
For Each macell In Worksheets("resultats").Range(base)
If macell.Text = tabl(i) Then
Worksheets("resultats").Range("A18").AutoFilter Field:=1,
Criteria1:=tabl(i)
Sheets.Add.Name = tabl(i)
Set resugm = Sheets(tabl(i)).Range("A1")
Set donugm = Worksheets("resultats").AutoFilter.Range
donugm.Copy resugm
Call miseenformeugm
i = i + 1
If (i > 13) Then
Exit Sub
End If
End If
Je viens de trouver la solution. Il suffisait que je rajoute resume fin au lieu de goto fin dans ma gestion des erreurs.
Merci encore.
"crcam.lemans" a écrit dans le message de news: 49350a8d$0$939$
Bonjour Papyjac et merci.
J'avais oublié de préciser que la variable se rencontrait x fois. Ta solution serait idéale si la variable se rencontrait une seule fois.
J'ai essayé de contourner le problème en utilisant la gestion des erreurs mais elle marche une fois puis est désactivée.
Je fais donc appel à nouveau aux pros : comment faire pour que i passe à la variable suivante dès qu'elle a été traité une fois ou comment réactiver la gestion des erreurs.
Ci-dessous mon exemple :
For Each macell In Worksheets("resultats").Range(base) For i = 0 To 12 If macell.Text = tabl(i) Then Worksheets("resultats").Range("A18").AutoFilter Field:=1, Criteria1:=tabl(i) On Error GoTo ligne1 Sheets.Add.Name = tabl(i) Set resugm = Sheets(tabl(i)).Range("A1") Set donugm = Worksheets("resultats").AutoFilter.Range donugm.Copy resugm Call miseenformeugm End If
GoTo fin
ligne1: Application.DisplayAlerts = False ActiveSheet.Delete GoTo fin
fin: Next i
Merci à tous pour votre aide.
Jocelyne
"Papyjac" a écrit dans le message de news:
Bonjour Cracam.lemans
Nous avons été coupé, je reprends
Il faut faire 2 boucles tout simplement et éventuellement sortir un message si tu ne trouve pas dans le tableau
For Each macell In Worksheets("resultats").Range(base) for i = 0 to 12 If macell.Text = tabl(i) Then Worksheets("resultats").Range("A18").AutoFilter Field:=1, Criteria1:=tabl(i) Sheets.Add.Name = tabl(i) Set resugm = Sheets(tabl(i)).Range("A1") Set donugm = Worksheets("resultats").AutoFilter.Range donugm.Copy resugm Call miseenformeugm End If next i Next macell
-- Papyjac
"crcam.lemans" a écrit :
Bonjour,
Je vous expose mon problème. J'ai créé une variable tableau. Pour chacune des variables rencontrées, la variable est filtrée et le résultat copié dans une feuille nommée du même nom que la variable ceci grâce à une boucle.
Le problème est que ma base de données ne comporte pas toujours toutes les variables de mon tableau et là tout s'arrête alors que je souhaiterais que la boucle continue même si une ou plusieurs variables n'existent pas dans la base de données.
Merci d'avance pour votre aide.
Ci-dessous le texte que j'ai utilisé.
Dim tabl(13) As Variant tabl(0) = "721040" tabl(1) = "721035" tabl(2) = "721030" tabl(3) = "721020" tabl(4) = "721019" tabl(5) = "721016" tabl(6) = "721013" tabl(7) = "721011" tabl(8) = "721005" tabl(9) = "721004" tabl(10) = "721003" tabl(11) = "721002" tabl(12) = "721001" Dim i As Integer i = 0
Dim macell As Range Dim resugm As Range Dim donugm As Range Dim nomugm As Range
Selection.CurrentRegion.Select base = Selection.Address
Rem tri des données par ordre décroissant des UGM (important +++)
For Each macell In Worksheets("resultats").Range(base) If macell.Text = tabl(i) Then Worksheets("resultats").Range("A18").AutoFilter Field:=1, Criteria1:=tabl(i) Sheets.Add.Name = tabl(i) Set resugm = Sheets(tabl(i)).Range("A1") Set donugm = Worksheets("resultats").AutoFilter.Range donugm.Copy resugm Call miseenformeugm i = i + 1 If (i > 13) Then Exit Sub End If End If