Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Offset end(xldown)

  • Initiateur de la discussion Initiateur de la discussion Hoareau
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Hoareau

XLDnaute Occasionnel
Bonjour

Pourquoi cette selection de plage avec offset ne fonctionne pas

merci

Set champ = [A1:M100]

For Each C In champ
Select Case True

Case C.Text Like "Culture"
C.Interior.ColorIndex = 4

Range("C.Offset(0, -1), C.Offset(0, -1).End(xlDown)").Select
Selection.Interior.ColorIndex = 22
 
Re : Offset end(xldown)

Bonjour,

Pourquoi cette selection de plage avec offset ne fonctionne pas
enlève les guillemets du "range"...
Code:
Range(C.Offset(0, -1), C.Offset(0, -1).End(xlDown)).Select

ensuite les "select" sont rarement utiles en vba.... et pour finir, ton "select case" semble incorrect... mais comme nous n'avons qu'une partie du code...

bon après midi
@+
 
Re : Offset end(xldown)

Ci joint le reste du code dans fichier

J'ai des tableaux importés web, le nombre de lignes et la disposition n'est pas constante, n'étant pas pas un expert, j'essaie de me débrouiller avec les moyens du bord.

Le code de la feuille selectionne ce que je veux, me restze juste à copier vers récap

les seules constantes, sont les mots et la disposition du champ voulu

Je voudrais faire une récap des champs selectionnés, les uns derriere les autres sur la feuille récap.

merci
 

Pièces jointes

Re : Offset end(xldown)

Je viens de voir qu'il y à une petite erreur sans conséquences dans le code
Pour faire plus propre, remplace le CptLig = 0 du début par CptCol = 0
et j'ai oublié de déclarer la variable CptCol as Integer
@+
 
Re : Offset end(xldown)

Bonjour

J'essaiei de modifier le code pour ajouter des colones dans certains cas, mais cela bloque

Le code c'est celui du dernier fichier fourni

merci

Sub Cherche_Champ()

Dim cellCible As Range
Dim CptCol As Integer

Application.ScreenUpdating = False



CptCol = 0

For Each Cas In [ListeDesTypes]
If Not Cas = "" Then
Set A = [ColSource].Find(Cas)
Set B = Range(A.Offset(0, -1), A.Offset(0, -1).End(xlDown))
Set C = Range(A.Offset(0, -9), A.Offset(0, -5).End(xlDown))


Set D = Application.Union(B, C)


ColorCas
Set cellCible = Sheets("Recap").[A1].Offset(0, CptCol)
A.Copy Destination:=cellCible
B.Copy Destination:=cellCible.Offset(1, 0)
D.Copy Destination:=cellCible.Offset(1, 0)

CptCol = CptCol + 1

End If
Next Cas



Application.ScreenUpdating = True
End Sub

Sub ColorCas()
If Cas.Text Like "Mais" Then
Cas.Interior.ColorIndex = 4
A.Interior.ColorIndex = 4
D.Interior.ColorIndex = 46
 
Re : Offset end(xldown)

Bonjour Hoareau, bonjour Forum,

Dans le code proposé plus haut, [ColSource] est une plage définie directement dans la feuille excel. Si tu veux avoir une plus grande plage de recherche il te faut modifier la plage ColSource. Va voir dans la zone Nom, ou est indiquée l'adresse de la cellule sélectionnée. Si tu affiche le menu déroulant de cette zone, tu trouveras les plages déjà définies. Si tu veux en modifier une, il faudra au préalable la supprimer puis créer la plage dont tu as besoin en sélectionnant les cellules, lignes ou colonnes puis en renommant cette plage depuis la zone nom. N'oublies pas de valider avec entrée.
Tu peux aussi créer une plage à ta convenance et la nommer différemment. dans ce cas, il faudra remplacer le nom de la plage de recherche dans le code vba.
Les plages nommées ainsi peuvent êtres superposées si besoin.

Je trouve que cette méthode fais gagner de la place dans le code vba tout en le rendant plus lisible.

espérant avoir répondu à ta question.🙂
@+
Tech
 
Re : Offset end(xldown)

Désolé, mes connaissances en vba sont relativement limitées. J'apprends.

Quelqu'un d'autre que moi te donnera sans doute l'exemple.

Juste une chose. dans cette partie de code,
Code:
Set cellCible = Sheets("Recap").[A1].Offset(0, CptCol)
A.Copy Destination:=cellCible
B.Copy Destination:=cellCible.Offset(1, 0)
D.Copy Destination:=cellCible.Offset(1, 0)
tu copie B et D au même endroit. à mon avis, tu ne récupérera que ce qui se trouve dans D.

Bonne quête +
Tech
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
2
Affichages
398
  • Question Question
Microsoft 365 Probléme VBA
Réponses
8
Affichages
588
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…