Programmation VBA

obelix -  
Papou93 Messages postés 146 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,
je souhaite automatiser la création un nouveau tableau excel par le biais vba, a partir une extraction d'information rapatriée dans excel :
pour cela , j'ai besoin de compter le nombre de ligne (x)non vide , à partir de la lgne 8. il me faut copier les valeurs de la colonne B de la ligne 8 à ligne (8+x)de la feuille 1 et coller ces valeurs sur la feuille 2 à partir de la ligne 16 sur la colonne F. puis copier la colonne D de feuille 1 de la ligne (8 à 8+x-3) et coller les valleurs sur la feuille 2 dans la colonne G à partir de la ligne 16 et convertir ces valeurs en nombre.
je vous remercie d'avance de vous pencher sur ce probléme et de me coconseiller lpour la réalisation de mon projet
Configuration: Windows XP
Internet Explorer 7.0 ,excel XP

2 réponses

  1. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    Bonjour,

    Pourquoi vouloir utiliser vba pour qu'une cellule soit égale à une autre ? mettre dans F16 =feuil1!B8 dans ta 2nde feuille n'est pas suffisant ?

    Convertir valeur en nombre...
    si c'est 5 (le caractere) la conversion se fait toute seule. A la limite tu fais = 'ta_chaine_representant_un_nombre' * 1 pour forcer la conversion. Maintenant si ton nombre est inclu dans une chaine et que tu désires l'extraire il faudrait que l'on sache à quoi ressemble cette chaine

    eric
    0
  2. Papou93 Messages postés 146 Date d'inscription   Statut Membre Dernière intervention   59
     
    Bonjour obelix,

    Voici une façon de faire :

    Sub Copie()
    Dim Dlg As Long ' Variable représentant la dernière ligne du tableau
    
    ' Récupère le N° de la dernière ligne du tableau
    Dlg = Sheets("Feuil1").Range("B65536").End(xlUp).Row
    
    ' Recopie les cellules dans la feuille 2
    With Sheets("Feuil2")
      For lg = 8 To Dlg
        .Cells(lg, 6) = Sheets("Feuil1").Cells(lg, 2)
        If lg <= Dlg - 3 Then
          .Cells(lg, 7) = Sheets("Feuil1").Cells(lg, 4)
        End If
      Next
    End With
    
    End Sub


    Je pense que les commentaires se suffisent à eux-mêmes.
    Cette macro est à placer dans un module de code. Tu peux ensuite l'appeler par un événement de ton choix.

    Espérant t'avoir aidé,

    Cordialement.
    0