Fonction tablo vba
Résolu/Fermé
A voir également:
- Fonction tablo vba
- Erreur 1004 vba ✓ - Forum VB / VBA
- Fonction find vba - Astuces et Solutions
- Fonction si et - Guide
- L'indice n'appartient pas à la sélection vba - Forum VB / VBA
- Vba range avec variable ✓ - Forum VB / VBA
3 réponses
yg_be
Messages postés
21304
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
18 mars 2023
1 325
15 mars 2021 à 11:55
15 mars 2021 à 11:55
bonjour,
dommage, tu n'expliques ni ce que tu as essayé, ni l'erreur obtenue.
je n'ai pas testé, mais je suggère de remplacer C par J en ligne 19,
de remplacer tablo(i, 3) par tablo(i, 10),
et, dans le resize, remplacer 3 par UBound(tablo, 2).
dommage, tu n'expliques ni ce que tu as essayé, ni l'erreur obtenue.
je n'ai pas testé, mais je suggère de remplacer C par J en ligne 19,
de remplacer tablo(i, 3) par tablo(i, 10),
et, dans le resize, remplacer 3 par UBound(tablo, 2).
Oui exactement.
C'est à dire que si dans la colonne "Etat" de la feuille Statut, il y a un "O" et un "F" dans la même colonne mais de l'autre feuille, alors le "O" se transforme en "F".
S'il y a un "O" de chaque coté, rien ne se passe
Et s'il y a un "F" de chaque coté rien ne se passe.
C'est à dire que si dans la colonne "Etat" de la feuille Statut, il y a un "O" et un "F" dans la même colonne mais de l'autre feuille, alors le "O" se transforme en "F".
S'il y a un "O" de chaque coté, rien ne se passe
Et s'il y a un "F" de chaque coté rien ne se passe.
yg_be
Messages postés
21304
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
18 mars 2023
1 325
15 mars 2021 à 15:52
15 mars 2021 à 15:52
peux-tu montrer ton code adapté?
merci de tenir compte de ceci: https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
merci de tenir compte de ceci: https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
Francois
>
yg_be
Messages postés
21304
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
18 mars 2023
Modifié le 15 mars 2021 à 16:02
Modifié le 15 mars 2021 à 16:02
Le code source qui fonctionnait selon ce modèle (j'espère que c'est ceci que tu entendais par code adapté).
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:C" & fs.Range("A" & Rows.Count).End(xlUp).Row)
tabloE = fea.Range("A1").CurrentRegion
For i = 3 To UBound(tablo, 1)
If tablo(i, 3) = "O" Then
For iE = 3 To UBound(tabloE, 1)
If "XXX_" & tablo(i, 1) Like tabloE(iE, 1) And tabloE(i, 10) = "F" Then
tablo(i, 3) = "F"
End If
Next iE
End If
Next
Range("A1").Resize(UBound(tablo, 1), 3) = tablo
End Sub
yg_be
Messages postés
21304
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
18 mars 2023
1 325
>
Francois
15 mars 2021 à 16:07
15 mars 2021 à 16:07
peux-tu montrer le code après que tu l'ai adapté pour le changement de colonne, pas celui qui se trouve dans le fichier que tu as envoyé?
Francois
>
yg_be
Messages postés
21304
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
18 mars 2023
15 mars 2021 à 16:09
15 mars 2021 à 16:09
Pardon j'ai mal compris, le voici :
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)
If tablo(i, 3) = "O" Then
For iE = 3 To UBound(tabloE, 1)
If "NCR_" & 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), 2) = tablo
End Sub
yg_be
Messages postés
21304
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
18 mars 2023
1 325
>
Francois
15 mars 2021 à 16:15
15 mars 2021 à 16:15
tu n'as pas remplacé partout tablo(i, 3) par tablo(i, 10),
en ligne 29, tu n'as pas remplacé le 3 par UBound(tablo, 2).
en ligne 29, tu n'as pas remplacé le 3 par UBound(tablo, 2).
Dis moi si ça te semble bon ?
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)
If tablo(i, 10) = "O" Then
For iE = 3 To UBound(tabloE, 1)
If "NCR_" & 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, 2)) = tablo
End Sub
yg_be
Messages postés
21304
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
18 mars 2023
1 325
15 mars 2021 à 17:25
15 mars 2021 à 17:25
la ligne 29 n'est pas correcte.
regarde comment elle était au départ.
ensuite, remplace
cela donne quoi?
regarde comment elle était au départ.
ensuite, remplace
3par
UBound(tablo, 2).
cela donne quoi?
Francois
>
yg_be
Messages postés
21304
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
18 mars 2023
15 mars 2021 à 19:20
15 mars 2021 à 19:20
J'avais mal compris, ça fonctionne, merci beaucoup !
Et très bonne soirée à toi.
Et très bonne soirée à toi.
Francois
>
yg_be
Messages postés
21304
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
18 mars 2023
29 mars 2021 à 14:53
29 mars 2021 à 14:53
Bonjour Yg_be,
Je réactive ce post concernant une petite demande, sur le même exemple que précédemment, je voulais utiliser la fonction Ubound(tablo) dans le cas ou mes colonnes ne seraient pas A et J mais B et J comme dans l'exemple :
"Onglet1(Statut) : Colonne 2(B) et Colonne 10 (J)
Onglet2(En attente) : Colonne 2(B) et Colonne 10 (J)"
Ma question est la suivante, j'ai essayé d'adapter le code pour le transformer avec l'exemple ci-dessus, mais même si celui-ci ne me retourne pas d'erreur, je n'ai aucun résultat quand je lance la macro.
Aurais-tu une idée ?
Merci d'avance.
Code :
Je réactive ce post concernant une petite demande, sur le même exemple que précédemment, je voulais utiliser la fonction Ubound(tablo) dans le cas ou mes colonnes ne seraient pas A et J mais B et J comme dans l'exemple :
"Onglet1(Statut) : Colonne 2(B) et Colonne 10 (J)
Onglet2(En attente) : Colonne 2(B) et Colonne 10 (J)"
Ma question est la suivante, j'ai essayé d'adapter le code pour le transformer avec l'exemple ci-dessus, mais même si celui-ci ne me retourne pas d'erreur, je n'ai aucun résultat quand je lance la macro.
Aurais-tu une idée ?
Merci d'avance.
Code :
Set fs = Sheets("Statut")
Set fea = Sheets("En attente")
tablo = fs.Range("B1:J" & fs.Range("A" & Rows.Count).End(xlUp).Row)
tabloE = fea.Range("B1").CurrentRegion
For i = 3 To UBound(tablo, 1)
If tablo(i, 10) = "O" Then
For iE = 3 To UBound(tabloE, 1)
If "NCR_" & 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("B1").Resize(UBound(tablo, 1), UBound(tablo, 2)) = tablo
yg_be
Messages postés
21304
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
18 mars 2023
1 325
>
Francois
29 mars 2021 à 16:24
29 mars 2021 à 16:24
en ligne 5, peut-être remplacer "A" par "B".
comme c'est écrit, il utilise la colonne A pour déterminer la dernière ligne du tableau.
comme c'est écrit, il utilise la colonne A pour déterminer la dernière ligne du tableau.
Francois
>
yg_be
Messages postés
21304
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
18 mars 2023
29 mars 2021 à 16:45
29 mars 2021 à 16:45
Merci beaucoup pour ton retour.
Quand je fais cette modification, j'obtiens une erreur sur cette ligne : "If tablo(i, 10) = "O" Then" (erreur 9)
Quand je fais cette modification, j'obtiens une erreur sur cette ligne : "If tablo(i, 10) = "O" Then" (erreur 9)
15 mars 2021 à 14:30
Je suis désolé pour mon approximation. Dans ce que j'ai essayé il y a ceci :
"remplacer C par J en ligne 19, " & "remplacer tablo(i, 3) par tablo(i, 10), ".
J'ai effectué tous les changements que tu m'as conseillé. Cependant je n'ai pas de retour d'erreur, mais pas le résultat voulu.
As-tu une autre idée à me proposer ?
Merci pour ton aide.
15 mars 2021 à 14:56