récupRécupération d’une variable dans des cases Excel

  • Initiateur de la discussion Initiateur de la discussion hanim
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

H

hanim

Guest
Bonjour tout le monde,

Je veux faire une macro VBA pour récupérer une variable numérique dans une case de mon fichier Excel pour en suite générer des lignes correspondant à la valeur de cette variable (dans mon exemple en pièce jointe trois articles en la réf 1 donc je veux récupérer l’entier 3). Pour qu’à la suite faire une boucle pour générer 3 lignes dans le même ou un autre fichier Excel (trois ligne : ref1.1 ; ref1.2 ; ref1.3).
J’espère que quelqu’un sait comment faire pour récupérer la variable et que j'étais +ou - claire!😕
Je reste à votre disposition pour toute question.

Merci d’avance.
 

Pièces jointes

Re : récupRécupération d’une variable dans des cases Excel

Bonjour Hanim et bienvenue 🙂,
A tester en ayant la feuille 1 active, le résultat sera copié en feuille 2 😛.
Code:
Sub Test()
Dim DerCol As Integer, I As Integer, J As Integer, Ligne As Integer
DerCol = Range("V1").End(xlToLeft).Column
Ligne = 2
With Sheets("Feuil2")
For I = 2 To DerCol
For J = 1 To Cells(2, I)
.Range("A" & Ligne) = Cells(1, I) & "." & J
Ligne = Ligne + 1
Next J
Next I
End With
End Sub
Bonne soirée 😎
 
Re : récupRécupération d’une variable dans des cases Excel

merci bcp JNP pour ta réponse et ta rapidité,

ton code marche bien, Or ce n'est pas ce que je veux faire peut etre je me suis mal exprimé, en fait la zone en verre n'exisite pas, c'est ce que je veux générer automatiquement, je l'ai donnée en exemple pour mieux illustrer mon besoin.
si ce n'était que copier ça aurait été facile! 🙄
ce que je veux c'est faire une boucle dans ma macro et la boucle va dependre du nombre renseigner dans la case, donc il faut récupérer à chaque fois ce nombre réel pour la génération automatique.

bon j'espère que qlq'un connait la réponse.
 
Re : récupRécupération d’une variable dans des cases Excel

Re 🙂,
J’espère que quelqu’un sait comment faire pour récupérer la variable et que j'étais +ou - claire!😕.
Soit tu ne l'es pas du tout, soit tu n'as pas suivi ma macro 😕...
si ce n'était que copier ça aurait été facile! 🙄
ce que je veux c'est faire une boucle dans ma macro et la boucle va dependre du nombre renseigner dans la case, donc il faut récupérer à chaque fois ce nombre réel pour la génération automatique.
Ma macro fait une double boucle, une pour aller récupérer les valeurs Ref1-2-3, une pour aller récupérer le nombre dans la case en dessous et utiliser cette valeur pour génére les lignes supplémentaires 😛...
Je te mets le fichier en PJ, j'ai modifié pour que ce soit ton tableau vert (vide au départ) qui soit rempli 🙄...
Sinon, j'attends tes explications plus claires 😛.
Bises pour la peine 😎
 
Re : récupRécupération d’une variable dans des cases Excel

merci Bcp JNP c'est vrai que je n'ai pas fait attention au départ!! alors je ne vois pas de pièce jointe dans ton message mais j'ai bien lu cette fois ton code et ça marche !!
merci encore une fois. 😉
 
Re : récupRécupération d’une variable dans des cases Excel

Re 🙂,
Désolé pour la PJ 😱...
Dans quel sens plusieurs lignes 😕 ?
Bonne journée 😎

c'est pas grave!! bon je joins un exemple de ce que je veux avoir en sortie, j'ai pu faire un truc de ma part donc je vous mets le code en bas.
ce que je voudrais aussi c'est pouvoir coller ça dans une colonne bien précise, je pense que c'est ça "Cells(1, I) & "." & J" qui affecte l'emplacement des cellules mais non , car quand je change 1 en un autre nombre ça me donne l'importe quoi en sortie bon bref voila!😕
🙄merci beaucoup JNP
bonne journée. 😉

Sub Test()
Dim DerCol As Integer, I As Integer, J As Integer, Ligne As Integer, DerLign As Integer, K As Integer
Ligne = 1
DerCol = Range("V1").End(xlToLeft).Column
DerLign = Range("A65536").End(xlUp).Row
With Sheets("Feuil2")
For I = 2 To DerCol
For K = 2 To DerLign + 1
For J = 1 To Cells(K, I)
.Range("A" & Ligne) = Cells(1, I) & "." & J
Ligne = Ligne + 1
Next J
Next K
Next I
End With
End Sub
 

Pièces jointes

Re : récupRécupération d’une variable dans des cases Excel

Re 🙂,
Tu ne te simplifie pas la tâche 😛...
Bon, a tester, si ça fonctionne, les explications ensuite 🙄...
Code:
Sub Test()
Dim DerLig As Integer, DerCol As Integer, Ligne As Integer
Dim I As Integer, J As Integer, K As Integer
DerLig = Range("A65536").End(xlUp).Row
Ligne = 2
With Sheets("Feuil2")
.Cells.Clear
.Range("A1:B1").Interior.ColorIndex = 36
.Range("A1:B1").Font.Bold = True
.Range("A1") = "Article"
.Range("B1") = "Référence"
For I = 2 To DerLig
DerCol = Evaluate("COUNTA(B" & I & ":D" & I & ")") + 1
If DerCol <> 1 Then
.Range("A" & Ligne) = Application.WorksheetFunction.Proper(Cells(I, 1))
.Range("A" & Ligne).Font.Bold = True
.Range("A" & Ligne).Interior.ColorIndex = 24
End If
DerCol = Evaluate("COUNTA(B" & I & ":D" & I & ")") + 1
For J = 2 To DerCol
For K = 1 To Cells(I, J)
.Range("B" & Ligne) = Application.WorksheetFunction.Proper(Cells(1, J)) & "." & K
Ligne = Ligne + 1
Next K
Next J
Next I
With .Range("A1:B" & Ligne - 1)
With .Borders(xlEdgeLeft)
    .LineStyle = xlContinuous
    .ColorIndex = 0
    .Weight = xlThin
End With
With .Borders(xlEdgeTop)
    .LineStyle = xlContinuous
    .ColorIndex = 0
    .Weight = xlThin
End With
With .Borders(xlEdgeBottom)
    .LineStyle = xlContinuous
    .ColorIndex = 0
    .Weight = xlThin
End With
With .Borders(xlEdgeRight)
    .LineStyle = xlContinuous
    .ColorIndex = 0
    .Weight = xlThin
End With
With .Borders(xlInsideVertical)
    .LineStyle = xlContinuous
    .ColorIndex = 0
    .Weight = xlThin
End With
With .Borders(xlInsideHorizontal)
    .LineStyle = xlContinuous
    .ColorIndex = 0
    .Weight = xlThin
End With
End With
End With
End Sub
Bon courage 😎
 
Re : récupRécupération d’une variable dans des cases Excel

Re 🙂,
Tu ne te simplifie pas la tâche 😛...
Bon, a tester, si ça fonctionne, les explications ensuite 🙄...
Code:
Sub Test()
Dim DerLig As Integer, DerCol As Integer, Ligne As Integer
Dim I As Integer, J As Integer, K As Integer
DerLig = Range("A65536").End(xlUp).Row
Ligne = 2
With Sheets("Feuil2")
.Cells.Clear
.Range("A1:B1").Interior.ColorIndex = 36
.Range("A1:B1").Font.Bold = True
.Range("A1") = "Article"
.Range("B1") = "Référence"
For I = 2 To DerLig
DerCol = Evaluate("COUNTA(B" & I & ":D" & I & ")") + 1
If DerCol <> 1 Then
.Range("A" & Ligne) = Application.WorksheetFunction.Proper(Cells(I, 1))
.Range("A" & Ligne).Font.Bold = True
.Range("A" & Ligne).Interior.ColorIndex = 24
End If
DerCol = Evaluate("COUNTA(B" & I & ":D" & I & ")") + 1
For J = 2 To DerCol
For K = 1 To Cells(I, J)
.Range("B" & Ligne) = Application.WorksheetFunction.Proper(Cells(1, J)) & "." & K
Ligne = Ligne + 1
Next K
Next J
Next I
With .Range("A1:B" & Ligne - 1)
With .Borders(xlEdgeLeft)
    .LineStyle = xlContinuous
    .ColorIndex = 0
    .Weight = xlThin
End With
With .Borders(xlEdgeTop)
    .LineStyle = xlContinuous
    .ColorIndex = 0
    .Weight = xlThin
End With
With .Borders(xlEdgeBottom)
    .LineStyle = xlContinuous
    .ColorIndex = 0
    .Weight = xlThin
End With
With .Borders(xlEdgeRight)
    .LineStyle = xlContinuous
    .ColorIndex = 0
    .Weight = xlThin
End With
With .Borders(xlInsideVertical)
    .LineStyle = xlContinuous
    .ColorIndex = 0
    .Weight = xlThin
End With
With .Borders(xlInsideHorizontal)
    .LineStyle = xlContinuous
    .ColorIndex = 0
    .Weight = xlThin
End With
End With
End With
End Sub
Bon courage 😎

🙂merci beaucoup ................beaucoup JNP, je vais tester et t'informer de la suite.
Bonne après midi ! 😀
 
Re : récupRécupération d’une variable dans des cases Excel

Bonjour JNP,
bon voila ton code est génial merci beaucoup ça marche ! mnt je veux comprendre un peut car pour faire des changements je ne sais pas trop comment faire.
par exemple si je veux copier que depuis la colonne C (copier que les ref 2 et 3 ) je ne sais pas quel paramètre changer😕
donc si vous pouvez m'éclaircir ça serait génial 😎

Bonne journée
 
Re : récupRécupération d’une variable dans des cases Excel

Re 🙂,
par exemple si je veux copier que depuis la colonne C (copier que les ref 2 et 3 ) je ne sais pas quel paramètre changer😕
donc si vous pouvez m'éclaircir ça serait génial 😎
Tu peux me tutoyer comme c'est l'habitude sur le forum 😛...
Le nerf est ici
Code:
DerCol = Evaluate("COUNTA(B" & I & ":D" & I & ")") + 1
que j'ai d'ailleurs oublié de supprimer quelques lignes en dessous 😱, tu peux supprimer la 2ème ligne 😛...
B et D sont les colonnes entre lesquelles tu veux travailler.
+1 permet de corriger le fait que tu commence à B
For J = 2 permet aussi de commencer à B
Evaluate("COUNTA(...)") est l'équivalent de NBVAL pour que tu puisses avoir des différences entre les catégories. Attention, un trou au milieu ne fonctionnera pas 🙄...
Bon courage 😎
 
Re : récupRécupération d’une variable dans des cases Excel

Re 🙂,Tu peux me tutoyer comme c'est l'habitude sur le forum 😛...
Le nerf est ici
Code:
DerCol = Evaluate("COUNTA(B" & I & ":D" & I & ")") + 1
que j'ai d'ailleurs oublié de supprimer quelques lignes en dessous 😱, tu peux supprimer la 2ème ligne 😛...
B et D sont les colonnes entre lesquelles tu veux travailler.
+1 permet de corriger le fait que tu commence à B
For J = 2 permet aussi de commencer à B
Evaluate("COUNTA(...)") est l'équivalent de NBVAL pour que tu puisses avoir des différences entre les catégories. Attention, un trou au milieu ne fonctionnera pas 🙄...
Bon courage 😎

Bonjour,

j'ai pu comprendre que c'était (DerCol = Evaluate("COUNTA(B" & I & "😀" & I & ")") + 1) la ligne concerné sauf que en changeant B par C j'ai tjours ref 1 et ref 2 mais pas la ref 3 or je veux l'inverse ref 2 et ref 3 mais pas de ref 1
merci bcp pour ton investisment 🙂 dans ma cause 😱
bonne après midi
 
Re : récupRécupération d’une variable dans des cases Excel

Re 🙂,
B et D sont les colonnes entre lesquelles tu veux travailler.
+1 permet de corriger le fait que tu commence à B
For J = 2 permet aussi de commencer à B
Plus (j'avais oublié) If DerCol <> 1 Then
permet de vérifier que ce n'est pas la colonne A donc
Code:
For I = 2 To DerLig
DerCol = Evaluate("COUNTA(C" & I & ":D" & I & ")") + 2
If DerCol <> 2 Then
.Range("A" & Ligne) = Application.WorksheetFunction.Proper(Cells(I, 1))
.Range("A" & Ligne).Font.Bold = True
.Range("A" & Ligne).Interior.ColorIndex = 24
End If
For J = 3 To DerCol
Bon courage 😎
 
Re : récupRécupération d’une variable dans des cases Excel

Re 🙂,Plus (j'avais oublié) If DerCol <> 1 Then
permet de vérifier que ce n'est pas la colonne A donc
Code:
For I = 2 To DerLig
DerCol = Evaluate("COUNTA(C" & I & ":D" & I & ")") + 2
If DerCol <> 2 Then
.Range("A" & Ligne) = Application.WorksheetFunction.Proper(Cells(I, 1))
.Range("A" & Ligne).Font.Bold = True
.Range("A" & Ligne).Interior.ColorIndex = 24
End If
For J = 3 To DerCol
Bon courage 😎

Bonjour,

merci bcp JNP, franchement chapeau. ce truc m'a cassé la tête depuis ce matin.
bonne journée et j'espère que je ne vais plus te déranger et que ça va etre bon !!! 😉
😱juste une dernière chose 🙄 vu que tu as l'air balaise !
tu sais par hasard 😛 comment faire pour générer des feuilles excel à partir par exemple de la liste que j'ai dans la colonne A ( pour chaque article j'aurai une feuille générée qui portera son nom)

Bonne après midi 😎
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

D
Réponses
4
Affichages
434
DidPouAxi
D
Retour