Vba excel boucle for

Résolu
Bonjour,

voila je vous expose mon probleme :

j'ai créer une dll sous c++ (test_dll) avec une lib comportan une fonction avec plusieurs variables,

function de la lib

void__stdcal toto(BSTR A, BSTR B, BSTR C)
{
....
}

ensuite j'ai declarer ma lib sous vba

Module1

Private Declare Sub toto Lib "test_dll.dll" (ByVal A As String, ByVal B As String, ByVal CAs String)

et pour faire appel a la fonction de ma lib j'ai réalisé la procedure suivante:

Sub test()

'Déclaration des variables
Dim A As String
Dim B As String
Dim C As String

'Valeurs des variables

A = Feuil2.Range("A2").Value
B = Feuil2.Range("B2).Value
C = Feuil2.Range("C2).Value

'Call la dll

toto A, B, C

End Sub

Et un bouton dans un userform qui me permet d'appeler la procedure

Private Sub CommandButton1_Click()

Call module1.test

End Sub

et ca marche super

mon code me permet d'appeler la fonction de ma lib en lui affectant les données de la ligne A2 C2

mais je dispose d'un tableau de plusieurs lignes (A1:C500) avec bien sure A1:C1 comme entetes du tableau

ma question : comment je pourrais mettre en place une boucle for

qui me permettra d'appeler la fonction de ma lib pour chaque ligne

j'espere que j'etais claire

merci de votre aide

cordialement

je ne peu mettre le fichier exemple car il faut avoir les dll sous windows --> systeme32

4 réponses

  • Votes
  • Date
  • Date décroissante
  1. Bonjour,

    Sub test()
      'Déclaration des variables
      Dim A As String
      Dim B As String
      Dim C As String
      Dim Plage As Range
      Dim Cel As Range
    
      With Feuil2
        Set Plage = .Range("A2:A500")
        'Valeurs des variables
        For Each Cel In Plage
          A = .Range("A" & Cel.Row).Value
          B = .Range("B" & Cel.Row).Value
          C = .Range("C" & Cel.Row).Value
    
          'Call la dll
          toto A, B, C
        Next Cel
      End With
    End Sub


    Bonne suite
    1. Bonjour et merci mille fois pour votre aide ca marche super bien
      merci, merci, merci, merci, merci, merci

      Je vous souhaite une bonne journée

      Cordialement
      1. serait-il possible de m'expliquer un peu votre code SVP

        merci

        Cordialement
        1. Bonjour,

          Sub test()
            'Déclaration des variables
            Dim A As String
            Dim B As String
            Dim C As String
            Dim Plage As Range
            Dim Cel As Range
            'Definition d'un bloc with end with pour Feuil2
            'Tous les objets ayant un point (.Range("A2:A500")) sont de la feuil2
            With Feuil2
              'Definition de la plage de cellules a tester
              Set Plage = .Range("A2:A500")
              'Valeurs des variables
              'Pour chaque cellule ou range dans la plage Plage("A2:A500")
              For Each Cel In Plage
                'Cel definie comme range: Cel.Row donne la ligne, Cel.Column donne la colonne
                'de la cellule testee (vous avez toutes les proprietes d'une cellule ou range)
                A = .Range("A" & Cel.Row).Value
                B = .Range("B" & Cel.Row).Value
                C = .Range("C" & Cel.Row).Value
          
                'Call la dll
                toto A, B, C
              Next Cel
            End With
          End Sub