Se connecter avec
S'enregistrer | Connectez-vous

Contenu de cellule est une plage

Dernière réponse : dans Programmation

Bonjour,

Je 1 fichier excel qui contient plusieurs tableaux que je dois trier. je n'arrive pas à trouver le code pour déclarer en VBA que le contenu de ma cellule est une plage de cellule. Je passe par un tableau ou j'ai les plages des tableaux à trier)
Ce que j'ai trouvé s'est:
"Feuil1.Range([I1])"
Mais ça manque de souplesse car je n'arrive pas à lui mettre d'offset de décalage afin de l'intégrer dans une boucle suivant mes critères de tri.

Autres pages sur : contenu cellule plage

Lassé par la pub ? Créez un compte

Meilleure solution

Expert Programmation

Je l'avais mis en petit pour ne pas être vexant. Tant pis, je recommence en gros :

________________________________________________
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
Relis le règlement pour correctement publier ton code.
________________________________________________
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯


[:zeb:6]

Pour faire le trie du fichier j'utilise un tableau dans lequel je renseigné les différentes la plage des cellules qui m'intéresse. Et avec une macro "find" je renvoie la valeur qui se trouve 1 ou 2 colonne plus à droite suivant un critère dans un tableau. J'espère avoir été plus clair. Merci

J'ai mis la totalité du code mais le problème est après le commentaire entre tirets. Ca fonctionne mais ce n'est pas souple car je voulais y mettre directement l'offset pour continuer ensuite .

MERCI


Sub FIND()

Dim recherchev As Worksheet
For col = 0 To 14
Dim Dec As Integer 'décalage de colonne

Set recherchev = Feuil1
For n = 0 To 11

Dec = 1
'décalage de 1 colonne de la valeur à renvoyer dans le tableau quel que soit le type
Dim PLAGE As Range
Dim cel
Set PLAGE = Range("AC30:AF30")
For Each cel In PLAGE
If cel.Value = Range("AB30").Offset(0, col).Value Then
' Décalage de 2 colonne de la valeur à renvoyer si
Dec = 2
End If
Next cel

Feuil1.Range("I1") = Feuil1.Range("K3").Offset(0, n)
'Range("I1") égale à la plage de tri du moment décalage par l'offset
'Range("K3") correspond à la 1ere case de la liste de plage à trier

Dim x As Range
------------------------------------------------------------------------------------
C'est la ligne qui suit qui me gène je suis obligé de passer par la ligne du dessus et je pense qu'il existe plus simple.
dans les cellules K3:V11 il n'y a que des plages
------------------------------------------------------------------------------------
Set x = recherchev.Range([I1]).FIND(Range("AB30").Offset(0, col).Value, , xlValues, xlWhole, , , False)
'Range([I1]) reconnait le contenu comme une référence de cellule qui correspond à la plage de tri du moment
'AB30 contient le texte à recherché
'AB31 correspond à la 1ere case à remplir

Range("AB31").Offset(n, col) = "vide" 'initialisation si pas trouver "texte"

If Not x Is Nothing Then
Range("AB31").Offset(n, col) = x.Offset(0, Dec)
End If
Next
Next

End Sub
Lassé par la pub ? Créez un compte