-----Message d'origine-----
Bonjour Hélène,
Je ne suis pas sûr d'avoir compris le sens de ta question
mais essaie ceci :
Pour les valeurs 1,2,98,99 et 100
Dim Arr()
arr = Array(1, 2, 98, 99, 100)
Et pour les valeurs de 1à2 et de 98 à 100
Dim Arr1()
Arr1 = Array(1, 2, 98, 99, 100)
Tu cherches autre chose ?
Salutations!
"Helene" a écrit
dans le message de
news:2389b01c45e89$ca38b120$
Bonjour à tous
J'ai encore beaucoup de mal à utiliser des tableaux dans
VBA.
Voici mon problème : J'initialise un 1er tableau avec par
exemple les valeurs 1 à 100.
Puis un second tableau avec les valeurs 3 à 97
Je voudrais obtenir un 3 eme tableau qui contiendrai les
valeurs 1,2,98,99 et 100. Comment puis-je m'y prendre ?
Par ailleurs à partir de ce 3 eme tableau pourrais obtenir
les séries restantes : ex: de 1à2 et de 98 à 100 ?
Merci pour votre aide.
.
-----Message d'origine-----
Bonjour Hélène,
Je ne suis pas sûr d'avoir compris le sens de ta question
mais essaie ceci :
Pour les valeurs 1,2,98,99 et 100
Dim Arr()
arr = Array(1, 2, 98, 99, 100)
Et pour les valeurs de 1à2 et de 98 à 100
Dim Arr1()
Arr1 = Array(1, 2, 98, 99, 100)
Tu cherches autre chose ?
Salutations!
"Helene" <anonymous@discussions.microsoft.com> a écrit
dans le message de
news:2389b01c45e89$ca38b120$a501280a@phx.gbl...
Bonjour à tous
J'ai encore beaucoup de mal à utiliser des tableaux dans
VBA.
Voici mon problème : J'initialise un 1er tableau avec par
exemple les valeurs 1 à 100.
Puis un second tableau avec les valeurs 3 à 97
Je voudrais obtenir un 3 eme tableau qui contiendrai les
valeurs 1,2,98,99 et 100. Comment puis-je m'y prendre ?
Par ailleurs à partir de ce 3 eme tableau pourrais obtenir
les séries restantes : ex: de 1à2 et de 98 à 100 ?
Merci pour votre aide.
.
-----Message d'origine-----
Bonjour Hélène,
Je ne suis pas sûr d'avoir compris le sens de ta question
mais essaie ceci :
Pour les valeurs 1,2,98,99 et 100
Dim Arr()
arr = Array(1, 2, 98, 99, 100)
Et pour les valeurs de 1à2 et de 98 à 100
Dim Arr1()
Arr1 = Array(1, 2, 98, 99, 100)
Tu cherches autre chose ?
Salutations!
"Helene" a écrit
dans le message de
news:2389b01c45e89$ca38b120$
Bonjour à tous
J'ai encore beaucoup de mal à utiliser des tableaux dans
VBA.
Voici mon problème : J'initialise un 1er tableau avec par
exemple les valeurs 1 à 100.
Puis un second tableau avec les valeurs 3 à 97
Je voudrais obtenir un 3 eme tableau qui contiendrai les
valeurs 1,2,98,99 et 100. Comment puis-je m'y prendre ?
Par ailleurs à partir de ce 3 eme tableau pourrais obtenir
les séries restantes : ex: de 1à2 et de 98 à 100 ?
Merci pour votre aide.
.
-----Message d'origine-----
Bonjour Hélène,
Je ne suis pas sûr d'avoir compris le sens de ta question
mais essaie ceci :
Pour les valeurs 1,2,98,99 et 100
Dim Arr()
arr = Array(1, 2, 98, 99, 100)
Et pour les valeurs de 1à2 et de 98 à 100
Dim Arr1()
Arr1 = Array(1, 2, 98, 99, 100)
Tu cherches autre chose ?
Salutations!
"Helene" a écrit
dans le message de
news:2389b01c45e89$ca38b120$
Bonjour à tous
J'ai encore beaucoup de mal à utiliser des tableaux dans
VBA.
Voici mon problème : J'initialise un 1er tableau avec par
exemple les valeurs 1 à 100.
Puis un second tableau avec les valeurs 3 à 97
Je voudrais obtenir un 3 eme tableau qui contiendrai les
valeurs 1,2,98,99 et 100. Comment puis-je m'y prendre ?
Par ailleurs à partir de ce 3 eme tableau pourrais obtenir
les séries restantes : ex: de 1à2 et de 98 à 100 ?
Merci pour votre aide.
.
-----Message d'origine-----
Bonjour Hélène,
Je ne suis pas sûr d'avoir compris le sens de ta question
mais essaie ceci :
Pour les valeurs 1,2,98,99 et 100
Dim Arr()
arr = Array(1, 2, 98, 99, 100)
Et pour les valeurs de 1à2 et de 98 à 100
Dim Arr1()
Arr1 = Array(1, 2, 98, 99, 100)
Tu cherches autre chose ?
Salutations!
"Helene" <anonymous@discussions.microsoft.com> a écrit
dans le message de
news:2389b01c45e89$ca38b120$a501280a@phx.gbl...
Bonjour à tous
J'ai encore beaucoup de mal à utiliser des tableaux dans
VBA.
Voici mon problème : J'initialise un 1er tableau avec par
exemple les valeurs 1 à 100.
Puis un second tableau avec les valeurs 3 à 97
Je voudrais obtenir un 3 eme tableau qui contiendrai les
valeurs 1,2,98,99 et 100. Comment puis-je m'y prendre ?
Par ailleurs à partir de ce 3 eme tableau pourrais obtenir
les séries restantes : ex: de 1à2 et de 98 à 100 ?
Merci pour votre aide.
.
-----Message d'origine-----
Bonjour Hélène,
Je ne suis pas sûr d'avoir compris le sens de ta question
mais essaie ceci :
Pour les valeurs 1,2,98,99 et 100
Dim Arr()
arr = Array(1, 2, 98, 99, 100)
Et pour les valeurs de 1à2 et de 98 à 100
Dim Arr1()
Arr1 = Array(1, 2, 98, 99, 100)
Tu cherches autre chose ?
Salutations!
"Helene" a écrit
dans le message de
news:2389b01c45e89$ca38b120$
Bonjour à tous
J'ai encore beaucoup de mal à utiliser des tableaux dans
VBA.
Voici mon problème : J'initialise un 1er tableau avec par
exemple les valeurs 1 à 100.
Puis un second tableau avec les valeurs 3 à 97
Je voudrais obtenir un 3 eme tableau qui contiendrai les
valeurs 1,2,98,99 et 100. Comment puis-je m'y prendre ?
Par ailleurs à partir de ce 3 eme tableau pourrais obtenir
les séries restantes : ex: de 1à2 et de 98 à 100 ?
Merci pour votre aide.
.
-----Message d'origine-----
Bonjour Hélène,
Je ne suis pas sûr d'avoir compris le sens de ta question
mais essaie ceci :
Pour les valeurs 1,2,98,99 et 100
Dim Arr()
arr = Array(1, 2, 98, 99, 100)
Et pour les valeurs de 1à2 et de 98 à 100
Dim Arr1()
Arr1 = Array(1, 2, 98, 99, 100)
Tu cherches autre chose ?
Salutations!
"Helene" a écrit
dans le message de
news:2389b01c45e89$ca38b120$
Bonjour à tous
J'ai encore beaucoup de mal à utiliser des tableaux dans
VBA.
Voici mon problème : J'initialise un 1er tableau avec par
exemple les valeurs 1 à 100.
Puis un second tableau avec les valeurs 3 à 97
Je voudrais obtenir un 3 eme tableau qui contiendrai les
valeurs 1,2,98,99 et 100. Comment puis-je m'y prendre ?
Par ailleurs à partir de ce 3 eme tableau pourrais obtenir
les séries restantes : ex: de 1à2 et de 98 à 100 ?
Merci pour votre aide.
.
-----Message d'origine-----
Bonjour Hélène,
Je ne suis pas sûr d'avoir compris le sens de ta question
mais essaie ceci :
Pour les valeurs 1,2,98,99 et 100
Dim Arr()
arr = Array(1, 2, 98, 99, 100)
Et pour les valeurs de 1à2 et de 98 à 100
Dim Arr1()
Arr1 = Array(1, 2, 98, 99, 100)
Tu cherches autre chose ?
Salutations!
"Helene" <anonymous@discussions.microsoft.com> a écrit
dans le message de
news:2389b01c45e89$ca38b120$a501280a@phx.gbl...
Bonjour à tous
J'ai encore beaucoup de mal à utiliser des tableaux dans
VBA.
Voici mon problème : J'initialise un 1er tableau avec par
exemple les valeurs 1 à 100.
Puis un second tableau avec les valeurs 3 à 97
Je voudrais obtenir un 3 eme tableau qui contiendrai les
valeurs 1,2,98,99 et 100. Comment puis-je m'y prendre ?
Par ailleurs à partir de ce 3 eme tableau pourrais obtenir
les séries restantes : ex: de 1à2 et de 98 à 100 ?
Merci pour votre aide.
.
-----Message d'origine-----
Bonjour Hélène,
Je ne suis pas sûr d'avoir compris le sens de ta question
mais essaie ceci :
Pour les valeurs 1,2,98,99 et 100
Dim Arr()
arr = Array(1, 2, 98, 99, 100)
Et pour les valeurs de 1à2 et de 98 à 100
Dim Arr1()
Arr1 = Array(1, 2, 98, 99, 100)
Tu cherches autre chose ?
Salutations!
"Helene" a écrit
dans le message de
news:2389b01c45e89$ca38b120$
Bonjour à tous
J'ai encore beaucoup de mal à utiliser des tableaux dans
VBA.
Voici mon problème : J'initialise un 1er tableau avec par
exemple les valeurs 1 à 100.
Puis un second tableau avec les valeurs 3 à 97
Je voudrais obtenir un 3 eme tableau qui contiendrai les
valeurs 1,2,98,99 et 100. Comment puis-je m'y prendre ?
Par ailleurs à partir de ce 3 eme tableau pourrais obtenir
les séries restantes : ex: de 1à2 et de 98 à 100 ?
Merci pour votre aide.
.
-----Message d'origine-----
Bonjour,
Pourquoi ne transmets-tu pas ici la procédure que tu
utilises ?
Salutations!
a écrit dans le
message de news:23a6a01c45eab$c5de8650$
Merci pour la réponse je vais essayer de préciser ma
demande.
Le tableau1() que j'initialise contient une série continue
de nombres (de 1 à 100)Cela pouuait être par exemple une
série de tickets numérotés de 1 à 100
le tableau2() serait alors la liste des tickets vendus
dans mon exemple 3 à 97
je voudrais obtenir dans un 3 eme tableau, les tickets
resatnts soit dans mon exemple (1,2,98,99,100) et pouvoir
ensuite récuperer dans des cellules du classeur les séries
obtenues soit par exemple en A1 1 en B1 2; en A2 : 98 et
en B2 :100. est ce possible.
J'avais pensé utiliser If IsError(Application.Match()Mais
je n'arrive pas à trouver ce que je dois mettre après
Match.
Je serais très heureuse d'y parvenir
Merci-----Message d'origine-----
Bonjour Hélène,
Je ne suis pas sûr d'avoir compris le sens de ta question
mais essaie ceci :
Pour les valeurs 1,2,98,99 et 100
Dim Arr()
arr = Array(1, 2, 98, 99, 100)
Et pour les valeurs de 1à2 et de 98 à 100
Dim Arr1()
Arr1 = Array(1, 2, 98, 99, 100)
Tu cherches autre chose ?
Salutations!
"Helene" a écrit
dans le message denews:2389b01c45e89$ca38b120$
Bonjour à tous
J'ai encore beaucoup de mal à utiliser des tableaux dans
VBA.
Voici mon problème : J'initialise un 1er tableau avec par
exemple les valeurs 1 à 100.
Puis un second tableau avec les valeurs 3 à 97
Je voudrais obtenir un 3 eme tableau qui contiendrai les
valeurs 1,2,98,99 et 100. Comment puis-je m'y prendre ?
Par ailleurs à partir de ce 3 eme tableau pourrais
obtenir
les séries restantes : ex: de 1à2 et de 98 à 100 ?
Merci pour votre aide.
.
.
-----Message d'origine-----
Bonjour,
Pourquoi ne transmets-tu pas ici la procédure que tu
utilises ?
Salutations!
<anonymous@discussions.microsoft.com> a écrit dans le
message de news:23a6a01c45eab$c5de8650$a401280a@phx.gbl...
Merci pour la réponse je vais essayer de préciser ma
demande.
Le tableau1() que j'initialise contient une série continue
de nombres (de 1 à 100)Cela pouuait être par exemple une
série de tickets numérotés de 1 à 100
le tableau2() serait alors la liste des tickets vendus
dans mon exemple 3 à 97
je voudrais obtenir dans un 3 eme tableau, les tickets
resatnts soit dans mon exemple (1,2,98,99,100) et pouvoir
ensuite récuperer dans des cellules du classeur les séries
obtenues soit par exemple en A1 1 en B1 2; en A2 : 98 et
en B2 :100. est ce possible.
J'avais pensé utiliser If IsError(Application.Match()Mais
je n'arrive pas à trouver ce que je dois mettre après
Match.
Je serais très heureuse d'y parvenir
Merci
-----Message d'origine-----
Bonjour Hélène,
Je ne suis pas sûr d'avoir compris le sens de ta question
mais essaie ceci :
Pour les valeurs 1,2,98,99 et 100
Dim Arr()
arr = Array(1, 2, 98, 99, 100)
Et pour les valeurs de 1à2 et de 98 à 100
Dim Arr1()
Arr1 = Array(1, 2, 98, 99, 100)
Tu cherches autre chose ?
Salutations!
"Helene" <anonymous@discussions.microsoft.com> a écrit
dans le message de
news:2389b01c45e89$ca38b120$a501280a@phx.gbl...
Bonjour à tous
J'ai encore beaucoup de mal à utiliser des tableaux dans
VBA.
Voici mon problème : J'initialise un 1er tableau avec par
exemple les valeurs 1 à 100.
Puis un second tableau avec les valeurs 3 à 97
Je voudrais obtenir un 3 eme tableau qui contiendrai les
valeurs 1,2,98,99 et 100. Comment puis-je m'y prendre ?
Par ailleurs à partir de ce 3 eme tableau pourrais
obtenir
les séries restantes : ex: de 1à2 et de 98 à 100 ?
Merci pour votre aide.
.
.
-----Message d'origine-----
Bonjour,
Pourquoi ne transmets-tu pas ici la procédure que tu
utilises ?
Salutations!
a écrit dans le
message de news:23a6a01c45eab$c5de8650$
Merci pour la réponse je vais essayer de préciser ma
demande.
Le tableau1() que j'initialise contient une série continue
de nombres (de 1 à 100)Cela pouuait être par exemple une
série de tickets numérotés de 1 à 100
le tableau2() serait alors la liste des tickets vendus
dans mon exemple 3 à 97
je voudrais obtenir dans un 3 eme tableau, les tickets
resatnts soit dans mon exemple (1,2,98,99,100) et pouvoir
ensuite récuperer dans des cellules du classeur les séries
obtenues soit par exemple en A1 1 en B1 2; en A2 : 98 et
en B2 :100. est ce possible.
J'avais pensé utiliser If IsError(Application.Match()Mais
je n'arrive pas à trouver ce que je dois mettre après
Match.
Je serais très heureuse d'y parvenir
Merci-----Message d'origine-----
Bonjour Hélène,
Je ne suis pas sûr d'avoir compris le sens de ta question
mais essaie ceci :
Pour les valeurs 1,2,98,99 et 100
Dim Arr()
arr = Array(1, 2, 98, 99, 100)
Et pour les valeurs de 1à2 et de 98 à 100
Dim Arr1()
Arr1 = Array(1, 2, 98, 99, 100)
Tu cherches autre chose ?
Salutations!
"Helene" a écrit
dans le message denews:2389b01c45e89$ca38b120$
Bonjour à tous
J'ai encore beaucoup de mal à utiliser des tableaux dans
VBA.
Voici mon problème : J'initialise un 1er tableau avec par
exemple les valeurs 1 à 100.
Puis un second tableau avec les valeurs 3 à 97
Je voudrais obtenir un 3 eme tableau qui contiendrai les
valeurs 1,2,98,99 et 100. Comment puis-je m'y prendre ?
Par ailleurs à partir de ce 3 eme tableau pourrais
obtenir
les séries restantes : ex: de 1à2 et de 98 à 100 ?
Merci pour votre aide.
.
.
-----Message d'origine-----
Salut,
Pour la première partie
Voici un exemple à insérer dans un nouveau module.
Option Explicit
Option Base 1
Const BORNESUP = 100
Sub testDiff()
Dim tabA(BORNESUP) As Long
Dim tabB(BORNESUP) As Long
Dim tabC() As Long
Dim i As Long
' Initialisation des tableaux
For i = 1 To BORNESUP
tabA(i) = i
Next
For i = 1 To BORNESUP - 5
tabB(i) = i + 2
Next
' Insertion des éléments dans le tableau résultant
(tabC)
tabC = differenceTableau(tabA(), tabB())
' Affichage du le tableau résultant (tabC)
For i = LBound(tabC) To UBound(tabC)
Debug.Print tabC(i)
Next
End Sub
Function differenceTableau(a() As Long, b() As Long) As
Long()
Dim res() As Long
Dim indA As Long
Dim indRes As Long
indRes = 1
' Parcours des éléments de a
For indA = 1 To UBound(a)
' Si l'élément en cours n'est pas dans b
If Not rechercheVal(a(indA), b) Then
' On l'insère dans le tableau résultat
ReDim Preserve res(indRes)
res(indRes) = a(indA)
indRes = indRes + 1
End If
Next
differenceTableau = res
End Function
Function rechercheVal(val As Long, tableRes() As Long) As
Boolean
Dim i As Long
rechercheVal = False
For i = 1 To UBound(tableRes)
If val = tableRes(i) Then
rechercheVal = True
Exit For
End If
Next
End Function
En lançant la procédure testDiff. Ca doit marcher?
Pour l'écriture dans la feuille excel je ne comprends pas
la logique qui
permet de passer d'un tableau à une dimension (tabC) à
une feuille excel sur
deux dimensions?
A+
Rv
a écrit dans le
message de
news:23a6a01c45eab$c5de8650$
Merci pour la réponse je vais essayer de préciser ma
demande.
Le tableau1() que j'initialise contient une série continue
de nombres (de 1 à 100)Cela pouuait être par exemple une
série de tickets numérotés de 1 à 100
le tableau2() serait alors la liste des tickets vendus
dans mon exemple 3 à 97
je voudrais obtenir dans un 3 eme tableau, les tickets
resatnts soit dans mon exemple (1,2,98,99,100) et pouvoir
ensuite récuperer dans des cellules du classeur les séries
obtenues soit par exemple en A1 1 en B1 2; en A2 : 98 et
en B2 :100. est ce possible.
J'avais pensé utiliser If IsError(Application.Match()Mais
je n'arrive pas à trouver ce que je dois mettre après
Match.
Je serais très heureuse d'y parvenir
Merci-----Message d'origine-----
Bonjour Hélène,
Je ne suis pas sûr d'avoir compris le sens de ta question
mais essaie ceci :
Pour les valeurs 1,2,98,99 et 100
Dim Arr()
arr = Array(1, 2, 98, 99, 100)
Et pour les valeurs de 1à2 et de 98 à 100
Dim Arr1()
Arr1 = Array(1, 2, 98, 99, 100)
Tu cherches autre chose ?
Salutations!
"Helene" a écrit
dans le message denews:2389b01c45e89$ca38b120$
Bonjour à tous
J'ai encore beaucoup de mal à utiliser des tableaux dans
VBA.
Voici mon problème : J'initialise un 1er tableau avec par
exemple les valeurs 1 à 100.
Puis un second tableau avec les valeurs 3 à 97
Je voudrais obtenir un 3 eme tableau qui contiendrai les
valeurs 1,2,98,99 et 100. Comment puis-je m'y prendre ?
Par ailleurs à partir de ce 3 eme tableau pourrais
obtenir
les séries restantes : ex: de 1à2 et de 98 à 100 ?
Merci pour votre aide.
.
.
-----Message d'origine-----
Salut,
Pour la première partie
Voici un exemple à insérer dans un nouveau module.
Option Explicit
Option Base 1
Const BORNESUP = 100
Sub testDiff()
Dim tabA(BORNESUP) As Long
Dim tabB(BORNESUP) As Long
Dim tabC() As Long
Dim i As Long
' Initialisation des tableaux
For i = 1 To BORNESUP
tabA(i) = i
Next
For i = 1 To BORNESUP - 5
tabB(i) = i + 2
Next
' Insertion des éléments dans le tableau résultant
(tabC)
tabC = differenceTableau(tabA(), tabB())
' Affichage du le tableau résultant (tabC)
For i = LBound(tabC) To UBound(tabC)
Debug.Print tabC(i)
Next
End Sub
Function differenceTableau(a() As Long, b() As Long) As
Long()
Dim res() As Long
Dim indA As Long
Dim indRes As Long
indRes = 1
' Parcours des éléments de a
For indA = 1 To UBound(a)
' Si l'élément en cours n'est pas dans b
If Not rechercheVal(a(indA), b) Then
' On l'insère dans le tableau résultat
ReDim Preserve res(indRes)
res(indRes) = a(indA)
indRes = indRes + 1
End If
Next
differenceTableau = res
End Function
Function rechercheVal(val As Long, tableRes() As Long) As
Boolean
Dim i As Long
rechercheVal = False
For i = 1 To UBound(tableRes)
If val = tableRes(i) Then
rechercheVal = True
Exit For
End If
Next
End Function
En lançant la procédure testDiff. Ca doit marcher?
Pour l'écriture dans la feuille excel je ne comprends pas
la logique qui
permet de passer d'un tableau à une dimension (tabC) à
une feuille excel sur
deux dimensions?
A+
Rv
<anonymous@discussions.microsoft.com> a écrit dans le
message de
news:23a6a01c45eab$c5de8650$a401280a@phx.gbl...
Merci pour la réponse je vais essayer de préciser ma
demande.
Le tableau1() que j'initialise contient une série continue
de nombres (de 1 à 100)Cela pouuait être par exemple une
série de tickets numérotés de 1 à 100
le tableau2() serait alors la liste des tickets vendus
dans mon exemple 3 à 97
je voudrais obtenir dans un 3 eme tableau, les tickets
resatnts soit dans mon exemple (1,2,98,99,100) et pouvoir
ensuite récuperer dans des cellules du classeur les séries
obtenues soit par exemple en A1 1 en B1 2; en A2 : 98 et
en B2 :100. est ce possible.
J'avais pensé utiliser If IsError(Application.Match()Mais
je n'arrive pas à trouver ce que je dois mettre après
Match.
Je serais très heureuse d'y parvenir
Merci
-----Message d'origine-----
Bonjour Hélène,
Je ne suis pas sûr d'avoir compris le sens de ta question
mais essaie ceci :
Pour les valeurs 1,2,98,99 et 100
Dim Arr()
arr = Array(1, 2, 98, 99, 100)
Et pour les valeurs de 1à2 et de 98 à 100
Dim Arr1()
Arr1 = Array(1, 2, 98, 99, 100)
Tu cherches autre chose ?
Salutations!
"Helene" <anonymous@discussions.microsoft.com> a écrit
dans le message de
news:2389b01c45e89$ca38b120$a501280a@phx.gbl...
Bonjour à tous
J'ai encore beaucoup de mal à utiliser des tableaux dans
VBA.
Voici mon problème : J'initialise un 1er tableau avec par
exemple les valeurs 1 à 100.
Puis un second tableau avec les valeurs 3 à 97
Je voudrais obtenir un 3 eme tableau qui contiendrai les
valeurs 1,2,98,99 et 100. Comment puis-je m'y prendre ?
Par ailleurs à partir de ce 3 eme tableau pourrais
obtenir
les séries restantes : ex: de 1à2 et de 98 à 100 ?
Merci pour votre aide.
.
.
-----Message d'origine-----
Salut,
Pour la première partie
Voici un exemple à insérer dans un nouveau module.
Option Explicit
Option Base 1
Const BORNESUP = 100
Sub testDiff()
Dim tabA(BORNESUP) As Long
Dim tabB(BORNESUP) As Long
Dim tabC() As Long
Dim i As Long
' Initialisation des tableaux
For i = 1 To BORNESUP
tabA(i) = i
Next
For i = 1 To BORNESUP - 5
tabB(i) = i + 2
Next
' Insertion des éléments dans le tableau résultant
(tabC)
tabC = differenceTableau(tabA(), tabB())
' Affichage du le tableau résultant (tabC)
For i = LBound(tabC) To UBound(tabC)
Debug.Print tabC(i)
Next
End Sub
Function differenceTableau(a() As Long, b() As Long) As
Long()
Dim res() As Long
Dim indA As Long
Dim indRes As Long
indRes = 1
' Parcours des éléments de a
For indA = 1 To UBound(a)
' Si l'élément en cours n'est pas dans b
If Not rechercheVal(a(indA), b) Then
' On l'insère dans le tableau résultat
ReDim Preserve res(indRes)
res(indRes) = a(indA)
indRes = indRes + 1
End If
Next
differenceTableau = res
End Function
Function rechercheVal(val As Long, tableRes() As Long) As
Boolean
Dim i As Long
rechercheVal = False
For i = 1 To UBound(tableRes)
If val = tableRes(i) Then
rechercheVal = True
Exit For
End If
Next
End Function
En lançant la procédure testDiff. Ca doit marcher?
Pour l'écriture dans la feuille excel je ne comprends pas
la logique qui
permet de passer d'un tableau à une dimension (tabC) à
une feuille excel sur
deux dimensions?
A+
Rv
a écrit dans le
message de
news:23a6a01c45eab$c5de8650$
Merci pour la réponse je vais essayer de préciser ma
demande.
Le tableau1() que j'initialise contient une série continue
de nombres (de 1 à 100)Cela pouuait être par exemple une
série de tickets numérotés de 1 à 100
le tableau2() serait alors la liste des tickets vendus
dans mon exemple 3 à 97
je voudrais obtenir dans un 3 eme tableau, les tickets
resatnts soit dans mon exemple (1,2,98,99,100) et pouvoir
ensuite récuperer dans des cellules du classeur les séries
obtenues soit par exemple en A1 1 en B1 2; en A2 : 98 et
en B2 :100. est ce possible.
J'avais pensé utiliser If IsError(Application.Match()Mais
je n'arrive pas à trouver ce que je dois mettre après
Match.
Je serais très heureuse d'y parvenir
Merci-----Message d'origine-----
Bonjour Hélène,
Je ne suis pas sûr d'avoir compris le sens de ta question
mais essaie ceci :
Pour les valeurs 1,2,98,99 et 100
Dim Arr()
arr = Array(1, 2, 98, 99, 100)
Et pour les valeurs de 1à2 et de 98 à 100
Dim Arr1()
Arr1 = Array(1, 2, 98, 99, 100)
Tu cherches autre chose ?
Salutations!
"Helene" a écrit
dans le message denews:2389b01c45e89$ca38b120$
Bonjour à tous
J'ai encore beaucoup de mal à utiliser des tableaux dans
VBA.
Voici mon problème : J'initialise un 1er tableau avec par
exemple les valeurs 1 à 100.
Puis un second tableau avec les valeurs 3 à 97
Je voudrais obtenir un 3 eme tableau qui contiendrai les
valeurs 1,2,98,99 et 100. Comment puis-je m'y prendre ?
Par ailleurs à partir de ce 3 eme tableau pourrais
obtenir
les séries restantes : ex: de 1à2 et de 98 à 100 ?
Merci pour votre aide.
.
.
-----Message d'origine-----
Salut,
Pour la première partie
Voici un exemple à insérer dans un nouveau module.
Option Explicit
Option Base 1
Const BORNESUP = 100
Sub testDiff()
Dim tabA(BORNESUP) As Long
Dim tabB(BORNESUP) As Long
Dim tabC() As Long
Dim i As Long
' Initialisation des tableaux
For i = 1 To BORNESUP
tabA(i) = i
Next
For i = 1 To BORNESUP - 5
tabB(i) = i + 2
Next
' Insertion des éléments dans le tableau résultant
(tabC)
tabC = differenceTableau(tabA(), tabB())
' Affichage du le tableau résultant (tabC)
For i = LBound(tabC) To UBound(tabC)
Debug.Print tabC(i)
Next
End Sub
Function differenceTableau(a() As Long, b() As Long) As
Long()
Dim res() As Long
Dim indA As Long
Dim indRes As Long
indRes = 1
' Parcours des éléments de a
For indA = 1 To UBound(a)
' Si l'élément en cours n'est pas dans b
If Not rechercheVal(a(indA), b) Then
' On l'insère dans le tableau résultat
ReDim Preserve res(indRes)
res(indRes) = a(indA)
indRes = indRes + 1
End If
Next
differenceTableau = res
End Function
Function rechercheVal(val As Long, tableRes() As Long) As
Boolean
Dim i As Long
rechercheVal = False
For i = 1 To UBound(tableRes)
If val = tableRes(i) Then
rechercheVal = True
Exit For
End If
Next
End Function
En lançant la procédure testDiff. Ca doit marcher?
Pour l'écriture dans la feuille excel je ne comprends pas
la logique qui
permet de passer d'un tableau à une dimension (tabC) à
une feuille excel sur
deux dimensions?
A+
Rv
a écrit dans le
message de
news:23a6a01c45eab$c5de8650$
Merci pour la réponse je vais essayer de préciser ma
demande.
Le tableau1() que j'initialise contient une série continue
de nombres (de 1 à 100)Cela pouuait être par exemple une
série de tickets numérotés de 1 à 100
le tableau2() serait alors la liste des tickets vendus
dans mon exemple 3 à 97
je voudrais obtenir dans un 3 eme tableau, les tickets
resatnts soit dans mon exemple (1,2,98,99,100) et pouvoir
ensuite récuperer dans des cellules du classeur les séries
obtenues soit par exemple en A1 1 en B1 2; en A2 : 98 et
en B2 :100. est ce possible.
J'avais pensé utiliser If IsError(Application.Match()Mais
je n'arrive pas à trouver ce que je dois mettre après
Match.
Je serais très heureuse d'y parvenir
Merci-----Message d'origine-----
Bonjour Hélène,
Je ne suis pas sûr d'avoir compris le sens de ta question
mais essaie ceci :
Pour les valeurs 1,2,98,99 et 100
Dim Arr()
arr = Array(1, 2, 98, 99, 100)
Et pour les valeurs de 1à2 et de 98 à 100
Dim Arr1()
Arr1 = Array(1, 2, 98, 99, 100)
Tu cherches autre chose ?
Salutations!
"Helene" a écrit
dans le message denews:2389b01c45e89$ca38b120$
Bonjour à tous
J'ai encore beaucoup de mal à utiliser des tableaux dans
VBA.
Voici mon problème : J'initialise un 1er tableau avec par
exemple les valeurs 1 à 100.
Puis un second tableau avec les valeurs 3 à 97
Je voudrais obtenir un 3 eme tableau qui contiendrai les
valeurs 1,2,98,99 et 100. Comment puis-je m'y prendre ?
Par ailleurs à partir de ce 3 eme tableau pourrais
obtenir
les séries restantes : ex: de 1à2 et de 98 à 100 ?
Merci pour votre aide.
.
.
-----Message d'origine-----
Salut,
Pour la première partie
Voici un exemple à insérer dans un nouveau module.
Option Explicit
Option Base 1
Const BORNESUP = 100
Sub testDiff()
Dim tabA(BORNESUP) As Long
Dim tabB(BORNESUP) As Long
Dim tabC() As Long
Dim i As Long
' Initialisation des tableaux
For i = 1 To BORNESUP
tabA(i) = i
Next
For i = 1 To BORNESUP - 5
tabB(i) = i + 2
Next
' Insertion des éléments dans le tableau résultant
(tabC)
tabC = differenceTableau(tabA(), tabB())
' Affichage du le tableau résultant (tabC)
For i = LBound(tabC) To UBound(tabC)
Debug.Print tabC(i)
Next
End Sub
Function differenceTableau(a() As Long, b() As Long) As
Long()
Dim res() As Long
Dim indA As Long
Dim indRes As Long
indRes = 1
' Parcours des éléments de a
For indA = 1 To UBound(a)
' Si l'élément en cours n'est pas dans b
If Not rechercheVal(a(indA), b) Then
' On l'insère dans le tableau résultat
ReDim Preserve res(indRes)
res(indRes) = a(indA)
indRes = indRes + 1
End If
Next
differenceTableau = res
End Function
Function rechercheVal(val As Long, tableRes() As Long) As
Boolean
Dim i As Long
rechercheVal = False
For i = 1 To UBound(tableRes)
If val = tableRes(i) Then
rechercheVal = True
Exit For
End If
Next
End Function
En lançant la procédure testDiff. Ca doit marcher?
Pour l'écriture dans la feuille excel je ne comprends pas
la logique qui
permet de passer d'un tableau à une dimension (tabC) à
une feuille excel sur
deux dimensions?
A+
Rv
<anonymous@discussions.microsoft.com> a écrit dans le
message de
news:23a6a01c45eab$c5de8650$a401280a@phx.gbl...
Merci pour la réponse je vais essayer de préciser ma
demande.
Le tableau1() que j'initialise contient une série continue
de nombres (de 1 à 100)Cela pouuait être par exemple une
série de tickets numérotés de 1 à 100
le tableau2() serait alors la liste des tickets vendus
dans mon exemple 3 à 97
je voudrais obtenir dans un 3 eme tableau, les tickets
resatnts soit dans mon exemple (1,2,98,99,100) et pouvoir
ensuite récuperer dans des cellules du classeur les séries
obtenues soit par exemple en A1 1 en B1 2; en A2 : 98 et
en B2 :100. est ce possible.
J'avais pensé utiliser If IsError(Application.Match()Mais
je n'arrive pas à trouver ce que je dois mettre après
Match.
Je serais très heureuse d'y parvenir
Merci
-----Message d'origine-----
Bonjour Hélène,
Je ne suis pas sûr d'avoir compris le sens de ta question
mais essaie ceci :
Pour les valeurs 1,2,98,99 et 100
Dim Arr()
arr = Array(1, 2, 98, 99, 100)
Et pour les valeurs de 1à2 et de 98 à 100
Dim Arr1()
Arr1 = Array(1, 2, 98, 99, 100)
Tu cherches autre chose ?
Salutations!
"Helene" <anonymous@discussions.microsoft.com> a écrit
dans le message de
news:2389b01c45e89$ca38b120$a501280a@phx.gbl...
Bonjour à tous
J'ai encore beaucoup de mal à utiliser des tableaux dans
VBA.
Voici mon problème : J'initialise un 1er tableau avec par
exemple les valeurs 1 à 100.
Puis un second tableau avec les valeurs 3 à 97
Je voudrais obtenir un 3 eme tableau qui contiendrai les
valeurs 1,2,98,99 et 100. Comment puis-je m'y prendre ?
Par ailleurs à partir de ce 3 eme tableau pourrais
obtenir
les séries restantes : ex: de 1à2 et de 98 à 100 ?
Merci pour votre aide.
.
.
-----Message d'origine-----
Salut,
Pour la première partie
Voici un exemple à insérer dans un nouveau module.
Option Explicit
Option Base 1
Const BORNESUP = 100
Sub testDiff()
Dim tabA(BORNESUP) As Long
Dim tabB(BORNESUP) As Long
Dim tabC() As Long
Dim i As Long
' Initialisation des tableaux
For i = 1 To BORNESUP
tabA(i) = i
Next
For i = 1 To BORNESUP - 5
tabB(i) = i + 2
Next
' Insertion des éléments dans le tableau résultant
(tabC)
tabC = differenceTableau(tabA(), tabB())
' Affichage du le tableau résultant (tabC)
For i = LBound(tabC) To UBound(tabC)
Debug.Print tabC(i)
Next
End Sub
Function differenceTableau(a() As Long, b() As Long) As
Long()
Dim res() As Long
Dim indA As Long
Dim indRes As Long
indRes = 1
' Parcours des éléments de a
For indA = 1 To UBound(a)
' Si l'élément en cours n'est pas dans b
If Not rechercheVal(a(indA), b) Then
' On l'insère dans le tableau résultat
ReDim Preserve res(indRes)
res(indRes) = a(indA)
indRes = indRes + 1
End If
Next
differenceTableau = res
End Function
Function rechercheVal(val As Long, tableRes() As Long) As
Boolean
Dim i As Long
rechercheVal = False
For i = 1 To UBound(tableRes)
If val = tableRes(i) Then
rechercheVal = True
Exit For
End If
Next
End Function
En lançant la procédure testDiff. Ca doit marcher?
Pour l'écriture dans la feuille excel je ne comprends pas
la logique qui
permet de passer d'un tableau à une dimension (tabC) à
une feuille excel sur
deux dimensions?
A+
Rv
a écrit dans le
message de
news:23a6a01c45eab$c5de8650$
Merci pour la réponse je vais essayer de préciser ma
demande.
Le tableau1() que j'initialise contient une série continue
de nombres (de 1 à 100)Cela pouuait être par exemple une
série de tickets numérotés de 1 à 100
le tableau2() serait alors la liste des tickets vendus
dans mon exemple 3 à 97
je voudrais obtenir dans un 3 eme tableau, les tickets
resatnts soit dans mon exemple (1,2,98,99,100) et pouvoir
ensuite récuperer dans des cellules du classeur les séries
obtenues soit par exemple en A1 1 en B1 2; en A2 : 98 et
en B2 :100. est ce possible.
J'avais pensé utiliser If IsError(Application.Match()Mais
je n'arrive pas à trouver ce que je dois mettre après
Match.
Je serais très heureuse d'y parvenir
Merci-----Message d'origine-----
Bonjour Hélène,
Je ne suis pas sûr d'avoir compris le sens de ta question
mais essaie ceci :
Pour les valeurs 1,2,98,99 et 100
Dim Arr()
arr = Array(1, 2, 98, 99, 100)
Et pour les valeurs de 1à2 et de 98 à 100
Dim Arr1()
Arr1 = Array(1, 2, 98, 99, 100)
Tu cherches autre chose ?
Salutations!
"Helene" a écrit
dans le message denews:2389b01c45e89$ca38b120$
Bonjour à tous
J'ai encore beaucoup de mal à utiliser des tableaux dans
VBA.
Voici mon problème : J'initialise un 1er tableau avec par
exemple les valeurs 1 à 100.
Puis un second tableau avec les valeurs 3 à 97
Je voudrais obtenir un 3 eme tableau qui contiendrai les
valeurs 1,2,98,99 et 100. Comment puis-je m'y prendre ?
Par ailleurs à partir de ce 3 eme tableau pourrais
obtenir
les séries restantes : ex: de 1à2 et de 98 à 100 ?
Merci pour votre aide.
.
.
-----Message d'origine-----
Salut,
Pour la première partie
Voici un exemple à insérer dans un nouveau module.
Option Explicit
Option Base 1
Const BORNESUP = 100
Sub testDiff()
Dim tabA(BORNESUP) As Long
Dim tabB(BORNESUP) As Long
Dim tabC() As Long
Dim i As Long
' Initialisation des tableaux
For i = 1 To BORNESUP
tabA(i) = i
Next
For i = 1 To BORNESUP - 5
tabB(i) = i + 2
Next
' Insertion des éléments dans le tableau résultant
(tabC)
tabC = differenceTableau(tabA(), tabB())
' Affichage du le tableau résultant (tabC)
For i = LBound(tabC) To UBound(tabC)
Debug.Print tabC(i)
Next
End Sub
Function differenceTableau(a() As Long, b() As Long) As
Long()
Dim res() As Long
Dim indA As Long
Dim indRes As Long
indRes = 1
' Parcours des éléments de a
For indA = 1 To UBound(a)
' Si l'élément en cours n'est pas dans b
If Not rechercheVal(a(indA), b) Then
' On l'insère dans le tableau résultat
ReDim Preserve res(indRes)
res(indRes) = a(indA)
indRes = indRes + 1
End If
Next
differenceTableau = res
End Function
Function rechercheVal(val As Long, tableRes() As Long) As
Boolean
Dim i As Long
rechercheVal = False
For i = 1 To UBound(tableRes)
If val = tableRes(i) Then
rechercheVal = True
Exit For
End If
Next
End Function
En lançant la procédure testDiff. Ca doit marcher?
Pour l'écriture dans la feuille excel je ne comprends pas
la logique qui
permet de passer d'un tableau à une dimension (tabC) à
une feuille excel sur
deux dimensions?
A+
Rv
a écrit dans le
message de
news:23a6a01c45eab$c5de8650$
Merci pour la réponse je vais essayer de préciser ma
demande.
Le tableau1() que j'initialise contient une série continue
de nombres (de 1 à 100)Cela pouuait être par exemple une
série de tickets numérotés de 1 à 100
le tableau2() serait alors la liste des tickets vendus
dans mon exemple 3 à 97
je voudrais obtenir dans un 3 eme tableau, les tickets
resatnts soit dans mon exemple (1,2,98,99,100) et pouvoir
ensuite récuperer dans des cellules du classeur les séries
obtenues soit par exemple en A1 1 en B1 2; en A2 : 98 et
en B2 :100. est ce possible.
J'avais pensé utiliser If IsError(Application.Match()Mais
je n'arrive pas à trouver ce que je dois mettre après
Match.
Je serais très heureuse d'y parvenir
Merci-----Message d'origine-----
Bonjour Hélène,
Je ne suis pas sûr d'avoir compris le sens de ta question
mais essaie ceci :
Pour les valeurs 1,2,98,99 et 100
Dim Arr()
arr = Array(1, 2, 98, 99, 100)
Et pour les valeurs de 1à2 et de 98 à 100
Dim Arr1()
Arr1 = Array(1, 2, 98, 99, 100)
Tu cherches autre chose ?
Salutations!
"Helene" a écrit
dans le message denews:2389b01c45e89$ca38b120$
Bonjour à tous
J'ai encore beaucoup de mal à utiliser des tableaux dans
VBA.
Voici mon problème : J'initialise un 1er tableau avec par
exemple les valeurs 1 à 100.
Puis un second tableau avec les valeurs 3 à 97
Je voudrais obtenir un 3 eme tableau qui contiendrai les
valeurs 1,2,98,99 et 100. Comment puis-je m'y prendre ?
Par ailleurs à partir de ce 3 eme tableau pourrais
obtenir
les séries restantes : ex: de 1à2 et de 98 à 100 ?
Merci pour votre aide.
.
.
-----Message d'origine-----
Salut,
Pour la première partie
Voici un exemple à insérer dans un nouveau module.
Option Explicit
Option Base 1
Const BORNESUP = 100
Sub testDiff()
Dim tabA(BORNESUP) As Long
Dim tabB(BORNESUP) As Long
Dim tabC() As Long
Dim i As Long
' Initialisation des tableaux
For i = 1 To BORNESUP
tabA(i) = i
Next
For i = 1 To BORNESUP - 5
tabB(i) = i + 2
Next
' Insertion des éléments dans le tableau résultant
(tabC)
tabC = differenceTableau(tabA(), tabB())
' Affichage du le tableau résultant (tabC)
For i = LBound(tabC) To UBound(tabC)
Debug.Print tabC(i)
Next
End Sub
Function differenceTableau(a() As Long, b() As Long) As
Long()
Dim res() As Long
Dim indA As Long
Dim indRes As Long
indRes = 1
' Parcours des éléments de a
For indA = 1 To UBound(a)
' Si l'élément en cours n'est pas dans b
If Not rechercheVal(a(indA), b) Then
' On l'insère dans le tableau résultat
ReDim Preserve res(indRes)
res(indRes) = a(indA)
indRes = indRes + 1
End If
Next
differenceTableau = res
End Function
Function rechercheVal(val As Long, tableRes() As Long) As
Boolean
Dim i As Long
rechercheVal = False
For i = 1 To UBound(tableRes)
If val = tableRes(i) Then
rechercheVal = True
Exit For
End If
Next
End Function
En lançant la procédure testDiff. Ca doit marcher?
Pour l'écriture dans la feuille excel je ne comprends pas
la logique qui
permet de passer d'un tableau à une dimension (tabC) à
une feuille excel sur
deux dimensions?
A+
Rv
<anonymous@discussions.microsoft.com> a écrit dans le
message de
news:23a6a01c45eab$c5de8650$a401280a@phx.gbl...
Merci pour la réponse je vais essayer de préciser ma
demande.
Le tableau1() que j'initialise contient une série continue
de nombres (de 1 à 100)Cela pouuait être par exemple une
série de tickets numérotés de 1 à 100
le tableau2() serait alors la liste des tickets vendus
dans mon exemple 3 à 97
je voudrais obtenir dans un 3 eme tableau, les tickets
resatnts soit dans mon exemple (1,2,98,99,100) et pouvoir
ensuite récuperer dans des cellules du classeur les séries
obtenues soit par exemple en A1 1 en B1 2; en A2 : 98 et
en B2 :100. est ce possible.
J'avais pensé utiliser If IsError(Application.Match()Mais
je n'arrive pas à trouver ce que je dois mettre après
Match.
Je serais très heureuse d'y parvenir
Merci
-----Message d'origine-----
Bonjour Hélène,
Je ne suis pas sûr d'avoir compris le sens de ta question
mais essaie ceci :
Pour les valeurs 1,2,98,99 et 100
Dim Arr()
arr = Array(1, 2, 98, 99, 100)
Et pour les valeurs de 1à2 et de 98 à 100
Dim Arr1()
Arr1 = Array(1, 2, 98, 99, 100)
Tu cherches autre chose ?
Salutations!
"Helene" <anonymous@discussions.microsoft.com> a écrit
dans le message de
news:2389b01c45e89$ca38b120$a501280a@phx.gbl...
Bonjour à tous
J'ai encore beaucoup de mal à utiliser des tableaux dans
VBA.
Voici mon problème : J'initialise un 1er tableau avec par
exemple les valeurs 1 à 100.
Puis un second tableau avec les valeurs 3 à 97
Je voudrais obtenir un 3 eme tableau qui contiendrai les
valeurs 1,2,98,99 et 100. Comment puis-je m'y prendre ?
Par ailleurs à partir de ce 3 eme tableau pourrais
obtenir
les séries restantes : ex: de 1à2 et de 98 à 100 ?
Merci pour votre aide.
.
.
-----Message d'origine-----
Salut,
Pour la première partie
Voici un exemple à insérer dans un nouveau module.
Option Explicit
Option Base 1
Const BORNESUP = 100
Sub testDiff()
Dim tabA(BORNESUP) As Long
Dim tabB(BORNESUP) As Long
Dim tabC() As Long
Dim i As Long
' Initialisation des tableaux
For i = 1 To BORNESUP
tabA(i) = i
Next
For i = 1 To BORNESUP - 5
tabB(i) = i + 2
Next
' Insertion des éléments dans le tableau résultant
(tabC)
tabC = differenceTableau(tabA(), tabB())
' Affichage du le tableau résultant (tabC)
For i = LBound(tabC) To UBound(tabC)
Debug.Print tabC(i)
Next
End Sub
Function differenceTableau(a() As Long, b() As Long) As
Long()
Dim res() As Long
Dim indA As Long
Dim indRes As Long
indRes = 1
' Parcours des éléments de a
For indA = 1 To UBound(a)
' Si l'élément en cours n'est pas dans b
If Not rechercheVal(a(indA), b) Then
' On l'insère dans le tableau résultat
ReDim Preserve res(indRes)
res(indRes) = a(indA)
indRes = indRes + 1
End If
Next
differenceTableau = res
End Function
Function rechercheVal(val As Long, tableRes() As Long) As
Boolean
Dim i As Long
rechercheVal = False
For i = 1 To UBound(tableRes)
If val = tableRes(i) Then
rechercheVal = True
Exit For
End If
Next
End Function
En lançant la procédure testDiff. Ca doit marcher?
Pour l'écriture dans la feuille excel je ne comprends pas
la logique qui
permet de passer d'un tableau à une dimension (tabC) à
une feuille excel sur
deux dimensions?
A+
Rv
a écrit dans le
message de
news:23a6a01c45eab$c5de8650$
Merci pour la réponse je vais essayer de préciser ma
demande.
Le tableau1() que j'initialise contient une série continue
de nombres (de 1 à 100)Cela pouuait être par exemple une
série de tickets numérotés de 1 à 100
le tableau2() serait alors la liste des tickets vendus
dans mon exemple 3 à 97
je voudrais obtenir dans un 3 eme tableau, les tickets
resatnts soit dans mon exemple (1,2,98,99,100) et pouvoir
ensuite récuperer dans des cellules du classeur les séries
obtenues soit par exemple en A1 1 en B1 2; en A2 : 98 et
en B2 :100. est ce possible.
J'avais pensé utiliser If IsError(Application.Match()Mais
je n'arrive pas à trouver ce que je dois mettre après
Match.
Je serais très heureuse d'y parvenir
Merci-----Message d'origine-----
Bonjour Hélène,
Je ne suis pas sûr d'avoir compris le sens de ta question
mais essaie ceci :
Pour les valeurs 1,2,98,99 et 100
Dim Arr()
arr = Array(1, 2, 98, 99, 100)
Et pour les valeurs de 1à2 et de 98 à 100
Dim Arr1()
Arr1 = Array(1, 2, 98, 99, 100)
Tu cherches autre chose ?
Salutations!
"Helene" a écrit
dans le message denews:2389b01c45e89$ca38b120$
Bonjour à tous
J'ai encore beaucoup de mal à utiliser des tableaux dans
VBA.
Voici mon problème : J'initialise un 1er tableau avec par
exemple les valeurs 1 à 100.
Puis un second tableau avec les valeurs 3 à 97
Je voudrais obtenir un 3 eme tableau qui contiendrai les
valeurs 1,2,98,99 et 100. Comment puis-je m'y prendre ?
Par ailleurs à partir de ce 3 eme tableau pourrais
obtenir
les séries restantes : ex: de 1à2 et de 98 à 100 ?
Merci pour votre aide.
.
.
For i = i To BORNESUP - 5
tabB(i) = i + 2
Next
Salut,
Je l'ai testé avec Excel2000 et XP. Quelle est votre version?
Sinon voila une version moins découpée:
Option Explicit
Option Base 1
Const BORNESUP = 1000
Sub test()
Dim tabA(BORNESUP) As Long
Dim tabB(BORNESUP) As Long
Dim tabC() As Long
Dim val As Long
Dim indA As Long
Dim indB As Long
Dim indC As Long
Dim i As Long
Dim booTrouve As Boolean
' ------------ Initialisation des tableaux ----------------
For i = 1 To BORNESUP
tabA(i) = i
Next
For i = i To BORNESUP - 5
tabB(i) = i + 2
Next
' -------- Remplissage de tabC ------------
indC = 1
' Parcours des éléments de a
For indA = 1 To UBound(tabA)
val = tabA(indA)
' Recherche de l'élément en cours de tabA dans tabB
booTrouve = False
For i = 1 To UBound(tabB)
If val = tabB(i) Then
booTrouve = True
Exit For
End If
Next
' Si l'élément en cours de tabA n'est pas dans tabB
If Not booTrouve Then
' On l'insère dans le tableau résultant : tabC
ReDim Preserve tabC(indC)
tabC(indC) = val
indC = indC + 1
End If
Next
' --------- Affichage du tableau résultant : tabC ------------------
For i = LBound(tabC) To UBound(tabC)
Debug.Print tabC(i)
Next
End Sub
A+
Rv
a écrit dans le message de
news:2425401c45f36$5a2f79b0$
Bonjour
J'ai essayé testDiff mais j'ai le message Type d'argument
ByRef incompatible !!!lorsque la procédure arrive à la
ligne tabC = differenceTableau....
Salutations-----Message d'origine-----
Salut,
Pour la première partie
Voici un exemple à insérer dans un nouveau module.
Option Explicit
Option Base 1
Const BORNESUP = 100
Sub testDiff()
Dim tabA(BORNESUP) As Long
Dim tabB(BORNESUP) As Long
Dim tabC() As Long
Dim i As Long
' Initialisation des tableaux
For i = 1 To BORNESUP
tabA(i) = i
Next
For i = 1 To BORNESUP - 5
tabB(i) = i + 2
Next
' Insertion des éléments dans le tableau résultant
(tabC)tabC = differenceTableau(tabA(), tabB())
' Affichage du le tableau résultant (tabC)
For i = LBound(tabC) To UBound(tabC)
Debug.Print tabC(i)
Next
End Sub
Function differenceTableau(a() As Long, b() As Long) As
Long()Dim res() As Long
Dim indA As Long
Dim indRes As Long
indRes = 1
' Parcours des éléments de a
For indA = 1 To UBound(a)
' Si l'élément en cours n'est pas dans b
If Not rechercheVal(a(indA), b) Then
' On l'insère dans le tableau résultat
ReDim Preserve res(indRes)
res(indRes) = a(indA)
indRes = indRes + 1
End If
Next
differenceTableau = res
End Function
Function rechercheVal(val As Long, tableRes() As Long) As
BooleanDim i As Long
rechercheVal = False
For i = 1 To UBound(tableRes)
If val = tableRes(i) Then
rechercheVal = True
Exit For
End If
Next
End Function
En lançant la procédure testDiff. Ca doit marcher?
Pour l'écriture dans la feuille excel je ne comprends pas
la logique quipermet de passer d'un tableau à une dimension (tabC) à
une feuille excel surdeux dimensions?
A+
Rv
a écrit dans le
message denews:23a6a01c45eab$c5de8650$
Merci pour la réponse je vais essayer de préciser ma
demande.
Le tableau1() que j'initialise contient une série continue
de nombres (de 1 à 100)Cela pouuait être par exemple une
série de tickets numérotés de 1 à 100
le tableau2() serait alors la liste des tickets vendus
dans mon exemple 3 à 97
je voudrais obtenir dans un 3 eme tableau, les tickets
resatnts soit dans mon exemple (1,2,98,99,100) et pouvoir
ensuite récuperer dans des cellules du classeur les séries
obtenues soit par exemple en A1 1 en B1 2; en A2 : 98 et
en B2 :100. est ce possible.
J'avais pensé utiliser If IsError(Application.Match()Mais
je n'arrive pas à trouver ce que je dois mettre après
Match.
Je serais très heureuse d'y parvenir
Merci-----Message d'origine-----
Bonjour Hélène,
Je ne suis pas sûr d'avoir compris le sens de ta question
mais essaie ceci :
Pour les valeurs 1,2,98,99 et 100
Dim Arr()
arr = Array(1, 2, 98, 99, 100)
Et pour les valeurs de 1à2 et de 98 à 100
Dim Arr1()
Arr1 = Array(1, 2, 98, 99, 100)
Tu cherches autre chose ?
Salutations!
"Helene" a écrit
dans le message denews:2389b01c45e89$ca38b120$
Bonjour à tous
J'ai encore beaucoup de mal à utiliser des tableaux dans
VBA.
Voici mon problème : J'initialise un 1er tableau avec par
exemple les valeurs 1 à 100.
Puis un second tableau avec les valeurs 3 à 97
Je voudrais obtenir un 3 eme tableau qui contiendrai les
valeurs 1,2,98,99 et 100. Comment puis-je m'y prendre ?
Par ailleurs à partir de ce 3 eme tableau pourrais
obtenirles séries restantes : ex: de 1à2 et de 98 à 100 ?
Merci pour votre aide.
.
.
For i = i To BORNESUP - 5
tabB(i) = i + 2
Next
Salut,
Je l'ai testé avec Excel2000 et XP. Quelle est votre version?
Sinon voila une version moins découpée:
Option Explicit
Option Base 1
Const BORNESUP = 1000
Sub test()
Dim tabA(BORNESUP) As Long
Dim tabB(BORNESUP) As Long
Dim tabC() As Long
Dim val As Long
Dim indA As Long
Dim indB As Long
Dim indC As Long
Dim i As Long
Dim booTrouve As Boolean
' ------------ Initialisation des tableaux ----------------
For i = 1 To BORNESUP
tabA(i) = i
Next
For i = i To BORNESUP - 5
tabB(i) = i + 2
Next
' -------- Remplissage de tabC ------------
indC = 1
' Parcours des éléments de a
For indA = 1 To UBound(tabA)
val = tabA(indA)
' Recherche de l'élément en cours de tabA dans tabB
booTrouve = False
For i = 1 To UBound(tabB)
If val = tabB(i) Then
booTrouve = True
Exit For
End If
Next
' Si l'élément en cours de tabA n'est pas dans tabB
If Not booTrouve Then
' On l'insère dans le tableau résultant : tabC
ReDim Preserve tabC(indC)
tabC(indC) = val
indC = indC + 1
End If
Next
' --------- Affichage du tableau résultant : tabC ------------------
For i = LBound(tabC) To UBound(tabC)
Debug.Print tabC(i)
Next
End Sub
A+
Rv
<anonymous@discussions.microsoft.com> a écrit dans le message de
news:2425401c45f36$5a2f79b0$a401280a@phx.gbl...
Bonjour
J'ai essayé testDiff mais j'ai le message Type d'argument
ByRef incompatible !!!lorsque la procédure arrive à la
ligne tabC = differenceTableau....
Salutations
-----Message d'origine-----
Salut,
Pour la première partie
Voici un exemple à insérer dans un nouveau module.
Option Explicit
Option Base 1
Const BORNESUP = 100
Sub testDiff()
Dim tabA(BORNESUP) As Long
Dim tabB(BORNESUP) As Long
Dim tabC() As Long
Dim i As Long
' Initialisation des tableaux
For i = 1 To BORNESUP
tabA(i) = i
Next
For i = 1 To BORNESUP - 5
tabB(i) = i + 2
Next
' Insertion des éléments dans le tableau résultant
(tabC)
tabC = differenceTableau(tabA(), tabB())
' Affichage du le tableau résultant (tabC)
For i = LBound(tabC) To UBound(tabC)
Debug.Print tabC(i)
Next
End Sub
Function differenceTableau(a() As Long, b() As Long) As
Long()
Dim res() As Long
Dim indA As Long
Dim indRes As Long
indRes = 1
' Parcours des éléments de a
For indA = 1 To UBound(a)
' Si l'élément en cours n'est pas dans b
If Not rechercheVal(a(indA), b) Then
' On l'insère dans le tableau résultat
ReDim Preserve res(indRes)
res(indRes) = a(indA)
indRes = indRes + 1
End If
Next
differenceTableau = res
End Function
Function rechercheVal(val As Long, tableRes() As Long) As
Boolean
Dim i As Long
rechercheVal = False
For i = 1 To UBound(tableRes)
If val = tableRes(i) Then
rechercheVal = True
Exit For
End If
Next
End Function
En lançant la procédure testDiff. Ca doit marcher?
Pour l'écriture dans la feuille excel je ne comprends pas
la logique qui
permet de passer d'un tableau à une dimension (tabC) à
une feuille excel sur
deux dimensions?
A+
Rv
<anonymous@discussions.microsoft.com> a écrit dans le
message de
news:23a6a01c45eab$c5de8650$a401280a@phx.gbl...
Merci pour la réponse je vais essayer de préciser ma
demande.
Le tableau1() que j'initialise contient une série continue
de nombres (de 1 à 100)Cela pouuait être par exemple une
série de tickets numérotés de 1 à 100
le tableau2() serait alors la liste des tickets vendus
dans mon exemple 3 à 97
je voudrais obtenir dans un 3 eme tableau, les tickets
resatnts soit dans mon exemple (1,2,98,99,100) et pouvoir
ensuite récuperer dans des cellules du classeur les séries
obtenues soit par exemple en A1 1 en B1 2; en A2 : 98 et
en B2 :100. est ce possible.
J'avais pensé utiliser If IsError(Application.Match()Mais
je n'arrive pas à trouver ce que je dois mettre après
Match.
Je serais très heureuse d'y parvenir
Merci
-----Message d'origine-----
Bonjour Hélène,
Je ne suis pas sûr d'avoir compris le sens de ta question
mais essaie ceci :
Pour les valeurs 1,2,98,99 et 100
Dim Arr()
arr = Array(1, 2, 98, 99, 100)
Et pour les valeurs de 1à2 et de 98 à 100
Dim Arr1()
Arr1 = Array(1, 2, 98, 99, 100)
Tu cherches autre chose ?
Salutations!
"Helene" <anonymous@discussions.microsoft.com> a écrit
dans le message de
news:2389b01c45e89$ca38b120$a501280a@phx.gbl...
Bonjour à tous
J'ai encore beaucoup de mal à utiliser des tableaux dans
VBA.
Voici mon problème : J'initialise un 1er tableau avec par
exemple les valeurs 1 à 100.
Puis un second tableau avec les valeurs 3 à 97
Je voudrais obtenir un 3 eme tableau qui contiendrai les
valeurs 1,2,98,99 et 100. Comment puis-je m'y prendre ?
Par ailleurs à partir de ce 3 eme tableau pourrais
obtenir
les séries restantes : ex: de 1à2 et de 98 à 100 ?
Merci pour votre aide.
.
.
For i = i To BORNESUP - 5
tabB(i) = i + 2
Next
Salut,
Je l'ai testé avec Excel2000 et XP. Quelle est votre version?
Sinon voila une version moins découpée:
Option Explicit
Option Base 1
Const BORNESUP = 1000
Sub test()
Dim tabA(BORNESUP) As Long
Dim tabB(BORNESUP) As Long
Dim tabC() As Long
Dim val As Long
Dim indA As Long
Dim indB As Long
Dim indC As Long
Dim i As Long
Dim booTrouve As Boolean
' ------------ Initialisation des tableaux ----------------
For i = 1 To BORNESUP
tabA(i) = i
Next
For i = i To BORNESUP - 5
tabB(i) = i + 2
Next
' -------- Remplissage de tabC ------------
indC = 1
' Parcours des éléments de a
For indA = 1 To UBound(tabA)
val = tabA(indA)
' Recherche de l'élément en cours de tabA dans tabB
booTrouve = False
For i = 1 To UBound(tabB)
If val = tabB(i) Then
booTrouve = True
Exit For
End If
Next
' Si l'élément en cours de tabA n'est pas dans tabB
If Not booTrouve Then
' On l'insère dans le tableau résultant : tabC
ReDim Preserve tabC(indC)
tabC(indC) = val
indC = indC + 1
End If
Next
' --------- Affichage du tableau résultant : tabC ------------------
For i = LBound(tabC) To UBound(tabC)
Debug.Print tabC(i)
Next
End Sub
A+
Rv
a écrit dans le message de
news:2425401c45f36$5a2f79b0$
Bonjour
J'ai essayé testDiff mais j'ai le message Type d'argument
ByRef incompatible !!!lorsque la procédure arrive à la
ligne tabC = differenceTableau....
Salutations-----Message d'origine-----
Salut,
Pour la première partie
Voici un exemple à insérer dans un nouveau module.
Option Explicit
Option Base 1
Const BORNESUP = 100
Sub testDiff()
Dim tabA(BORNESUP) As Long
Dim tabB(BORNESUP) As Long
Dim tabC() As Long
Dim i As Long
' Initialisation des tableaux
For i = 1 To BORNESUP
tabA(i) = i
Next
For i = 1 To BORNESUP - 5
tabB(i) = i + 2
Next
' Insertion des éléments dans le tableau résultant
(tabC)tabC = differenceTableau(tabA(), tabB())
' Affichage du le tableau résultant (tabC)
For i = LBound(tabC) To UBound(tabC)
Debug.Print tabC(i)
Next
End Sub
Function differenceTableau(a() As Long, b() As Long) As
Long()Dim res() As Long
Dim indA As Long
Dim indRes As Long
indRes = 1
' Parcours des éléments de a
For indA = 1 To UBound(a)
' Si l'élément en cours n'est pas dans b
If Not rechercheVal(a(indA), b) Then
' On l'insère dans le tableau résultat
ReDim Preserve res(indRes)
res(indRes) = a(indA)
indRes = indRes + 1
End If
Next
differenceTableau = res
End Function
Function rechercheVal(val As Long, tableRes() As Long) As
BooleanDim i As Long
rechercheVal = False
For i = 1 To UBound(tableRes)
If val = tableRes(i) Then
rechercheVal = True
Exit For
End If
Next
End Function
En lançant la procédure testDiff. Ca doit marcher?
Pour l'écriture dans la feuille excel je ne comprends pas
la logique quipermet de passer d'un tableau à une dimension (tabC) à
une feuille excel surdeux dimensions?
A+
Rv
a écrit dans le
message denews:23a6a01c45eab$c5de8650$
Merci pour la réponse je vais essayer de préciser ma
demande.
Le tableau1() que j'initialise contient une série continue
de nombres (de 1 à 100)Cela pouuait être par exemple une
série de tickets numérotés de 1 à 100
le tableau2() serait alors la liste des tickets vendus
dans mon exemple 3 à 97
je voudrais obtenir dans un 3 eme tableau, les tickets
resatnts soit dans mon exemple (1,2,98,99,100) et pouvoir
ensuite récuperer dans des cellules du classeur les séries
obtenues soit par exemple en A1 1 en B1 2; en A2 : 98 et
en B2 :100. est ce possible.
J'avais pensé utiliser If IsError(Application.Match()Mais
je n'arrive pas à trouver ce que je dois mettre après
Match.
Je serais très heureuse d'y parvenir
Merci-----Message d'origine-----
Bonjour Hélène,
Je ne suis pas sûr d'avoir compris le sens de ta question
mais essaie ceci :
Pour les valeurs 1,2,98,99 et 100
Dim Arr()
arr = Array(1, 2, 98, 99, 100)
Et pour les valeurs de 1à2 et de 98 à 100
Dim Arr1()
Arr1 = Array(1, 2, 98, 99, 100)
Tu cherches autre chose ?
Salutations!
"Helene" a écrit
dans le message denews:2389b01c45e89$ca38b120$
Bonjour à tous
J'ai encore beaucoup de mal à utiliser des tableaux dans
VBA.
Voici mon problème : J'initialise un 1er tableau avec par
exemple les valeurs 1 à 100.
Puis un second tableau avec les valeurs 3 à 97
Je voudrais obtenir un 3 eme tableau qui contiendrai les
valeurs 1,2,98,99 et 100. Comment puis-je m'y prendre ?
Par ailleurs à partir de ce 3 eme tableau pourrais
obtenirles séries restantes : ex: de 1à2 et de 98 à 100 ?
Merci pour votre aide.
.
.
-----Message d'origine-----
Salut,
Je l'ai testé avec Excel2000 et XP. Quelle est votre
version?
Sinon voila une version moins découpée:
Option Explicit
Option Base 1
Const BORNESUP = 1000
Sub test()
Dim tabA(BORNESUP) As Long
Dim tabB(BORNESUP) As Long
Dim tabC() As Long
Dim val As Long
Dim indA As Long
Dim indB As Long
Dim indC As Long
Dim i As Long
Dim booTrouve As Boolean
' ------------ Initialisation des tableaux -----------
-----
For i = 1 To BORNESUP
tabA(i) = i
Next
For i = i To BORNESUP - 5
tabB(i) = i + 2
Next
' -------- Remplissage de tabC ------------
indC = 1
' Parcours des éléments de a
For indA = 1 To UBound(tabA)
val = tabA(indA)
' Recherche de l'élément en cours de tabA dans
tabB
booTrouve = False
For i = 1 To UBound(tabB)
If val = tabB(i) Then
booTrouve = True
Exit For
End If
Next
' Si l'élément en cours de tabA n'est pas dans
tabB
If Not booTrouve Then
' On l'insère dans le tableau résultant : tabC
ReDim Preserve tabC(indC)
tabC(indC) = val
indC = indC + 1
End If
Next
' --------- Affichage du tableau résultant : tabC ----
--------------
For i = LBound(tabC) To UBound(tabC)
Debug.Print tabC(i)
Next
End Sub
A+
Rv
a écrit dans le
message de
news:2425401c45f36$5a2f79b0$
Bonjour
J'ai essayé testDiff mais j'ai le message Type d'argument
ByRef incompatible !!!lorsque la procédure arrive à la
ligne tabC = differenceTableau....
Salutations-----Message d'origine-----
Salut,
Pour la première partie
Voici un exemple à insérer dans un nouveau module.
Option Explicit
Option Base 1
Const BORNESUP = 100
Sub testDiff()
Dim tabA(BORNESUP) As Long
Dim tabB(BORNESUP) As Long
Dim tabC() As Long
Dim i As Long
' Initialisation des tableaux
For i = 1 To BORNESUP
tabA(i) = i
Next
For i = 1 To BORNESUP - 5
tabB(i) = i + 2
Next
' Insertion des éléments dans le tableau résultant
(tabC)tabC = differenceTableau(tabA(), tabB())
' Affichage du le tableau résultant (tabC)
For i = LBound(tabC) To UBound(tabC)
Debug.Print tabC(i)
Next
End Sub
Function differenceTableau(a() As Long, b() As Long) As
Long()Dim res() As Long
Dim indA As Long
Dim indRes As Long
indRes = 1
' Parcours des éléments de a
For indA = 1 To UBound(a)
' Si l'élément en cours n'est pas dans b
If Not rechercheVal(a(indA), b) Then
' On l'insère dans le tableau résultat
ReDim Preserve res(indRes)
res(indRes) = a(indA)
indRes = indRes + 1
End If
Next
differenceTableau = res
End Function
Function rechercheVal(val As Long, tableRes() As Long) As
BooleanDim i As Long
rechercheVal = False
For i = 1 To UBound(tableRes)
If val = tableRes(i) Then
rechercheVal = True
Exit For
End If
Next
End Function
En lançant la procédure testDiff. Ca doit marcher?
Pour l'écriture dans la feuille excel je ne comprends pas
la logique quipermet de passer d'un tableau à une dimension (tabC) à
une feuille excel surdeux dimensions?
A+
Rv
a écrit dans le
message denews:23a6a01c45eab$c5de8650$
Merci pour la réponse je vais essayer de préciser ma
demande.
Le tableau1() que j'initialise contient une série
continue
de nombres (de 1 à 100)Cela pouuait être par exemple une
série de tickets numérotés de 1 à 100
le tableau2() serait alors la liste des tickets vendus
dans mon exemple 3 à 97
je voudrais obtenir dans un 3 eme tableau, les tickets
resatnts soit dans mon exemple (1,2,98,99,100) et pouvoir
ensuite récuperer dans des cellules du classeur les
séries
obtenues soit par exemple en A1 1 en B1 2; en A2 : 98 et
en B2 :100. est ce possible.
J'avais pensé utiliser If IsError(Application.Match()Mais
je n'arrive pas à trouver ce que je dois mettre après
Match.
Je serais très heureuse d'y parvenir
Merci-----Message d'origine-----
Bonjour Hélène,
Je ne suis pas sûr d'avoir compris le sens de ta
question
mais essaie ceci :
Pour les valeurs 1,2,98,99 et 100
Dim Arr()
arr = Array(1, 2, 98, 99, 100)
Et pour les valeurs de 1à2 et de 98 à 100
Dim Arr1()
Arr1 = Array(1, 2, 98, 99, 100)
Tu cherches autre chose ?
Salutations!
"Helene" a écrit
dans le message denews:2389b01c45e89$ca38b120$
Bonjour à tous
J'ai encore beaucoup de mal à utiliser des tableaux dans
VBA.
Voici mon problème : J'initialise un 1er tableau avec
par
exemple les valeurs 1 à 100.
Puis un second tableau avec les valeurs 3 à 97
Je voudrais obtenir un 3 eme tableau qui contiendrai les
valeurs 1,2,98,99 et 100. Comment puis-je m'y prendre ?
Par ailleurs à partir de ce 3 eme tableau pourrais
obtenirles séries restantes : ex: de 1à2 et de 98 à 100 ?
Merci pour votre aide.
.
.
.
-----Message d'origine-----
Salut,
Je l'ai testé avec Excel2000 et XP. Quelle est votre
version?
Sinon voila une version moins découpée:
Option Explicit
Option Base 1
Const BORNESUP = 1000
Sub test()
Dim tabA(BORNESUP) As Long
Dim tabB(BORNESUP) As Long
Dim tabC() As Long
Dim val As Long
Dim indA As Long
Dim indB As Long
Dim indC As Long
Dim i As Long
Dim booTrouve As Boolean
' ------------ Initialisation des tableaux -----------
-----
For i = 1 To BORNESUP
tabA(i) = i
Next
For i = i To BORNESUP - 5
tabB(i) = i + 2
Next
' -------- Remplissage de tabC ------------
indC = 1
' Parcours des éléments de a
For indA = 1 To UBound(tabA)
val = tabA(indA)
' Recherche de l'élément en cours de tabA dans
tabB
booTrouve = False
For i = 1 To UBound(tabB)
If val = tabB(i) Then
booTrouve = True
Exit For
End If
Next
' Si l'élément en cours de tabA n'est pas dans
tabB
If Not booTrouve Then
' On l'insère dans le tableau résultant : tabC
ReDim Preserve tabC(indC)
tabC(indC) = val
indC = indC + 1
End If
Next
' --------- Affichage du tableau résultant : tabC ----
--------------
For i = LBound(tabC) To UBound(tabC)
Debug.Print tabC(i)
Next
End Sub
A+
Rv
<anonymous@discussions.microsoft.com> a écrit dans le
message de
news:2425401c45f36$5a2f79b0$a401280a@phx.gbl...
Bonjour
J'ai essayé testDiff mais j'ai le message Type d'argument
ByRef incompatible !!!lorsque la procédure arrive à la
ligne tabC = differenceTableau....
Salutations
-----Message d'origine-----
Salut,
Pour la première partie
Voici un exemple à insérer dans un nouveau module.
Option Explicit
Option Base 1
Const BORNESUP = 100
Sub testDiff()
Dim tabA(BORNESUP) As Long
Dim tabB(BORNESUP) As Long
Dim tabC() As Long
Dim i As Long
' Initialisation des tableaux
For i = 1 To BORNESUP
tabA(i) = i
Next
For i = 1 To BORNESUP - 5
tabB(i) = i + 2
Next
' Insertion des éléments dans le tableau résultant
(tabC)
tabC = differenceTableau(tabA(), tabB())
' Affichage du le tableau résultant (tabC)
For i = LBound(tabC) To UBound(tabC)
Debug.Print tabC(i)
Next
End Sub
Function differenceTableau(a() As Long, b() As Long) As
Long()
Dim res() As Long
Dim indA As Long
Dim indRes As Long
indRes = 1
' Parcours des éléments de a
For indA = 1 To UBound(a)
' Si l'élément en cours n'est pas dans b
If Not rechercheVal(a(indA), b) Then
' On l'insère dans le tableau résultat
ReDim Preserve res(indRes)
res(indRes) = a(indA)
indRes = indRes + 1
End If
Next
differenceTableau = res
End Function
Function rechercheVal(val As Long, tableRes() As Long) As
Boolean
Dim i As Long
rechercheVal = False
For i = 1 To UBound(tableRes)
If val = tableRes(i) Then
rechercheVal = True
Exit For
End If
Next
End Function
En lançant la procédure testDiff. Ca doit marcher?
Pour l'écriture dans la feuille excel je ne comprends pas
la logique qui
permet de passer d'un tableau à une dimension (tabC) à
une feuille excel sur
deux dimensions?
A+
Rv
<anonymous@discussions.microsoft.com> a écrit dans le
message de
news:23a6a01c45eab$c5de8650$a401280a@phx.gbl...
Merci pour la réponse je vais essayer de préciser ma
demande.
Le tableau1() que j'initialise contient une série
continue
de nombres (de 1 à 100)Cela pouuait être par exemple une
série de tickets numérotés de 1 à 100
le tableau2() serait alors la liste des tickets vendus
dans mon exemple 3 à 97
je voudrais obtenir dans un 3 eme tableau, les tickets
resatnts soit dans mon exemple (1,2,98,99,100) et pouvoir
ensuite récuperer dans des cellules du classeur les
séries
obtenues soit par exemple en A1 1 en B1 2; en A2 : 98 et
en B2 :100. est ce possible.
J'avais pensé utiliser If IsError(Application.Match()Mais
je n'arrive pas à trouver ce que je dois mettre après
Match.
Je serais très heureuse d'y parvenir
Merci
-----Message d'origine-----
Bonjour Hélène,
Je ne suis pas sûr d'avoir compris le sens de ta
question
mais essaie ceci :
Pour les valeurs 1,2,98,99 et 100
Dim Arr()
arr = Array(1, 2, 98, 99, 100)
Et pour les valeurs de 1à2 et de 98 à 100
Dim Arr1()
Arr1 = Array(1, 2, 98, 99, 100)
Tu cherches autre chose ?
Salutations!
"Helene" <anonymous@discussions.microsoft.com> a écrit
dans le message de
news:2389b01c45e89$ca38b120$a501280a@phx.gbl...
Bonjour à tous
J'ai encore beaucoup de mal à utiliser des tableaux dans
VBA.
Voici mon problème : J'initialise un 1er tableau avec
par
exemple les valeurs 1 à 100.
Puis un second tableau avec les valeurs 3 à 97
Je voudrais obtenir un 3 eme tableau qui contiendrai les
valeurs 1,2,98,99 et 100. Comment puis-je m'y prendre ?
Par ailleurs à partir de ce 3 eme tableau pourrais
obtenir
les séries restantes : ex: de 1à2 et de 98 à 100 ?
Merci pour votre aide.
.
.
.
-----Message d'origine-----
Salut,
Je l'ai testé avec Excel2000 et XP. Quelle est votre
version?
Sinon voila une version moins découpée:
Option Explicit
Option Base 1
Const BORNESUP = 1000
Sub test()
Dim tabA(BORNESUP) As Long
Dim tabB(BORNESUP) As Long
Dim tabC() As Long
Dim val As Long
Dim indA As Long
Dim indB As Long
Dim indC As Long
Dim i As Long
Dim booTrouve As Boolean
' ------------ Initialisation des tableaux -----------
-----
For i = 1 To BORNESUP
tabA(i) = i
Next
For i = i To BORNESUP - 5
tabB(i) = i + 2
Next
' -------- Remplissage de tabC ------------
indC = 1
' Parcours des éléments de a
For indA = 1 To UBound(tabA)
val = tabA(indA)
' Recherche de l'élément en cours de tabA dans
tabB
booTrouve = False
For i = 1 To UBound(tabB)
If val = tabB(i) Then
booTrouve = True
Exit For
End If
Next
' Si l'élément en cours de tabA n'est pas dans
tabB
If Not booTrouve Then
' On l'insère dans le tableau résultant : tabC
ReDim Preserve tabC(indC)
tabC(indC) = val
indC = indC + 1
End If
Next
' --------- Affichage du tableau résultant : tabC ----
--------------
For i = LBound(tabC) To UBound(tabC)
Debug.Print tabC(i)
Next
End Sub
A+
Rv
a écrit dans le
message de
news:2425401c45f36$5a2f79b0$
Bonjour
J'ai essayé testDiff mais j'ai le message Type d'argument
ByRef incompatible !!!lorsque la procédure arrive à la
ligne tabC = differenceTableau....
Salutations-----Message d'origine-----
Salut,
Pour la première partie
Voici un exemple à insérer dans un nouveau module.
Option Explicit
Option Base 1
Const BORNESUP = 100
Sub testDiff()
Dim tabA(BORNESUP) As Long
Dim tabB(BORNESUP) As Long
Dim tabC() As Long
Dim i As Long
' Initialisation des tableaux
For i = 1 To BORNESUP
tabA(i) = i
Next
For i = 1 To BORNESUP - 5
tabB(i) = i + 2
Next
' Insertion des éléments dans le tableau résultant
(tabC)tabC = differenceTableau(tabA(), tabB())
' Affichage du le tableau résultant (tabC)
For i = LBound(tabC) To UBound(tabC)
Debug.Print tabC(i)
Next
End Sub
Function differenceTableau(a() As Long, b() As Long) As
Long()Dim res() As Long
Dim indA As Long
Dim indRes As Long
indRes = 1
' Parcours des éléments de a
For indA = 1 To UBound(a)
' Si l'élément en cours n'est pas dans b
If Not rechercheVal(a(indA), b) Then
' On l'insère dans le tableau résultat
ReDim Preserve res(indRes)
res(indRes) = a(indA)
indRes = indRes + 1
End If
Next
differenceTableau = res
End Function
Function rechercheVal(val As Long, tableRes() As Long) As
BooleanDim i As Long
rechercheVal = False
For i = 1 To UBound(tableRes)
If val = tableRes(i) Then
rechercheVal = True
Exit For
End If
Next
End Function
En lançant la procédure testDiff. Ca doit marcher?
Pour l'écriture dans la feuille excel je ne comprends pas
la logique quipermet de passer d'un tableau à une dimension (tabC) à
une feuille excel surdeux dimensions?
A+
Rv
a écrit dans le
message denews:23a6a01c45eab$c5de8650$
Merci pour la réponse je vais essayer de préciser ma
demande.
Le tableau1() que j'initialise contient une série
continue
de nombres (de 1 à 100)Cela pouuait être par exemple une
série de tickets numérotés de 1 à 100
le tableau2() serait alors la liste des tickets vendus
dans mon exemple 3 à 97
je voudrais obtenir dans un 3 eme tableau, les tickets
resatnts soit dans mon exemple (1,2,98,99,100) et pouvoir
ensuite récuperer dans des cellules du classeur les
séries
obtenues soit par exemple en A1 1 en B1 2; en A2 : 98 et
en B2 :100. est ce possible.
J'avais pensé utiliser If IsError(Application.Match()Mais
je n'arrive pas à trouver ce que je dois mettre après
Match.
Je serais très heureuse d'y parvenir
Merci-----Message d'origine-----
Bonjour Hélène,
Je ne suis pas sûr d'avoir compris le sens de ta
question
mais essaie ceci :
Pour les valeurs 1,2,98,99 et 100
Dim Arr()
arr = Array(1, 2, 98, 99, 100)
Et pour les valeurs de 1à2 et de 98 à 100
Dim Arr1()
Arr1 = Array(1, 2, 98, 99, 100)
Tu cherches autre chose ?
Salutations!
"Helene" a écrit
dans le message denews:2389b01c45e89$ca38b120$
Bonjour à tous
J'ai encore beaucoup de mal à utiliser des tableaux dans
VBA.
Voici mon problème : J'initialise un 1er tableau avec
par
exemple les valeurs 1 à 100.
Puis un second tableau avec les valeurs 3 à 97
Je voudrais obtenir un 3 eme tableau qui contiendrai les
valeurs 1,2,98,99 et 100. Comment puis-je m'y prendre ?
Par ailleurs à partir de ce 3 eme tableau pourrais
obtenirles séries restantes : ex: de 1à2 et de 98 à 100 ?
Merci pour votre aide.
.
.
.