Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1677 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Perfo VBA

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Perfo VBA

n°2092804
phdenis
Posté le 02-08-2011 à 00:24:16  profilanswer
 

Bonjour,
 
Je suis entrain de développer une macro qui met en forme des cellules et recopie un grand nombre de donnée (500 lignes de 5 colonnes).
En cherchant sur google, j'ai vu que l'on pouvait soit passer par un tableau soit par l'indice.
 
D’après mes recherches, le fait de passer par un tableau permet de gagner beaucoup de temps.
La question que je me pose, est de savoir comment faire pour affecter dans 5 cellules des valeurs différentes.
 
Exemple:  
- Cellule A1 = "Legend1"
- Cellule B1 = "Legend2"
- Cellule C1 = "Legend3"
- Cellule D1 = "Legend4"
- Cellule E1 = "Legend5"
 
Merci d'avance pour votre aide ou si vous avez des liens.
Philippe

mood
Publicité
Posté le 02-08-2011 à 00:24:16  profilanswer
 

n°2092806
kiki29
Posté le 02-08-2011 à 00:39:12  profilanswer
 

Salut, ceci n'est qu'un exemple pour la concatenation de x feuilles d'un classeur dans une feuille dont le CodeName est ShConcat du même classeur, à toi de l'adapter à ton contexte


Option Explicit
 
Sub ConcatenationFeuilles()
Dim i As Long, T() As Variant
     
    Application.ScreenUpdating = False
    ShConcat.Cells.Clear
    For i = 1 To Sheets.Count
        If Sheets(i).Name <> ShConcat.Name Then
            With Sheets(i)
                T = .Range("A4:J" & .Range("A" & Rows.Count).End(xlUp).Row).Value
                ShConcat.Range("A" & Rows.Count).End(xlUp).Offset(1).Resize(UBound(T, 1), UBound(T, 2)) = T
            End With
        End If
    Next i
    Erase T
    Application.ScreenUpdating = True
End Sub

Message cité 1 fois
Message édité par kiki29 le 02-08-2011 à 00:41:40

---------------
Myanmar 90/91 : http://gadaud.gerard.free.fr/publi [...] index.html
n°2092876
phdenis
Posté le 02-08-2011 à 13:40:51  profilanswer
 

kiki29 a écrit :

Salut, ceci n'est qu'un exemple pour la concatenation de x feuilles d'un classeur dans une feuille dont le CodeName est ShConcat du même classeur, à toi de l'adapter à ton contexte


Option Explicit
 
Sub ConcatenationFeuilles()
Dim i As Long, T() As Variant
     
    Application.ScreenUpdating = False
    ShConcat.Cells.Clear
    For i = 1 To Sheets.Count
        If Sheets(i).Name <> ShConcat.Name Then
            With Sheets(i)
                T = .Range("A4:J" & .Range("A" & Rows.Count).End(xlUp).Row).Value
                ShConcat.Range("A" & Rows.Count).End(xlUp).Offset(1).Resize(UBound(T, 1), UBound(T, 2)) = T
            End With
        End If
    Next i
    Erase T
    Application.ScreenUpdating = True
End Sub



 
Bonjour,
Effectivement, je vais regarder ton exemple mais pour en revenir au 1er point de mon problème, je cherche à savoir si il est possible de modifier le texte de plusieurs cellules en passant par un tableau.
 
Car j'ai déjà une solution mais je cherche quelque chose de plus élégant et plus efficace (le texte Legendx est un texte bidon):  
- Cellule A1 = "Legend1"
- Cellule B1 = "Legend2"
- Cellule C1 = "Legend3"
- Cellule D1 = "Legend4"
- Cellule E1 = "Legend5"  
 

Code :
  1. ' Declare a range
  2.     Dim MyRang as Range
  3.     ' Define a range
  4.     Set MyRang = Range("A1" )
  5.    
  6.     ' For each cell, sets the associated value
  7.     With MyRang
  8.         .Value = "Legend1"
  9.         .Offset(0, 1).Value = "Legend2"
  10.         .Offset(0, 2).Value = "Legend3"
  11.         .Offset(0, 3).Value = "Legend4"
  12.         .Offset(0, 4).Value = "Legend5"
  13.     End With

n°2099380
neozenfrag​ance
Posté le 03-09-2011 à 19:22:05  profilanswer
 

Salut,
 
Si j'ai compris ta question, tu souhaites créer tes données dans un tableau et les transférer ensuite dans Excel :
 

Code :
  1. Option Base 1
  2. Sub Remplissage()
  3. Dim temp() As Variant, nbLg, nbCl, celluleCopie  As Range
  4. ' Définition du tableau
  5. nbLg = 500
  6. nbCl = 5
  7. ReDim temp(nbLg, nbCl)
  8. ' Remplissage du tableau
  9. For i = 1 To nbLg
  10.    
  11.     ref = "Legend" ' texte de référence à définir
  12.    
  13.     For j = 1 To nbCl
  14.         temp(i, j) = ref & j
  15.     Next
  16. Next
  17. ' Copie des données dans Excel
  18. Set celluleCopie = Cells(1, 1)
  19. celluleCopie.Resize(nbLg, nbCl) = temp
  20. End Sub



---------------
Si seulement tu connaissais le pouvoir du côté obscur. Obi-Wan ne t’a jamais dit ce qui est arrivé à ton père.

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Perfo VBA

 

Sujets relatifs
VBA - Problème avec ImageComboBoxMACRO VBA pour numérotation d'image Word
VBA CATIA V5 - Récupérer la langue de l'interface utilisateur[Excel/VBA] Supprimer les 0 extérieurs dans une donnée alphanumérique
[PPT/VBA] Changer tiret et couleurs de traits sur différents slides[Excel/VBA] Temps de calcul / Attente
[Excel/VBA] Selectionner des cellules contenant une certaine valeurInterface VBA/C++
Macros VBA : Excel 2003 vs Excel 2007Comparer 2 listes dans 2 onglets via macro VBA (Excel 2007)
Plus de sujets relatifs à : Perfo VBA


Copyright © 1997-2018 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR