Ajout de valeur si pas présent dans colonne
Ferméyg_be Messages postés 22779 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 12 mai 2024 - 26 juil. 2022 à 17:49
- Ajout de valeur si pas présent dans colonne
- Déplacer une colonne excel - Guide
- Chaque fichier en ligne sur le web a un chemin d’accès sur un serveur. c’est le cas du fichier du logo présent sur la page de cette ville. quel est le chemin de ce fichier à partir de la racine du site ? - Forum Graphisme
- Excel vérifier si une valeur existe dans une colonne ✓ - Forum Excel
- Colonne word - Guide
- Le fichier contient une liste de prénoms. triez ce tableau par ordre alphabétique des prénoms. quel mot est formé par les 6 premières lettres de la colonne code ? - Forum Bureautique
2 réponses
26 juil. 2022 à 12:50
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 ?
26 juil. 2022 à 13:57
que signifie "fonctionner"?
Tu peux aussi utiliser "debug.print", qui affiche dans la fenêtre immédiate (que tu peux ouvrir via ctrl-G dans l'éditeur de code).
26 juil. 2022 à 13:59
Avec un "msgbox", tu peux facilement vérifier si le code s'exécute quand tu le souhaites.
26 juil. 2022 à 15:53
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!
26 juil. 2022 à 17:49
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)
26 juil. 2022 à 13:16
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
26 juil. 2022 à 13:32
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.
26 juil. 2022 à 13:34
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...
Modifié le 26 juil. 2022 à 13:52
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".