Vba excel boucle for

Résolu/Fermé
amine69500 Messages postés 418 Date d'inscription lundi 8 juin 2009 Statut Membre Dernière intervention 25 août 2013 - 15 juin 2012 à 00:53
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 - 15 juin 2012 à 15:36
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
A voir également:

4 réponses

f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
15 juin 2012 à 07:44
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
amine69500 Messages postés 418 Date d'inscription lundi 8 juin 2009 Statut Membre Dernière intervention 25 août 2013 12
15 juin 2012 à 09:38
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
amine69500 Messages postés 418 Date d'inscription lundi 8 juin 2009 Statut Membre Dernière intervention 25 août 2013 12
15 juin 2012 à 09:42
serait-il possible de m'expliquer un peu votre code SVP

merci


Cordialement
0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
15 juin 2012 à 15:36
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