Vba excel boucle for

Résolu
amine69500 Messages postés 471 Statut Membre -  
f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   -
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

  1. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    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
    0
  2. amine69500 Messages postés 471 Statut Membre 12
     
    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
    0
  3. amine69500 Messages postés 471 Statut Membre 12
     
    serait-il possible de m'expliquer un peu votre code SVP

    merci

    Cordialement
    0
  4. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    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
    
    0