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
 

Fichiers joints

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+
 

Fichiers joints

Dernière édition:

Robert

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

Bonsoir Bloublou, Job, bonsoir le forum,

Arf... Grillé par Job ! Je propose même pas tellement son code est mieux...
 

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:

bloublou

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

Bonjour job75,

Merci de ton aide et des tes explications.

BlouBlou
 

Haut Bas