Amélioration de code + erreur 1 fois sur 2
Résolu/Fermé
A voir également:
- Amélioration de code + erreur 1 fois sur 2
- Word numéro de page 1/2 - Guide
- Code erreur s05-05 - Forum Téléviseurs
- Code erreur 80072efe windows 7 ✓ - Forum Windows 7
- Qu'est ce qu'une femme fait 3 fois par jour - Forum Loisirs / Divertissements
- 2 comptes whatsapp - Guide
6 réponses
ThauTheme
Messages postés
1442
Date d'inscription
mardi 21 octobre 2014
Statut
Membre
Dernière intervention
29 juillet 2022
160
17 juin 2017 à 20:12
17 juin 2017 à 20:12
Re,
Arf ! Surtout pas ! Si tu me vénères ça va me véner grave !... (oui des fois je parle djeuns mais ça fait trop marrer mon fils ado)...
Arf ! Surtout pas ! Si tu me vénères ça va me véner grave !... (oui des fois je parle djeuns mais ça fait trop marrer mon fils ado)...
ThauTheme
Messages postés
1442
Date d'inscription
mardi 21 octobre 2014
Statut
Membre
Dernière intervention
29 juillet 2022
160
17 juin 2017 à 15:58
17 juin 2017 à 15:58
Bonjour Leghe, bonjour le forum,
Tu navigues entre plusieurs onglets, il te faut donc spécifier systématiquement l'onglet de la plage que tu désignes. Je te recommande de créer des variables pour chaque onglet utilisé pour simplifier l'écriture du code. Ensuite, la règle d'or c'est d'éviter les Select inutiles qui ne font que ralentir l'exécution du code et sont sources de bug (c'est ton cas). Pour terminer, il est d'usage de placer la déclaration des variables en début du code...
Remarques : tu as définis les variables QUANTITE et ProductIdType avec la même plage de cellulles. Idem pour PRIX et AddDelete. C'est normal ?
Tu copies/colles deux fois SKU, c'est normal ?
Ton code modifié respectant les trois points :
Tu navigues entre plusieurs onglets, il te faut donc spécifier systématiquement l'onglet de la plage que tu désignes. Je te recommande de créer des variables pour chaque onglet utilisé pour simplifier l'écriture du code. Ensuite, la règle d'or c'est d'éviter les Select inutiles qui ne font que ralentir l'exécution du code et sont sources de bug (c'est ton cas). Pour terminer, il est d'usage de placer la déclaration des variables en début du code...
Remarques : tu as définis les variables QUANTITE et ProductIdType avec la même plage de cellulles. Idem pour PRIX et AddDelete. C'est normal ?
Tu copies/colles deux fois SKU, c'est normal ?
Ton code modifié respectant les trois points :
Sub Macro1()
Dim CS As Workbook
Dim OS As Worksheet
Dim CC As Workbook
Dim OE As Worksheet
Dim OM As Worksheet
Dim Cible As Range
Dim DerniereCellule As Range
Dim dlig As Long, lig As Long
Dim rng As Range
Dim I As Long
Dim SKU As Range
Dim QUANTITE As Range
Dim PRIX As Range
Dim CATEGORIE As Range
Dim ProductIdType As Range
Dim ItemCondition As Range
Dim AddDelete As Range
Dim WillShip As Range
Dim ExpeditedShipping As Range
Dim ItemNote As Range
Dim Fulfillment As Range
Dim li As Long, lifin As Long
Set CS = Workbooks.Open("C:\Users\Gérard\Desktop\Export.xls")
Set OS = CS.Worksheets("A")
Set CC = ThisWorkbook
Set OE = CC.Worksheets("Export")
Set OM = CC.Worksheets("majamazonFR")
Set Cible = OE.Range("A1")
Set DerniereCellule = OS.Cells.SpecialCells(xlCellTypeLastCell)
OS.Range(Cells(1, 1), DerniereCellule).Copy Cible
CS.Close False 'ferme le classeur sans enregistrer
dlig = OE.Range("L" & Rows.Count).End(xlUp).Row
For lig = dlig To 2 Step -1
If UCase(OE.Cells(lig, 12)) = "PAS DE VPC" Then Rows(lig).Delete
Next lig
Set rng = OE.Range("A1").CurrentRegion
rng.Columns(12).SpecialCells(xlCellTypeBlanks) = "SANS CATEGORIE"
Set SKU = OE.Range("A2:A" & OE.Range("A2").End(xlDown).Row)
Set QUANTITE = OE.Range("C2:C" & OE.Range("C2").End(xlDown).Row)
Set PRIX = OE.Range("G2:G" & OE.Range("G2").End(xlDown).Row)
Set CATEGORIE = OE.Range("L2:L" & OE.Range("L2").End(xlDown).Row)
Set ProductIdType = OE.Range("C2:C" & OE.Range("C2").End(xlDown).Row) 'déja attribué à QUANTITE ?
Set ItemCondition = OE.Range("E2:E" & OE.Range("E2").End(xlDown).Row)
Set AddDelete = OE.Range("G2:G" & OE.Range("G2").End(xlDown).Row) 'déja attribué à PRIX ?
Set WillShip = OE.Range("H2:H" & OE.Range("H2").End(xlDown).Row)
Set ExpeditedShipping = OE.Range("I2:I" & OE.Range("I2").End(xlDown).Row)
Set ItemNote = OE.Range("J2:J" & OE.Range("J2").End(xlDown).Row)
Set Fulfillment = OE.Range("K2:K" & OE.Range("K2").End(xlDown).Row)
SKU.Copy OM.Range("A2")
SKU.Copy OM.Range("B2") 'pourquoi deux fois ?
PRIX.Copy OM.Range("D2")
Worksheets("majamazonFR").Paste
Worksheets("EXPORT").Activate
QUANTITE.Copy OM.Range("F2")
'CATEGORIE.Copy OM.Range("L2")
Application.ScreenUpdating = False
lifin = OE.Range("A" & Rows.Count).End(xlUp).Row
For li = 2 To lifin
If Left(OE.Range("A" & li), 1) = "B" Then
OM.Range("C" & li).Value = 1
Else
OM.Range("C" & li).Value = 4
End If
Next li
Set rng = OM.Range("A1").CurrentRegion
rng.Columns(5).SpecialCells(xlCellTypeBlanks) = "11"
rng.Columns(7).SpecialCells(xlCellTypeBlanks) = "a"
rng.Columns(8).SpecialCells(xlCellTypeBlanks) = "19"
rng.Columns(9).SpecialCells(xlCellTypeBlanks) = "N"
rng.Columns(10).SpecialCells(xlCellTypeBlanks) = "Envois quotidiens à la levée de 17h. LE spécialiste du voyage sur majamazonFR. Envois quotidiens, protégés. Satisfait ou remboursé. Plus de 5000 références dédiées au voyage (Récits, guides, rando, cartes, beaux livres, jeunesse...)"
rng.Columns(11).SpecialCells(xlCellTypeBlanks) = "DEFAULT"
ChDir "C:\Users\Gérard\Desktop"
CC.SaveAs Filename:="C:\Users\Gérard\Desktop\majamazonFR.txt", _
FileFormat:=xlText, CreateBackup:=False
OE.Range("A1").Cells.Clear
OM.Rows("2:65536").EntireRow.Delete
CC.Save
Application.ScreenUpdating = True
End Sub
Merci de votre réponse, si rapide !
Une erreur (méthode paste classe worksheet) à cet endroit :
Worksheets("majamazonFR").Paste
Sinon, oui SKU à copier 2 fois, et mea culpa pour les 2 autres !
Une erreur (méthode paste classe worksheet) à cet endroit :
Worksheets("majamazonFR").Paste
Sinon, oui SKU à copier 2 fois, et mea culpa pour les 2 autres !
ThauTheme
Messages postés
1442
Date d'inscription
mardi 21 octobre 2014
Statut
Membre
Dernière intervention
29 juillet 2022
160
17 juin 2017 à 17:18
17 juin 2017 à 17:18
Re,
Oui désolé ces deux lignes sont à supprimer dans le code. J'ai oublié de le faire :
Mais bon, tu aurais dû le voir par toi-même !...
Oui désolé ces deux lignes sont à supprimer dans le code. J'ai oublié de le faire :
Worksheets("majamazonFR").Paste
Worksheets("EXPORT").Activate
Mais bon, tu aurais dû le voir par toi-même !...
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Hello ThauTheme,
Je ne comprends pas, ce matin cela ne fonctionne plus :
J'ai l'erreur "Impossible de définir la propriété SpecialCells de la classe Range"
à cette ligne là :
rng.Columns(5).SpecialCells(xlCellTypeBlanks) = "11"
???
Je ne comprends pas, ce matin cela ne fonctionne plus :
J'ai l'erreur "Impossible de définir la propriété SpecialCells de la classe Range"
à cette ligne là :
rng.Columns(5).SpecialCells(xlCellTypeBlanks) = "11"
???