Mettre deux cellules en une - excel VBA
Résolu/Fermé
A voir également:
- Mettre deux cellules en une - excel VBA
- Formule excel pour additionner plusieurs cellules - Guide
- Concatener deux cellules excel - Guide
- Liste déroulante excel - Guide
- Aller à la ligne dans une cellule excel - Guide
- Verrouiller cellules excel - Guide
3 réponses
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 752
12 avril 2011 à 15:53
12 avril 2011 à 15:53
Bonjour,
2 choses :
1- Cells(Ligne, Colonne) donc lorsque tu écris : Cells(d, a + 1) tu décales d'une colonne vers la droite.
2- le + est utilisé en VBA pour faire une somme de nombres, pas pour concatener. Remplace donc ton + par 3 choix :
- par & (le contenu sera alors contigue : aaaaaacccccc)
- ou par : & " " & (mettra un espace entre tes deux contenus : aaaaa ccccc)
- ou par : & Chr(10) & (qui te permet d'aller à la ligne dans ta même cellule)
2 choses :
1- Cells(Ligne, Colonne) donc lorsque tu écris : Cells(d, a + 1) tu décales d'une colonne vers la droite.
2- le + est utilisé en VBA pour faire une somme de nombres, pas pour concatener. Remplace donc ton + par 3 choix :
- par & (le contenu sera alors contigue : aaaaaacccccc)
- ou par : & " " & (mettra un espace entre tes deux contenus : aaaaa ccccc)
- ou par : & Chr(10) & (qui te permet d'aller à la ligne dans ta même cellule)
Utilisateur anonyme
12 avril 2011 à 16:17
12 avril 2011 à 16:17
Bonjour,
Et merci, je vais essayer tout ça et je vous tiens au courant.
Et merci, je vais essayer tout ça et je vous tiens au courant.
Utilisateur anonyme
12 avril 2011 à 17:39
12 avril 2011 à 17:39
C'est très bien merci !
PS : La remarque sur a+1 est juste, c'est une étourderie.
Si je peux me permettre, j'essaye à présent de regrouper dans une seule case les valeurs qui se suivent mais qui peuvent être plus de deux.
Mon code :
Le problème est que si j'ai par exemple :
aaaaa
--------
bbbbb
--------
cccccc
je vais obtenir :
aaaaa
bbbbb
ccccccc
--------
bbbbb
ccccccc
et que je voulais juste
aaa
bbb
ccc
Suis-je clair ?
Merci en tous cas !
PS : La remarque sur a+1 est juste, c'est une étourderie.
Si je peux me permettre, j'essaye à présent de regrouper dans une seule case les valeurs qui se suivent mais qui peuvent être plus de deux.
Mon code :
Dim a As Long Dim d As Long Dim e As Long For a = 1 To 100 For d = 1 To 100 If Sheets("Feuil1").Cells(d, a).Value <> "" Then e = d + 1 Sheets("Feuil3").Cells(d, a).Value = Sheets("Feuil1").Cells(d, a).Value While Sheets("Feuil1").Cells(e, a).Value <> "" Sheets("Feuil3").Cells(d, a).Value = Sheets("Feuil3").Cells(d, a).Value & Chr(10) & Sheets("Feuil1").Cells(e, a).Value e = e + 1 Wend End If Next Next
Le problème est que si j'ai par exemple :
aaaaa
--------
bbbbb
--------
cccccc
je vais obtenir :
aaaaa
bbbbb
ccccccc
--------
bbbbb
ccccccc
et que je voulais juste
aaa
bbb
ccc
Suis-je clair ?
Merci en tous cas !
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 752
13 avril 2011 à 08:16
13 avril 2011 à 08:16
Salut,
Oui c'est clair. Il te faut donc, à un moment effacer les cellules que tu regroupes (tes cellules Cells(e, a)). Essaye comme ceci :
!!! Attention macro qui supprime des données, à tester dans une copie du fichier!!!
Oui c'est clair. Il te faut donc, à un moment effacer les cellules que tu regroupes (tes cellules Cells(e, a)). Essaye comme ceci :
!!! Attention macro qui supprime des données, à tester dans une copie du fichier!!!
Dim a As Long Dim d As Long Dim e As Long 'copie toutes les données de feuil1 à feuil3 Sheets("Feuil1").Range("A1:CV100").Copy Sheets("Feuil3").Range("A1") For a = 1 To 100 For d = 1 To 100 e = d + 1 While Sheets("Feuil1").Cells(e, a).Value <> "" Sheets("Feuil3").Cells(d, a).Value = Sheets("Feuil3").Cells(d, a).Value & Chr(10) & Sheets("Feuil3").Cells(e, a).Value e = e + 1 Sheets("Feuil3").Cells(e - 1, a).Value = "" Wend End If Next d Next a
Bonjour,
Oui, c'est ce que je me suis décidé à faire avec ce code :
Avant cela, je copie ma feuil1 en feuil4.
Trouvez-vous cela "cohérent" ?
Merci pour votre aide
Oui, c'est ce que je me suis décidé à faire avec ce code :
Dim a As Long Dim d As Long Dim e As Long For a = 1 To 100 For d = 1 To 100 If Sheets("Feuil4").Cells(d, a).Value <> "" Then e = d + 1 Sheets("Feuil3").Cells(d, a).Value = Sheets("Feuil4").Cells(d, a).Value While Sheets("Feuil4").Cells(e, a).Value <> "" Sheets("Feuil3").Cells(d, a).Value = Sheets("Feuil3").Cells(d, a).Value & Chr(10) & Sheets("Feuil4").Cells(e, a).Value Sheets("Feuil4").Cells(e, a).Value = "" e = e + 1 Wend End If Next Next
Avant cela, je copie ma feuil1 en feuil4.
Trouvez-vous cela "cohérent" ?
Merci pour votre aide
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 752
13 avril 2011 à 09:40
13 avril 2011 à 09:40
Trouvez-vous cela "cohérent" ? La vraie question est : est ce que cela fonctionne? Si oui, tout est bon! problème résolu. Sinon posez vos questions...
Haha, oui, ça fonctionne, donc merci.
Je vais maintenant essayer de faire cela sur tout un tableau.
Mon problème général est de "ranger" un arbre de type :
s1
s11
s111
s112
s12
s121
s122
s123
s2
etc...
Que je voudrais ranger en :
s111
s1 s11 s112
s12 s121
s122
s123
Où tout ceci tient en une ligne de tableau.
Et je me contente de poser quelques questions "intermédiaires", je pense peut-être tenir une idée pour y parvenir (mais je ne suis évidemment pas réfractaire à d'autres idées).
Merci bien en tous cas.
Je vais maintenant essayer de faire cela sur tout un tableau.
Mon problème général est de "ranger" un arbre de type :
s1
s11
s111
s112
s12
s121
s122
s123
s2
etc...
Que je voudrais ranger en :
s111
s1 s11 s112
s12 s121
s122
s123
Où tout ceci tient en une ligne de tableau.
Et je me contente de poser quelques questions "intermédiaires", je pense peut-être tenir une idée pour y parvenir (mais je ne suis évidemment pas réfractaire à d'autres idées).
Merci bien en tous cas.