copier coller en VBA - limiter les cellules

bloublou

XLDnaute Occasionnel
Bonjour à tous,

J'ai souci pour faire un copier coller en VBA qui ferait :

- S'assurer que la la cellule ne dépasse pas 35 caractères :
=> si > la cellule est coupée :confused:
=> si < la cellule est bouchée par des espaces pour arriver à 35 caractères. :confused::confused::confused:


- Mettre toutes les lignes de la colonne A en majusculesJe joints un petit fichier :cool:

- Copier coller les colonnes A et C sur la feuille Résultat en colonne A et B

Si quelqu'un à une idée ?

Merci de votre aide

BlouBlou
 

Pièces jointes

  • alimentation.xlsx
    9.9 KB · Affichages: 37

job75

XLDnaute Barbatruc
Re : copier coller en VBA - limiter les cellules

Bonjour bloublou,

Voyez cette macro dans le fichier joint :

Code:
Sub Résultat()
Dim colA, colC, i As Long, t As String
colA = Range("A2:A3", Range("A" & Rows.Count).End(xlUp)) 'au moins 2 éléments
colC = [C2].Resize(UBound(colA))
For i = 1 To UBound(colA)
  t = UCase(Left(colA(i, 1), 35)) 'majuscules
  colA(i, 1) = t & String(35 - Len(t), " ")
Next
'---restitution---
With Sheets("Résultat")
  .Range("A2:B" & .Rows.Count).ClearContents 'RAZ
  .[A2].Resize(UBound(colA)) = colA
  .[B2].Resize(UBound(colC)) = colC
  .Activate
End With
End Sub
Edit 1 : salut Robert :)

Edit 2 : le test If Len(t) < 35 était inutile.

A+
 

Pièces jointes

  • alimentation(1).xls
    43.5 KB · Affichages: 24
Dernière édition:

bloublou

XLDnaute Occasionnel
Re : copier coller en VBA - limiter les cellules

Bonjour le forum, Robert, job75,

Merci pour le code ca marche nickel :) :)

Juste une question pour cette ligne :

colC = [C2].Resize(UBound(colA))

Je ne comprends pas tout avec les mots clés Resize et UBound.

Merci en tout cas

BlouBlou
 

job75

XLDnaute Barbatruc
Re : copier coller en VBA - limiter les cellules

Bonjour bloublou, Robert,

ColA et ColC sont des matrices de valeurs.

La variable ColC ici n'est pas indispensable, je l'ai créée pour le cas où l'on voudrait modifier ou mettre en forme (majuscules) les valeurs de la colonne C.

Ubound(ColA) renvoie le nombre de valeurs *** de la matrice ColA.

[C2].Resize(UBound(colA)) définit la plage commençant en C2 et de hauteur UBound(ColA).

Edit : *** plus précisément l'index de la dernière valeur de ColA.

Tout ça est expliqué dans l'Aide VBA.

A+
 
Dernière édition:

Discussions similaires

Réponses
56
Affichages
905
Réponses
6
Affichages
362

Statistiques des forums

Discussions
311 711
Messages
2 081 792
Membres
101 817
dernier inscrit
carvajal