- Ajout de valeur si pas présent dans colonne
- Déplacer colonne excel - Guide
- Trier colonne excel - Guide
- Colonne word - Guide
- Formule somme excel colonne - Guide
- Ajout snap sans rien d'écrit - Forum Snapchat
2 réponses
bonjour, les fautes de langages sont habituellement signalées au moment de la compilation.
est ce bon si je mets ce code VBA dans la feuille standard et dan l'onglet "worksheet activate"
le code doit automatiquement s'effectuer lorsque je vais sur la feuille standard ?
alors là avec mes modifications et mes checks à chaque étape je ne comprends pas pourquoi ...
voici mon code modifié:
Private Sub Worksheet_Activate()
Dim WkExt As Workbook, Wk As Workbook, tblData As ListObject, lnext As Integer, ln As Integer, i As Integer, j As Integer, c As Integer
Set WkExt = Workbooks("Coûts pieds en cours.xlsm")
lnext = Workbooks("Coûts pieds en cours.xlsm").Worksheets("BD_Catalogue").Cells(Rows.Count, 1).End(xlUp).Row
ln = Cells(Rows.Count, 1).End(xlUp).Row
Set tblData = Worksheets("STANDARD").ListObjects("tab_standard")
For i = 2 To lnext Step 1
For j = 2 To ln Step 1
If Workbooks("Coûts pieds en cours.xlsm").Worksheets("BD_Catalogue").Range("A" & i) = Workbooks("Nomenclature.xlsm").Worksheets("STANDARD").Range("A" & j) Then
i = i + 1
Else
j = j + 1
End If
Next
If j > Workbooks("Nomenclature.xlsm").Worksheets("STANDARD").Cells(Rows.Count, 1).End(xlUp).Row Then
Workbooks("Nomenclature.xlsm").Worksheets("STANDARD").Range("A" & j) = Workbooks("Coûts pieds en cours.xlsm").Worksheets("BD_Catalogue").Cells(i, 1).Value
i = i + 1
End If
Next
End Sub
a mon avis, ca ne peut qu'être la ligne en gras qui pose problème...
Pr contre je ne vois pas pourquoi ...
Quand je fais fonctionner ce code, des valeurs s'ajoutent ( des références qui figurent dan les deux fichiers donc e aucun cas elles devraient s'affichaient en bas du tableau standard)
j'ai testé avec un messagebox le résultat de : Workbooks("Coûts pieds en cours.xlsm").Worksheets("BD_Catalogue").Cells(i, 1).Value
qui est le bon
et la cellule Workbooks("Nomenclature.xlsm").Worksheets("STANDARD").Range("A" & j) est bonne aussi...
Mais les deux ensemble ca ne va pas ( je veux dire l'égalité)
avec vous une solution à me proposer car je sèche ... merci!
Voici les instructions pour partager ici un code lisible: https://codes-sources.commentcamarche.net/faq/11288-poster-un-extrait-de-code
Je vois encore au moins une ligne avec Cells sans spécification du classeur ni de la feuille.
Tu peux utiliser des variables de type WorkSheet, ce sera plus lisible.
Les noms de tes variables i et j ne sont pas très utiles.
.
As-tu des doutes à propos de l'exécution de l'instruction suivante?
Workbooks("Nomenclature.xlsm").Worksheets("STANDARD").Range("A" & j) = Workbooks("Coûts pieds en cours.xlsm").Worksheets("BD_Catalogue").Cells(i, 1).Value
Tu peux alors utiliser msgbox ou, de préférence, debug.print afin de comprendre ce qui se passe:
debug.print "copie, i: "+cstr(i)+ ",j: "+cstr(j) debug.print "valeur à copier: "+Workbooks("Coûts pieds en cours.xlsm").Worksheets("BD_Catalogue").Cells(i, 1).Value Workbooks("Nomenclature.xlsm").Worksheets("STANDARD").Range("A" & j) = Workbooks("Coûts pieds en cours.xlsm").Worksheets("BD_Catalogue").Cells(i, 1).Value debug.print "valeur après copie: "+Workbooks("Nomenclature.xlsm").Worksheets("STANDARD").Range("A" & j)
oui j'ai changé mes fautes :
j'ai mis woksheet(nom de la feuille) au lieu de feuil4
mais ca ne fait rien quand le code s'applique
Tu n'as pas expliqué en quoi ton code répondait à ton souhait.
Si tu souhaites comprendre ce que fait ton code, tu peux, par exemple, ajouter des instructions "msgbox" dans ton labyrinthe de boucles et de "if". Cela t'aidera à vérifier si ton code se comporte comme tu le souhaites. Tu peux aussi exécuter ton code pas à pas.
mon code ne répond pas à mon souhait car lorsque je rajoute une référence dans le tableau catalogue du classeur cout pieds en cours, cette référence ne 'ajoute pas automatiquement en fin du tableau standard dans le classeur nomenclature...
Il est préférable de ne pas laisser d'ambiguité, et de toujours completement qualifier le classeur et la feuille quand on utilise, par exemple, "range" ou "cells".