XL 2016 Utilisation de Ubond(tablo)

Hogwarts

XLDnaute Nouveau
Bonjour,

Je vous contacte concernant l'utilisation de la méthode Ubond(tablo).

Je vous pose mon souci, j'ai un deux onglets qui possèdent deux colonnes à des endroits similaires.

Onglet1(Statut) : Colonne 1(A) et Colonne 10 (J)
Onglet2(En attente) : Colonne 1(A) et Colonne 10 (J)

Le code compare les colonnes J de chaque onglet avec la présence ou non d'un "O" ou d'un "F".

Mon souci est que j'aimerais adapter le code au Colonne 2(B) pour chaque feuille à la place de la Colonne 1(A)

Merci d'avance pour votre aide.
 

Pièces jointes

  • identifiant-statut.xlsm
    17.7 KB · Affichages: 9

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Hogwarts,
tablo contient la colonne A en indice 1, la colonne B en indice 2 ....
Donc pour comparer les colonnes B, il suffit, je pense, de changer les indices colonnes :
VB:
If "XXX_" & tablo(i, 2) Like tabloE(iE, 2) And tabloE(i, 10) = "F" Then
En supposant que la colonne J ne change pas.
 

cp4

XLDnaute Barbatruc
Bonjour Hogwarts,

Si J'ai vraiment compris ta question, il faudrait qu'il y ait des données dans les colonnes B.
Ensuite pourquoi tes boucles commencent à 3 au lieu de 1. En effet, tu boucles sur les éléments d'un array pas sur les lignes de la feuille.
VB:
Option Explicit

Dim tablo, tabloE, fs As Worksheet, fea As Worksheet
Dim i&, iE&

Sub MettreAjour()
   
    Set fs = Sheets("Statut")
    Set fea = Sheets("En attente")
 
    tablo = fs.Range("A1:J" & fs.Range("A" & Rows.Count).End(xlUp).Row)
   
    tabloE = fea.Range("A1").CurrentRegion
 
    For i = 3 To UBound(tablo, 1) '**Pourquoi i comme à 1 **
        If tablo(i, 10) = "O" Then
           
            For iE = 3 To UBound(tabloE, 1) '** Pourquoi iE comme à 1 **
                If "XXX_" & tablo(i, 1) Like tabloE(iE, 1) And tabloE(i, 10) = "F" Then
                    tablo(i, 10) = "F"
                End If
            Next iE
        End If
    Next
    Range("A1").Resize(UBound(tablo, 1), UBound(tablo, 2)) = tablo
   
End Sub

edit: Oups! pas vu. Bonjour Sylvanu;)
 
Dernière édition:

Hogwarts

XLDnaute Nouveau
Bonjour,
Et merci pour votre réponse à tous les deux.
J'ai surement manqué de précision.
Voici ci-joint le cas de figure dans lequel j'aimerais que mon fichier fonctionne, j'ai effectué quelques transformations avec la ligne de Sylvanu et en remplaçant la colonne "A" par "B" à chaque fois. Cela me retourne cependant une erreur à cette ligne :
VB:
 If tablo(i, 10) = "O" Then
 

Pièces jointes

  • identifiant-statut.xlsm
    19.1 KB · Affichages: 6

Hogwarts

XLDnaute Nouveau
Bonjour Hogwarts,

Si J'ai vraiment compris ta question, il faudrait qu'il y ait des données dans les colonnes B.
Ensuite pourquoi tes boucles commencent à 3 au lieu de 1. En effet, tu boucles sur les éléments d'un array pas sur les lignes de la feuille.
VB:
Option Explicit

Dim tablo, tabloE, fs As Worksheet, fea As Worksheet
Dim i&, iE&

Sub MettreAjour()
  
    Set fs = Sheets("Statut")
    Set fea = Sheets("En attente")

    tablo = fs.Range("A1:J" & fs.Range("A" & Rows.Count).End(xlUp).Row)
  
    tabloE = fea.Range("A1").CurrentRegion

    For i = 3 To UBound(tablo, 1) '**Pourquoi i comme à 1 **
        If tablo(i, 10) = "O" Then
          
            For iE = 3 To UBound(tabloE, 1) '** Pourquoi iE comme à 1 **
                If "XXX_" & tablo(i, 1) Like tabloE(iE, 1) And tabloE(i, 10) = "F" Then
                    tablo(i, 10) = "F"
                End If
            Next iE
        End If
    Next
    Range("A1").Resize(UBound(tablo, 1), UBound(tablo, 2)) = tablo
  
End Sub

edit: Oups! pas vu. Bonjour Sylvanu;)
Bonjour Cp4, pour répondre à ta question concernant la boucle à partir de la ligne 3, c'est pour ne pas prendre en compte les lignes au dessus de la ligne 3. Du coup je pensais faire commencer mon Array à la ligne 3. Je ne sais pas si j'ai eu raison de procéder ainsi
 

Discussions similaires

Statistiques des forums

Discussions
312 251
Messages
2 086 623
Membres
103 266
dernier inscrit
moonie