Microsoft 365 VBA

blancolie

XLDnaute Impliqué
Bonjour le forum,

j'aimerais comprendre certaines expressions trouver ds le codage VBA.

tablo(i, 4)) : le i veut dire quoi et tablo également ?
For i ?

merci de votre aide
 

patricktoulon

XLDnaute Barbatruc
bonsoir

déclaration 1 variable:
Dim mavariable as long

déclaration 2 et plus normale
Dim mavariable1 as long
dim mavariable2 as string

la même sur une seule ligne
dim mavariable1 as long , mavariable2 as string

la même sur une seule ligne et abrégée
dim mavariable1& , mavariable2$

pour les format abrégés
& correspond à as long 'numérique limité de -2 147 483 648 à 2 147 483 647
$ correspond à as string' texte
# correspond à as double' numérique avec decimal ou gros chiffre
% correspond à as integer ' numérique limité à de -32 768 à 32 767

il faudra aussi apprendre et connaitre la NOTION DE globale , globale module , public , private et static
 

patricktoulon

XLDnaute Barbatruc
re
ben soit tu a oublié de la dimer

soit elle est dimée en haut de module , on dit alors que c'est une variable globale module(utilisable dans toutes les sub du module sans la re déclarer )

et si elle est dimée en "PUBLIC" alors c'est une variable globale workbook (utilisable dans tout les module du classeur sans la re déclarer )
 

blancolie

XLDnaute Impliqué
Voila la macro :

VB:
Sub Macro1()
Dim Num_Ligne As Long
    Num_Ligne = 2 
    Application.DisplayAlerts = False
    While Cells(Num_Ligne, 1) <> ""
        Ligne_Fin = Num_Ligne
        While Cells(Ligne_Fin, 1) = Cells(Ligne_Fin + 1, 1)
             Ligne_Fin = Ligne_Fin + 1
        Wend
        With Range(Cells(Num_Ligne, 1), Cells(Ligne_Fin, 1))
            .HorizontalAlignment = xlLeft
            .VerticalAlignment = xlCenter
            .MergeCells = True
        End With
        Num_Ligne = Ligne_Fin + 1
    Wend
    Application.DisplayAlerts = True
End Sub
 

patricktoulon

XLDnaute Barbatruc
oui bon il est pas déclarée
mais si je comprends ton intention c'est de repérer la plage pleine en "A" pour y appliquer les propriétés
bon le merge me perturbe un peu sachant que seule la valeur de le ligne 2 sera gardée

bref si tu m'explique en terme non informatique peut etre je comprendrait mieux
 

patricktoulon

XLDnaute Barbatruc
re

comme je connais pas le contexte

solution1 jusqu'a la dernière ligne non vide en partant d'en bas pour la next ligne
VB:
set f= sheets("le nom de la feuille")
with f.range(f.cells(2,1),f.cells(rows.count,1).end(xlup)
  .HorizontalAlignment = xlLeft
  .VerticalAlignment = xlCenter
  .MergeCells = True
end with

solution 2 jusqu'a la derniere ligne en partant de la 2 pour la next ligne
si il y a une cellule de vide entre deux ca s'arrete juste avant cette ligne vide

VB:
set f= sheets("le nom de la feuille")
with f.range(f.cells(2,1),f.cells(2,1).end(xldown)
  .HorizontalAlignment = xlLeft
  .VerticalAlignment = xlCenter
  .MergeCells = True
end with[/CODE

mais attention je réhitere mon avertissement sur la non logique de ta démarche(peut etre ne le sais tu pas)
en effet le mergecells=true va supprimer toutes les valeurs sauf la ligne 2 qu'il gardera dans tes cellules fusionnées
 

Statistiques des forums

Discussions
312 217
Messages
2 086 353
Membres
103 195
dernier inscrit
martel.jg