Macro permet au texte de s'étendre sur colonnes suivantes

Bonjour,

je suis débutante dans les macros. Alors, il faut bien m'expliqué.

J'aimerais créer un macro qui permettrait à mon texte de la colonne A de s'étendre sur les colonnes suivantes. Je dois garder la colonne A à une petite largeur. Les lignes de chaque colonne contiennent des petites formules pour importer d'une autre feuille les informations changeantes d'un tableau croisé dynamique vers ma feuille en question.

Voici la formule: =TCD!D35

Précision: pour ce qui est des lignes de la colonne A qui contiennent du texte, les colonnes suivantes contiennent seulement la formule, mais il a rien d'importé

ex:......A.........B........C

1...................34......lire

2.. ...je dem

3...................46....macro

La cellule A2, la phrase est incomplet.

Que puis-je faire avec ça?

Voici un petit détail. Je sais pas si ça vous sera utile.

Je fais toujours une copie de ma feuille de formule nommé "modele" quand les informations de mon tableau croisé dynamique change.

Bonjour

Si tu ne peux pas augmenter la largeur de la colonne A

Augmente sa hauteur et opte pour une écriture verticale, ou avec un renvoi automatique à la ligne (voir dans las options du format de cellule)

Ce n'est pas vraiment ça que je voulais que ça fasse. Mais merci d'avoir pris du temps pour moi, Banzai64.

J'ai peut-être mal expliqué mon problème.

Les cellules de ma colonne A doit rester tel quel, que se soit pour la largeur ou la longueur . La grosseur du texte aussi ne doit pas changer. J'ai pensé aujourd'hui ce qui règlerait mon problème serait d'avoir un macro qui

fusionnerais mes colonnes A, B, C ensemble. Mais comment faire?

Si cela peut aidé, voici quelques informations. Comme je l'ai dit, mes cellules de la page "modèle" contiennent la formule d'écrit plus haut. J'ai créé un macro qui copie ma page "modèle". Après, elle copie les cellules avec les formules et elle fait un collage spécial "valeur et formats des nombres", pour que les informations dans les cellules deviennent du texte normale.

Alors comment pourrais-je dire qu'à cette ligne, quand il y a du texte dans la colonne "A", fusionne toi avec les autres cellules B et C?

S'il y a d'autres solutions gênez-vous pas à me le proposer.

merci de prendre le temps de m'aider.

Bonsoir

Cela veut dire que dans les colonnes B et C sont libres de toute information

Le mieux ce serait de joindre un fichier

Dans la page 1 ce que tu as et dans la page 2 ce que tu voudrais avoir

En attendant essayes

Option Explicit

Sub Fusionne()
Dim J As Long

  For J = 1 To Range("A" & Rows.Count).End(xlUp).Row
    If Range("A" & J) <> "" Then
      Range("A" & J).Resize(1, 3).Merge
    End If
  Next J
End Sub
maguy a écrit :

Alors comment pourrais-je dire qu'à cette ligne, quand il y a du texte dans la colonne "A", fusionne toi avec les autres cellules B et C?

Cette ligne à une position fixe où elle va varier de position suivant l'execution d'une macro ?

Dans les autres cellules ce sera quoi comme contenu, des chiffres ou du texte également ?

Merci Lean de ton intérêt.

Je parle des lignes qui contiennent du texte dans la colonne A. Mais leur emplacement peut-être différent à cause de mon tableau croisé dynamique qui est sur un autre feuille, nomme TCD. Ca dépendant toujours de ce que j'affiche dans mon tableau croisé dynamique. Mais quand il a du texte sur certaines lignes de la colonne "A" de ma feuille "Modele", les autres colonnes des mème lignes il n"y a rien d'inscrit. Alors c'est pour cela que je pensais de les fusionner.


Banzai64 a écrit :

Bonsoir

Cela veut dire que dans les colonnes B et C sont libres de toute information

Le mieux ce serait de joindre un fichier

Dans la page 1 ce que tu as et dans la page 2 ce que tu voudrais avoir

En attendant essayes

Option Explicit

Sub Fusionne()
Dim J As Long

  For J = 1 To Range("A" & Rows.Count).End(xlUp).Row
    If Range("A" & J) <> "" Then
      Range("A" & J).Resize(1, 3).Merge
    End If
  Next J
End Sub

Un fichier???

Comment cela se fait-il?

Tu sais j'en suis vraiment dans mes débuts avec tout ça.

Dans ce cas essayez le code suivant

Option Explicit

Sub Fusionne()
Dim J As Long

  For J = 1 To Range("A" & Rows.Count).End(xlUp).Row
    If Range("B" & J) = "" Then
      Range("A" & J).Resize(1, 3).Merge
    End If
  Next J
End Sub
 

Pour joindre un fichier regardez en dessous du cadre où vous écrivez votre message.

Vous avez deux onglets, option ou ajouter des fichiers joints

Cliquez sur " ajouter des fichiers joints "

Cliquez sur parcourir et allez chercher votre fichier dans votre ordinateur

Cliquez ensuite sur le bouton " ajouter le fichier " juste à droite du bouton parcourir

Puis une fois le message fini d'être rédigé, cliquez sur Envoyer.

Bonjour Lean,

ton macro a l'air a fonctionner mais pas très bien dans mon cas.

J'ai remarqué que mes cases vide contiennent la valeur "0". Elle n'est pas visible à cause de la sélection d'affichage: Pas de zéro.

J'ai remplacer le: If Range("B" & J) = "0" Then

mais sans succès.

Je veux fusionner les cellules entre A12:A39, seulement s'il a du texte avec les colonnes B et C.

La colonne B contient des chiffres

La colonne C contient du texte et des chiffres.

j'aurais peut-être du écrire ces petits détails.

Je ne veux pas mettre le fichier sur internet. désolé.

Bonjour Banzai64,

j'ai essayé ton macro, mais sans succès.

Lean et toi, vous m'avez donné un macro semblable.

J'ai écris des renseignements supplémentaires à Lean.

Va les voirs, il te seront peut-être utile.

Un gros merci à vous deux pour votre aide, je l'apprécie beaucoup.

Bonjour Maguy, Banzai64

Maguy,

Nous reprennons à chaque fois le code d'origine de Banzai64 pour l'adapter donc il est normal qu'il soit le même à un pouillème près.

l'adaptation ci-dessous du code avec prise en compte des difficultés rencontrées.

Sub Fusionne()
Application.DisplayAlerts = False
Dim J As Long
For J = 12 To 39
If Range("B" & J) = "0" And Range("c" & J) = "0" Then
Range("A" & J).Resize(1, 3).Merge
else
End If
Next J
End Sub

Mille merci à Lean pour ta modification

et à Banzai64 pour ton code.

OUI.......ça marche.

J'aurais deux petite demandes:

J'aimerais inclure dans le code. Quand il a la valeur "0" dans la colonne "A" de ne pas faire la fusion.

et l'autre est que j'ai déjà écrit un code et je voudais incluse la votre.

_voici mon code:

Sub maguy() '

' maguy Macro

'

' Touche de raccourci du clavierÊ: Option+Cmd+s

'

Sheets("Modele").Select

Sheets("Modele").Copy Before:=Sheets(1)

Sheets(1).Name = Range("I6")

Range("D4:T224").Select

Selection.Copy

Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _

xlNone, SkipBlanks:=False, Transpose:=False

Range("E14:T224").Select

ActiveWindow.SmallScroll Down:=-164

Range("I18").Select

Range("E14:E224").Select

Application.CutCopyMode = False

Selection.TextToColumns Destination:=Range("E14"), DataType:=xlDelimited, _

TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _

Semicolon:=False, Comma:=False, Space:=False, Other:=False, FieldInfo _

:=Array(1, 1)

Range("P14:P150").Select

Selection.TextToColumns Destination:=Range("P14"), DataType:=xlDelimited, _

TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _

Semicolon:=False, Comma:=False, Space:=False, Other:=False, FieldInfo _

:=Array(1, 1)

Range("T24").Select

End Sub

_]Voici votre code modifié selon mes lignes et colonnes:

Je veux qu'il le fasse après la formation de ma nouvelle page.

Sub Fusionne()

Application.DisplayAlerts = False

Dim J As Long

For J = 13 To 39

If Range("E" & J) = "0" And Range("F" & J) = "0" Then

Range("D" & J).Resize(1, 6).Merge

Else

End If

Next J

For J = 13 To 39

If Range("P" & J) = "0" And Range("Q" & J) = "0" Then

Range("O" & J).Resize(1, 6).Merge

Else

End If

Next J

For J = 50 To 76

If Range("E" & J) = "0" And Range("F" & J) = "0" Then

Range("D" & J).Resize(1, 6).Merge

Else

End If

Next J

For J = 50 To 76

If Range("P" & J) = "0" And Range("Q" & J) = "0" Then

Range("O" & J).Resize(1, 6).Merge

Else

End If

Next J

For J = 87 To 113

If Range("E" & J) = "0" And Range("F" & J) = "0" Then

Range("D" & J).Resize(1, 6).Merge

Else

End If

Next J

For J = 87 To 113

If Range("P" & J) = "0" And Range("Q" & J) = "0" Then

Range("O" & J).Resize(1, 6).Merge

Else

End If

Next J

For J = 124 To 150

If Range("E" & J) = "0" And Range("F" & J) = "0" Then

Range("D" & J).Resize(1, 6).Merge

Else

End If

Next J

For J = 124 To 150

If Range("P" & J) = "0" And Range("Q" & J) = "0" Then

Range("O" & J).Resize(1, 6).Merge

Else

End If

Next J

For J = 161 To 187

If Range("E" & J) = "0" And Range("F" & J) = "0" Then

Range("D" & J).Resize(1, 6).Merge

Else

End If

Next J

For J = 161 To 187

If Range("P" & J) = "0" And Range("Q" & J) = "0" Then

Range("O" & J).Resize(1, 6).Merge

Else

End If

Next J

For J = 198 To 224

If Range("E" & J) = "0" And Range("F" & J) = "0" Then

Range("D" & J).Resize(1, 6).Merge

Else

End If

Next J

For J = 198 To 224

If Range("P" & J) = "0" And Range("Q" & J) = "0" Then

Range("O" & J).Resize(1, 6).Merge

Else

End If

Next J

End Sub

A tester car je ne suis pas sûr que cela fonctionne correctement

Je n'ai pas pris le code entier pour éviter de devoir faire 15 copié-collé pour rien.

Sub Fusionne()
Application.DisplayAlerts = False
Dim J As Long
For J = 13 To 39
If Range("a" & j) = "0" Then GoTo 1
If Range("E" & J) = "0" And Range("F" & J) = "0" Then
Range("D" & J).Resize(1, 6).Merge
Goto 1
For J = 13 To 39
If Range("a" & j) = "0" Then GoTo 1
If Range("P" & J) = "0" And Range("Q" & J) = "0" Then
Range("O" & J).Resize(1, 6).Merge
Goto 1
For J = 50 To 76
If Range("a" & j) = "0" Then GoTo 1
If Range("E" & J) = "0" And Range("F" & J) = "0" Then
Range("D" & J).Resize(1, 6).Merge
Goto 1
1:End if
next
end sub

Et pour que les deux macros s'enchainent rajouter dans la première macro au dessus de end sub call Fusionne

Malheureusement ça ne fonctionne pas.

il dit qu'il a une erreur de compilation variable For déjà utilisé.

Sur le tableau le deuxième "For J = 13" est souligné.

Sub Fusionne()
Application.DisplayAlerts = False
Dim J As Long
For J = 13 To 39
If Range("A" & J) <> "0" Then
If Range("E" & J) = "0" And Range("F" & J) = "0" Then
Range("D" & J).Resize(1, 6).Merge
If Range("P" & J) = "0" And Range("Q" & J) = "0" Then
Range("O" & J).Resize(1, 6).Merge
Else
End If
End If
End If
Next J
For J = 50 To 76
If Range("A" & J) <> "0" Then
If Range("E" & J) = "0" And Range("F" & J) = "0" Then
Range("D" & J).Resize(1, 6).Merge
Else
End If
End If
Next J
End Sub
 

Répéter les boucles suivantes sous cette syntaxe là en pensant à changer les xx par les bons numéros de ligne et les bonnes colonnes

For J = xx To xx
If Range("A" & J) <> "0" Then
If Range("xx" & J) = "0" And Range("xx" & J) = "0" Then
Range("xx" & J).Resize(1, 6).Merge
Else
End If
End If
Next J
12pour-maguy.zip (8.51 Ko)

Bonsoir

A essayer

Sub maguy() '

' maguy Macro
'
' Touche de raccourci du clavierÊ: Option+Cmd+s
'

  Sheets("Modele").Copy Before:=Sheets(1)
  Sheets(1).Name = Range("I6")
  Range("D4:T224").Copy
  Range("D4").PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
  Application.CutCopyMode = False
  Range("E14:E224").TextToColumns Destination:=Range("E14"), DataType:=xlDelimited, _
                TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
                Semicolon:=False, Comma:=False, Space:=False, Other:=False, _
                FieldInfo:=Array(1, 1)
  Range("P14:P150").TextToColumns Destination:=Range("P14"), DataType:=xlDelimited, _
                TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
                Semicolon:=False, Comma:=False, Space:=False, Other:=False, _
                FieldInfo:=Array(1, 1)

  Fusionne

  Range("T24").Select
End Sub

Sub Fusionne()
Dim J As Long, K As Long

  Application.DisplayAlerts = False
  For K = 13 To 198 Step 37
    For J = K To K + 26
      If Range("A" & J) <> "0" Then
        If Range("E" & J) = "0" And Range("F" & J) = "0" Then
          Range("D" & J).Resize(1, 6).Merge
        End If
        If Range("P" & J) = "0" And Range("Q" & J) = "0" Then
          Range("O" & J).Resize(1, 6).Merge
        End If
      End If
    Next J
  Next K
End Sub

Sub Fusionne()

Dim J As Long, K As Long

Application.DisplayAlerts = False

For K = 13 To 198 Step 37

For J = K To K + 26

If Range("D" & J) <> "0" Then

If Range("E" & J) = "0" And Range("F" & J) = "0" Then

Range("D" & J).Resize(1, 6).Merge

End If

_Ici_ ( If Range("P" & J) = "0" And Range("Q" & J) = "0" Then

Range("O" & J).Resize(1, 6).Merge )

End If

End If

Next J

Next K

End Sub

Bonjour

Ton code marche super Bien, mais sur la feuille direct. J'ai changer seulement le "A" pour le "D"

désolé. Le "A" n'était qu'un exemple. Je veux que la colonne "O" fasse la même chose pour la partie mentionné entre parenthèse.

If Range("O" & J) <> "0" Then

If Range("P" & J) = "0" And Range("P" & J) = "0" Then

Range("O" & J).Resize(1, 6).Merge

Il me reste juste cela à régler. J'ai essayé moi même, mais sans succès. Je suis trop une débutante.

En passant, si je met ton code dans mon code maguy ça ne fonctionne pas.

Bonjour

Sinon on n'a pas finit

Ok. Je joint une copie de ma feuille "modele". J'ai remplacé les textes par des "x" et les chiffres par des "1".

Voici un résumé de ce que je veux faire: Je veux voir les textes au complet qui sont marqué de "x" en gras des la colonnes "D" et "O", cela sans toucher au largeur et longueur des colonnes. Les lignes concernées sont de 13 à 39, 50 à 76, 87 à 113, 124 à 150, 161 à 187, 198 à 224. Donc, la solution est la fusion comme j'avais déjà dit, mais seulement au texte des colonnes concernées. (D et O). Comme je l'ai déjà mentionné les cases vides ont comme valeur "0" caché. Je veux fusionner les 6 colonnes des tableaux ensembles aux lignes appropriées.

(Ne pas oublier que d'une copie à l'autre que l'emplacements des textes peuvent changer à cause de mon tableau croisé dynamique.)

Si possible, je veux joindre le code dans mon code maguy, qui est copié plus haut dans l'un message d'avant. Je veux que d'un seul clique que tout se fasse, avec le bouton que j'ai créé dans le dossier. (Sinon je créerai un autre bouton dans ma feuille "modele".)

En passant, j'ai un Mac. C'est peut-être une information importante.

Encore merci. Je ne reviens pas de la vitesse que vous répondez. C'est tellement gentil.

Les prochaines fois je vais toujours joindre un fichier. Je ne niaiserai plus avec ça. Désolé pour tout.

Je vais prendre de l'expérience c'est certains, car je tripe au bout avec Excel. Je me suis découvert une vrai passion.

15exemple.xlsm (199.37 Ko)

Bonjour

Regardes si cela convient

Bonsoir Banzai64,

Tout est numéro un. Je suis tellement contente.

Tu est vraiment bon dans ce que tu fais. En plus, tu en fais profiter d'autre.

C'est très généreux de ta part.

Un gros merci.


Je voudrais remercier Lean pour tout le temps que tu as pris pour m'aider.

C'était trés gentil ta part.

Merci

Rechercher des sujets similaires à "macro permet texte etendre colonnes suivantes"