Erreur de compilation
Résolu/Fermé
bestkeeper
Messages postés
90
Date d'inscription
jeudi 19 avril 2007
Statut
Membre
Dernière intervention
16 juillet 2020
-
13 oct. 2008 à 09:50
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 - 14 oct. 2008 à 12:08
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 - 14 oct. 2008 à 12:08
A voir également:
- Erreur de compilation
- Erreur 1004 vba ✓ - Forum VB / VBA
- Erreur 1000 france tv - Forum MacOS
- Youtube une erreur s'est produite ✓ - Forum YouTube
- Iptv erreur de lecture - Forum Vidéo/TV
- Free erreur 38 ✓ - Forum Mobile
42 réponses
Polux31
Messages postés
6917
Date d'inscription
mardi 25 septembre 2007
Statut
Membre
Dernière intervention
1 novembre 2016
1 197
14 oct. 2008 à 10:49
14 oct. 2008 à 10:49
dans le dernier ensemble de ton code, la fonction doesExist() n'y est pas ... ne l'aurais-tu pas effacée ???
;o)
;o)
bestkeeper
Messages postés
90
Date d'inscription
jeudi 19 avril 2007
Statut
Membre
Dernière intervention
16 juillet 2020
14 oct. 2008 à 11:00
14 oct. 2008 à 11:00
ou doit-elle être ?
Polux31
Messages postés
6917
Date d'inscription
mardi 25 septembre 2007
Statut
Membre
Dernière intervention
1 novembre 2016
1 197
14 oct. 2008 à 11:14
14 oct. 2008 à 11:14
peu importe, elle doit être dans le même module.
bestkeeper
Messages postés
90
Date d'inscription
jeudi 19 avril 2007
Statut
Membre
Dernière intervention
16 juillet 2020
14 oct. 2008 à 11:26
14 oct. 2008 à 11:26
Ok autant pour moi, j'avais zappé cette partie de la macro.
Maintenant il me sort une erreur de compilation sur le Private Sub lanceRecap() à la ligne CallTriTab.
Maintenant il me sort une erreur de compilation sur le Private Sub lanceRecap() à la ligne CallTriTab.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Polux31
Messages postés
6917
Date d'inscription
mardi 25 septembre 2007
Statut
Membre
Dernière intervention
1 novembre 2016
1 197
14 oct. 2008 à 11:30
14 oct. 2008 à 11:30
Erreur de compilation sur cette ligne :
Je ne comprends pas, j'ai testé les procédures hier soir chez moi et ça fonctionnait, je pouvais faire le tri dans les 2 sens. Je ne vois pas d'où ça peut venir.
Call TriTab(True)
Je ne comprends pas, j'ai testé les procédures hier soir chez moi et ça fonctionnait, je pouvais faire le tri dans les 2 sens. Je ne vois pas d'où ça peut venir.
bestkeeper
Messages postés
90
Date d'inscription
jeudi 19 avril 2007
Statut
Membre
Dernière intervention
16 juillet 2020
14 oct. 2008 à 11:48
14 oct. 2008 à 11:48
Voici la macro dans sa globalité, peut-être y verras tu une erreur ?
Option Explicit
Private myTab()
Private ind As Long
Public Sub mainTri()
prepareTri
lanceRecap
End Sub
Private Sub prepareTri()
Dim ws As Worksheet
Dim i As Long
Set ws = Worksheets("commandes")
i = 2
While ws.Range("A" & i).Value <> ""
If doesExist(ws.Range("A" & i).Value) = False Then
ind = ind + 1
ReDim Preserve myTab(ind)
myTab(ind) = ws.Range("A" & i).Value
End If
i = i + 1
Wend
Set ws = Nothing
End Sub
Private Sub lanceRecap()
Dim ws1 As Worksheet
Dim ws2 As Worksheet
Dim lig1 As Long
Dim lig2 As Long
Dim i As Long
Dim str As Variant
Set ws1 = Worksheets("commandes")
Set ws2 = Worksheets("recap")
lig2 = 2
Call TriTab(True) 'True tri croissant, False tri décroissant
For i = 1 To ind
lig1 = 2
str = myTab(i)
While ws1.Range("A" & lig1).Value <> ""
If ws1.Range("A" & lig1).Value = str Then
ws1.Select
ws1.Range("B" & lig1).Copy
ws2.Select
ws2.Range("A" & lig2).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
ws1.Select
ws1.Range("A" & lig1).Copy
ws2.Select
ws2.Range("B" & lig2).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
ws1.Select
ws1.Range("E" & lig1).Copy
ws2.Select
ws2.Range("C" & lig2).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
lig2 = lig2 + 1
End If
lig1 = lig1 + 1
Wend
Next i
Set ws1 = Nothing
Set ws2 = Nothing
End Sub
Private Function doesExist(ByVal str As Variant) As Boolean
Dim i As Long
For i = 1 To ind
If myTab(i) = str Then
doesExist = True
Exit Function
End If
Next i
doesExist = False
End Function
Option Explicit
Private myTab()
Private ind As Long
Public Sub mainTri()
prepareTri
lanceRecap
End Sub
Private Sub prepareTri()
Dim ws As Worksheet
Dim i As Long
Set ws = Worksheets("commandes")
i = 2
While ws.Range("A" & i).Value <> ""
If doesExist(ws.Range("A" & i).Value) = False Then
ind = ind + 1
ReDim Preserve myTab(ind)
myTab(ind) = ws.Range("A" & i).Value
End If
i = i + 1
Wend
Set ws = Nothing
End Sub
Private Sub lanceRecap()
Dim ws1 As Worksheet
Dim ws2 As Worksheet
Dim lig1 As Long
Dim lig2 As Long
Dim i As Long
Dim str As Variant
Set ws1 = Worksheets("commandes")
Set ws2 = Worksheets("recap")
lig2 = 2
Call TriTab(True) 'True tri croissant, False tri décroissant
For i = 1 To ind
lig1 = 2
str = myTab(i)
While ws1.Range("A" & lig1).Value <> ""
If ws1.Range("A" & lig1).Value = str Then
ws1.Select
ws1.Range("B" & lig1).Copy
ws2.Select
ws2.Range("A" & lig2).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
ws1.Select
ws1.Range("A" & lig1).Copy
ws2.Select
ws2.Range("B" & lig2).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
ws1.Select
ws1.Range("E" & lig1).Copy
ws2.Select
ws2.Range("C" & lig2).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
lig2 = lig2 + 1
End If
lig1 = lig1 + 1
Wend
Next i
Set ws1 = Nothing
Set ws2 = Nothing
End Sub
Private Function doesExist(ByVal str As Variant) As Boolean
Dim i As Long
For i = 1 To ind
If myTab(i) = str Then
doesExist = True
Exit Function
End If
Next i
doesExist = False
End Function
Polux31
Messages postés
6917
Date d'inscription
mardi 25 septembre 2007
Statut
Membre
Dernière intervention
1 novembre 2016
1 197
14 oct. 2008 à 11:54
14 oct. 2008 à 11:54
Il manque la procédure TriTab() ... :o|
bestkeeper
Messages postés
90
Date d'inscription
jeudi 19 avril 2007
Statut
Membre
Dernière intervention
16 juillet 2020
14 oct. 2008 à 11:57
14 oct. 2008 à 11:57
Je la colle après la lanceRecap?
bestkeeper
Messages postés
90
Date d'inscription
jeudi 19 avril 2007
Statut
Membre
Dernière intervention
16 juillet 2020
13 oct. 2008 à 12:04
13 oct. 2008 à 12:04
Quelqu'un peut m'aider SVP.
Je suis bloqué.
Je suis bloqué.
Polux31
Messages postés
6917
Date d'inscription
mardi 25 septembre 2007
Statut
Membre
Dernière intervention
1 novembre 2016
1 197
13 oct. 2008 à 12:07
13 oct. 2008 à 12:07
bonjour
myTab() doit être déclaré en variable global du module et non dans une procédure.
Tu as "Sub Bouton1_QuandClic()" qui n'a rien à faire ici puisque pas de End Sub.
Idem pourquoi 2 fois End Function à la fin ????
;o)
myTab() doit être déclaré en variable global du module et non dans une procédure.
Tu as "Sub Bouton1_QuandClic()" qui n'a rien à faire ici puisque pas de End Sub.
Idem pourquoi 2 fois End Function à la fin ????
;o)
bestkeeper
Messages postés
90
Date d'inscription
jeudi 19 avril 2007
Statut
Membre
Dernière intervention
16 juillet 2020
13 oct. 2008 à 12:58
13 oct. 2008 à 12:58
J'ai apporté les modifications.
Le hic, est que cela ne me prends en compte que les données de la première page.
Le hic, est que cela ne me prends en compte que les données de la première page.
Polux31
Messages postés
6917
Date d'inscription
mardi 25 septembre 2007
Statut
Membre
Dernière intervention
1 novembre 2016
1 197
13 oct. 2008 à 13:08
13 oct. 2008 à 13:08
Il faut modifier l'objet Worksheets().
Faire : Set ws = Worksheets("nom_de_l'onglet") ou lieu de Worksheets(1) par exemple.
;o)
Faire : Set ws = Worksheets("nom_de_l'onglet") ou lieu de Worksheets(1) par exemple.
;o)
Polux31
Messages postés
6917
Date d'inscription
mardi 25 septembre 2007
Statut
Membre
Dernière intervention
1 novembre 2016
1 197
13 oct. 2008 à 13:20
13 oct. 2008 à 13:20
Tu dois faire pareil dans lanceRecap() pour ws1 (onglet origine) et ws2 (onglet destination)
bestkeeper
Messages postés
90
Date d'inscription
jeudi 19 avril 2007
Statut
Membre
Dernière intervention
16 juillet 2020
13 oct. 2008 à 13:27
13 oct. 2008 à 13:27
ça ne marche toujours pas.
Option Explicit
Private myTab()
Private ind As Long
Public Sub mainTri()
prepareTri
lanceRecap
End Sub
Private Sub prepareTri()
Dim ws As Worksheet
Dim i As Long
Set ws = Worksheets("commandes")
i = 2
While ws.Range("A" & i).Value <> ""
If doesExist(ws.Range("A" & i).Value) = False Then
ind = ind + 1
ReDim Preserve myTab(ind)
myTab(ind) = ws.Range("A" & i).Value
End If
i = i + 1
Wend
Set ws = Nothing
End Sub
Private Sub lanceRecap()
Dim ws1 As Worksheet
Dim ws2 As Worksheet
Dim lig1 As Long
Dim lig2 As Long
Dim i As Long
Dim str As Variant
Set ws1 = Worksheets("commandes")
Set ws2 = Worksheets("recap")
lig2 = 2
For i = 1 To ind
lig1 = 2
str = myTab(i)
While ws1.Range("A" & lig1).Value <> ""
If ws1.Range("A" & lig1).Value = str Then
ws1.Range("B" & lig1).Copy Destination:=ws2.Range("A" & lig2)
ws1.Range("A" & lig1).Copy Destination:=ws2.Range("B" & lig2)
ws1.Range("E" & lig1).Copy Destination:=ws2.Range("C" & lig2)
lig2 = lig2 + 1
End If
lig1 = lig1 + 1
Wend
Next i
Set ws1 = Worksheets("commandes")
Set ws2 = Worksheets("recap")
End Sub
Private Function doesExist(ByVal str As Variant) As Boolean
Dim i As Long
For i = 1 To ind
If myTab(i) = str Then
doesExist = True
Exit Function
End If
Next i
doesExist = False
End Function
Option Explicit
Private myTab()
Private ind As Long
Public Sub mainTri()
prepareTri
lanceRecap
End Sub
Private Sub prepareTri()
Dim ws As Worksheet
Dim i As Long
Set ws = Worksheets("commandes")
i = 2
While ws.Range("A" & i).Value <> ""
If doesExist(ws.Range("A" & i).Value) = False Then
ind = ind + 1
ReDim Preserve myTab(ind)
myTab(ind) = ws.Range("A" & i).Value
End If
i = i + 1
Wend
Set ws = Nothing
End Sub
Private Sub lanceRecap()
Dim ws1 As Worksheet
Dim ws2 As Worksheet
Dim lig1 As Long
Dim lig2 As Long
Dim i As Long
Dim str As Variant
Set ws1 = Worksheets("commandes")
Set ws2 = Worksheets("recap")
lig2 = 2
For i = 1 To ind
lig1 = 2
str = myTab(i)
While ws1.Range("A" & lig1).Value <> ""
If ws1.Range("A" & lig1).Value = str Then
ws1.Range("B" & lig1).Copy Destination:=ws2.Range("A" & lig2)
ws1.Range("A" & lig1).Copy Destination:=ws2.Range("B" & lig2)
ws1.Range("E" & lig1).Copy Destination:=ws2.Range("C" & lig2)
lig2 = lig2 + 1
End If
lig1 = lig1 + 1
Wend
Next i
Set ws1 = Worksheets("commandes")
Set ws2 = Worksheets("recap")
End Sub
Private Function doesExist(ByVal str As Variant) As Boolean
Dim i As Long
For i = 1 To ind
If myTab(i) = str Then
doesExist = True
Exit Function
End If
Next i
doesExist = False
End Function
bestkeeper
Messages postés
90
Date d'inscription
jeudi 19 avril 2007
Statut
Membre
Dernière intervention
16 juillet 2020
13 oct. 2008 à 13:32
13 oct. 2008 à 13:32
Je n'ai pas d'erreur.
La macro s'execute, et seules les données de la première page de l'onglet "commande" apparaissent.
La macro s'execute, et seules les données de la première page de l'onglet "commande" apparaissent.
Polux31
Messages postés
6917
Date d'inscription
mardi 25 septembre 2007
Statut
Membre
Dernière intervention
1 novembre 2016
1 197
13 oct. 2008 à 14:12
13 oct. 2008 à 14:12
C'est à cause des cellules fusionnées ou vides ... le test se fait sur la colonne A. Pour parcourir toute la feuille, il ne faut ni cellules vides en A, ni cellules fusionnées.
bestkeeper
Messages postés
90
Date d'inscription
jeudi 19 avril 2007
Statut
Membre
Dernière intervention
16 juillet 2020
13 oct. 2008 à 14:27
13 oct. 2008 à 14:27
Ok, donc moi j'ai des cellules vides.
Je fais un test avec uniquement des cellules pleines, et je te tiens au courant.
Merci
Je fais un test avec uniquement des cellules pleines, et je te tiens au courant.
Merci
Polux31
Messages postés
6917
Date d'inscription
mardi 25 septembre 2007
Statut
Membre
Dernière intervention
1 novembre 2016
1 197
13 oct. 2008 à 14:27
13 oct. 2008 à 14:27
ok
;o)
;o)
bestkeeper
Messages postés
90
Date d'inscription
jeudi 19 avril 2007
Statut
Membre
Dernière intervention
16 juillet 2020
13 oct. 2008 à 14:56
13 oct. 2008 à 14:56
ça marche en supprimant les cellules vides.
Cependant, la récap ne me tri pas les références article par ordre alphabétique.
Cela serait plus facile à la lecture.
Merci
Cependant, la récap ne me tri pas les références article par ordre alphabétique.
Cela serait plus facile à la lecture.
Merci
Polux31
Messages postés
6917
Date d'inscription
mardi 25 septembre 2007
Statut
Membre
Dernière intervention
1 novembre 2016
1 197
14 oct. 2008 à 11:59
14 oct. 2008 à 11:59
tu peux la coller même après doesExist(), l'emplacement n'a pas d'importance, le tout c'est qu'elle y soit ;o)