Bon ben parfait, j'ai changé et adapté merci.
petite idée pour la suite ? :mrgreen:
Version imprimable
Bon ben parfait, j'ai changé et adapté merci.
petite idée pour la suite ? :mrgreen:
Non justement c'est inutile ‼ Grâce à l'utilisation de l'objet en liaison tardive de la ligne n°6 …
Nico, ta fonction CountLig est bien aussi
mais cette fonctionnalité est déjà intégrée dans la ligne n°4 de ma fonction NbUnique via Cells( ).End …
Dans le code de ton post #20 les lignes n°28 & 29 peuvent donc être simplifiées ainsi :
Feuil3.Cells(9, 5).Value = NbUnique(Feuil1.[B2]) …
Feuil3.Cells(9, 7).Value = NbUnique(Feuil1.[C2]) …
Puis supprimer les lignes devenues inutiles n°17 à 27 ainsi que la fonction CountLig …
En clair, la procédure ne nécessite donc que les deux lignes ci-dessus !
Aller à l'essentiel, penser objet …
Redoutable, je n'avais pas saisi toute la subtilité de ta fonction ! :mrgreen:
Quant au Late Binding, c'est quelque chose que je maîtrise mal, je suis déjà entrain de lire assidûment le lien que tu as envoyé !
Seulement, j'ai l'impression qu'il manque une partie sur le CreateObject (Partie qui m'intéresse bien évidemment dans mes projets actuel).
Pour revenir au problème original, si je comprend bien, tu souhaite Ajouter une colonne dans l'onglet Resultat, comprenant "Non" ou "A Inventorier".
Ces deux mentions seront attribuer en fonction de l'onglet "A Enlever", c'est bien ça ?
Nico, j'ai édité mon précédent message.
Se référer aussi à l'aide VBA intégrée pour la fonction CreateObject …
Je te remercie ;)
Mon problème ne se limite pas à un simple CreateObject, ce n'est qu'une partie d'un tout et j'aimerais débroussailler un peu avant de balancer tout mon code en disant "Help, ça marche pas !"
Et je ne pense pas que ce soir le sujet de ce post ;)
Utilise une variable de type "String".
Avec cette variable, tu vas parcourir les numéros d'inventaire un par un en les stockant dans ta variable. Ensuite, tu va comparer cette variable aux numéros présent dans ton onglet "A ENLEVER".
En fonction de la comparaison, tu note Oui ou non.
Pour plus de rapidité d’exécution, je te conseil l'utilisation de variable tableau.
Mais ce n'étais pas une question de programmation, mais plutôt d'algorithme, encore une fois ;)
Bon comme tu m'as dit, pas de tableau. Mais j'ai un message d'erreur : La variable de controle For Each doit etre de type variant ou object.
Et je pense que ma partie après le Then n'est pas correcte non plus... Je voulais dire alors mettre OUI à la ligne comparée si la condition est respectée... :(
Code:
1
2
3
4
5
6
7
8
9
10
11
12 Sub Comparer2() Dim Cell As String Dim Cells As String For Each Cell In Worksheets("EXTRACTION").Range(2, 2).End(xlDown).Row For Each Cells In Worksheets("A ENLEVER").Range(1, 1).End(xlDown).Row If Cell.Value = Cells.Value Then Worksheet("EXTRACTION").Cells(i, 10) = "OUI" End If Next Next End Sub
Bonjour,
Méfie toi, tu déclare des Cell en String, et tu veux parcourir un Range !
Essaie de parcourir ton Range Ligne par Ligne.
Exemple:FYI : Range.Row renvoie le numéro de la première ligne de ta Range, et Range.Rows.Count compte le nombre d'objet "Row" dans ta Range, soit le nombre de ligne.Code:
1
2
3
4
5
6
7
8 Dim I as single Dim J as Single For I = MaRange.Row to MaRange.Rows.Count + MaRange.Row For J = MonAutreRange.Row to MonAutreRange.Row.Count + MonAutreRange.row 'Traitement Next J Next I
J'ai encore fauté je pense :
Je n'ai pas bien compris le For :(Code:
1
2
3
4
5
6
7
8
9
10
11 Sub Comparer2() Dim I As Single Dim J As Single For I = Worksheets("EXTRACTION").Range(2, 2).Row To Worksheets("EXTRACTION").Range(2, 2).Rows.Count + Worksheets("EXTRACTION").Range(2, 2).Row For J = Worksheets("A ENLEVER").Range(1, 1).Row To Worksheets("A ENLEVER").Range(1, 1).Row.Count + Worksheets("A ENLEVER").Range(1, 1).Row If I.value = J.Value Then Worksheets("EXTRACTION").Cells(2, 10) = "OUI" End If Next J Next I End Sub
J'ai qualificateur incorrect.
Ci-dessous je comprends mieux mais j'ai aussi qualificateur incorrect :
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14 Sub ComparerN°Inv2() Dim I As Single Dim J As Single For I = 1 To Worksheets("EXTRACTION").Range("B2").End(xlDown).Row For J = 1 To Worksheets("A ENLEVER").Range("A1").End(xlDown).Row If I.Value = J.Value Then Worksheets("EXTRACTION").Cells(I, 10).Value = "Oui" Else: Worksheets("EXTRACTION").Cells(I, 10).Value = "Non" End If Next I End Sub
Bonjour, bonjour !
B-A-BA : curseur dans le code sur Row puis appuyer sur la touche :f1: !
Bien lire le type de données renvoyé puis corriger la déclaration des variables I & J …
Ensuite, comme ce ne sont pas des variables objets, la propriété Value ne peut donc pas leur être rattachée …