Automatisation VBA boucle for

lulu -  
chossette9 Messages postés 6855 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

Je me trouve actuellement face a une difficulté si quelqu'un peut m'aider.

en effet j'aimerais pour une feuille excel contenant des chiffres faire la différence des chiffre de la premier ligne avec ceux de la deuxieme ligne et mettre le résulta dans l'autre feuille excel. voici un exemple illustratif:

A B C D
8 3 5 7 est la ligne 1
2 4 2 4 est la ligne 2

ainsi dans la feuille 2 j'aurais comme resultat:

A B C D
6 -1 3 3 est la ligne 1 de feuil 2

mon bout de code est le suivant :

Worksheets(2).Range("A1").Value = Worksheets(1).Range("A1").Value - Worksheets(1).Range("A2").Value

Malheureusement il ne marche que pour une cellul. pas tres fort a construire des boucle qui pourrais m'aider a automatiser le resulta je solicite votre aide .

Cordialement.

1 réponse

  1. chossette9 Messages postés 6855 Date d'inscription   Statut Contributeur Dernière intervention   1 313
     
    Bonjour,

    Sub SoustraitLignes()
    Dim dercol as Integer
    Dim nbcol As Interger
    
    dercol = Range("A" & columns.Count).End(xlToLeft).Column
    
    for nbcol = 1 to Dercol
         Worksheets(2).Cells(1,nbcol) = Worksheets(1).Cells(1, nbcol) - Worksheets(1).Cells(2,nbcol)
    
    Next 
    
    End Sub


    Cordialement.
    0
    1. lulu
       
      salut
      merci pour ta reponse chaussette9. mais ton code fais la meme chose que le mien c'est a dire il ne donne que le résulta de la difference des deux lignes de la premiere colone. le résultat des autres colone ne sont pas afficher. car en une seul compilation je veux tous ces résultat c'est a dir une automatisation.
      Pitier y'aurais t'il quelqu'un pour m'aider???????
      0
    2. chossette9 Messages postés 6855 Date d'inscription   Statut Contributeur Dernière intervention   1 313
       
      Remplacer
      dercol = Range("A" & columns.Count).End(xlToLeft).Column
      par
      dercol = Worksheets(1).Range("A" & columns.Count).End(xlToLeft).Column 


      et ajouter nbcol derrière le Next.

      Et ça devrait fonctionner. Je viens de le tester chez moi, ça marche.
      0
    3. lulu
       
      toujour pas malgré plusieur recherche peut etre ai je omis un truc . pass moi ton code intégral afin que je puisse l'analyser.
      0
    4. chossette9 Messages postés 6855 Date d'inscription   Statut Contributeur Dernière intervention   1 313
       
      une méthode différente, qui ne fonctionne que s'il n'y a pas de cases vides dans la ligne A :
      Sub SoustraitLignes()
      Dim dercol As Integer
      Dim nbcol As Integer
      
      
      'détermine la dernière colonne de données
      dercol = Worksheets(1).Range("A" & 1).End(xlToRight).Column
      
      'pour chaque colonne
      For nbcol = 1 To dercol
          ' on soustrait la ligne 2 à la ligne 1, et on affiche le résultat en ligne 2 de la seconde feuille
           Worksheets(2).Cells(1, nbcol) = Worksheets(1).Cells(1, nbcol) - Worksheets(1).Cells(2, nbcol)
      
      Next nbcol
      
      End Sub
      0